FreeRDP
prim_copy.c File Reference
#include <freerdp/config.h>
#include <string.h>
#include <freerdp/types.h>
#include <freerdp/primitives.h>
#include <freerdp/log.h>
#include "prim_internal.h"
#include "prim_copy.h"
#include "../codec/color.h"
#include <freerdp/codec/color.h>

Macros

#define TAG   FREERDP_TAG("primitives.copy")
 

Functions

static BOOL memory_regions_overlap_1d (const BYTE *p1, const BYTE *p2, size_t bytes)
 
static BOOL memory_regions_overlap_2d (const BYTE *p1, int p1Step, int p1Size, const BYTE *p2, int p2Step, int p2Size, int width, int height)
 
static pstatus_t general_copy_8u (const BYTE *pSrc, BYTE *pDst, INT32 len)
 
static pstatus_t general_copy_8u_AC4r (const BYTE *pSrc, INT32 srcStep, BYTE *pDst, INT32 dstStep, INT32 width, INT32 height)
 
static INLINE pstatus_t generic_image_copy_bgr24_bgrx32 (BYTE *WINPR_RESTRICT pDstData, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset)
 
static INLINE pstatus_t generic_image_copy_bgrx32_bgrx32 (BYTE *WINPR_RESTRICT pDstData, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset)
 
pstatus_t generic_image_copy_no_overlap_convert (BYTE *WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette *WINPR_RESTRICT palette, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset)
 
pstatus_t generic_image_copy_no_overlap_memcpy (BYTE *WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette *WINPR_RESTRICT palette, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset, UINT32 flags)
 
static INLINE pstatus_t generic_image_copy_no_overlap_dst_alpha (BYTE *WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette *WINPR_RESTRICT palette, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset)
 
static INLINE pstatus_t generic_image_copy_no_overlap_no_alpha (BYTE *WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette *WINPR_RESTRICT palette, SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset, UINT32 flags)
 
static pstatus_t generic_image_copy_no_overlap (BYTE *WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight, const BYTE *WINPR_RESTRICT pSrcData, DWORD SrcFormat, UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette *WINPR_RESTRICT palette, UINT32 flags)
 
void primitives_init_copy (primitives_t *prims)
 
void primitives_init_copy_opt (primitives_t *prims)
 

Variables

static primitives_tgeneric = NULL
 

Macro Definition Documentation

◆ TAG

#define TAG   FREERDP_TAG("primitives.copy")

Function Documentation

◆ general_copy_8u()

static pstatus_t general_copy_8u ( const BYTE pSrc,
BYTE pDst,
INT32  len 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ general_copy_8u_AC4r()

static pstatus_t general_copy_8u_AC4r ( const BYTE pSrc,
INT32  srcStep,
BYTE pDst,
INT32  dstStep,
INT32  width,
INT32  height 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ generic_image_copy_bgr24_bgrx32()

static INLINE pstatus_t generic_image_copy_bgr24_bgrx32 ( BYTE *WINPR_RESTRICT  pDstData,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset 
)
static
Here is the caller graph for this function:

◆ generic_image_copy_bgrx32_bgrx32()

static INLINE pstatus_t generic_image_copy_bgrx32_bgrx32 ( BYTE *WINPR_RESTRICT  pDstData,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset 
)
static
Here is the caller graph for this function:

◆ generic_image_copy_no_overlap()

static pstatus_t generic_image_copy_no_overlap ( BYTE *WINPR_RESTRICT  pDstData,
DWORD  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
DWORD  SrcFormat,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
const gdiPalette *WINPR_RESTRICT  palette,
UINT32  flags 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ generic_image_copy_no_overlap_convert()

pstatus_t generic_image_copy_no_overlap_convert ( BYTE *WINPR_RESTRICT  pDstData,
DWORD  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
DWORD  SrcFormat,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
const gdiPalette *WINPR_RESTRICT  palette,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset 
)

FreeRDP: A Remote Desktop Protocol Implementation Primitives copy

Copyright 2024 Armin Novak anova.nosp@m.k@th.nosp@m.incas.nosp@m.t.co.nosp@m.m Copyright 2024 Thincast Technologies GmbH

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generic_image_copy_no_overlap_dst_alpha()

static INLINE pstatus_t generic_image_copy_no_overlap_dst_alpha ( BYTE *WINPR_RESTRICT  pDstData,
DWORD  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
DWORD  SrcFormat,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
const gdiPalette *WINPR_RESTRICT  palette,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ generic_image_copy_no_overlap_memcpy()

pstatus_t generic_image_copy_no_overlap_memcpy ( BYTE *WINPR_RESTRICT  pDstData,
DWORD  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
DWORD  SrcFormat,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
const gdiPalette *WINPR_RESTRICT  palette,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset,
UINT32  flags 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ generic_image_copy_no_overlap_no_alpha()

static INLINE pstatus_t generic_image_copy_no_overlap_no_alpha ( BYTE *WINPR_RESTRICT  pDstData,
DWORD  DstFormat,
UINT32  nDstStep,
UINT32  nXDst,
UINT32  nYDst,
UINT32  nWidth,
UINT32  nHeight,
const BYTE *WINPR_RESTRICT  pSrcData,
DWORD  SrcFormat,
UINT32  nSrcStep,
UINT32  nXSrc,
UINT32  nYSrc,
const gdiPalette *WINPR_RESTRICT  palette,
SSIZE_T  srcVMultiplier,
SSIZE_T  srcVOffset,
SSIZE_T  dstVMultiplier,
SSIZE_T  dstVOffset,
UINT32  flags 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ memory_regions_overlap_1d()

static BOOL memory_regions_overlap_1d ( const BYTE p1,
const BYTE p2,
size_t  bytes 
)
static
Here is the caller graph for this function:

◆ memory_regions_overlap_2d()

static BOOL memory_regions_overlap_2d ( const BYTE p1,
int  p1Step,
int  p1Size,
const BYTE p2,
int  p2Step,
int  p2Size,
int  width,
int  height 
)
static
Here is the caller graph for this function:

◆ primitives_init_copy()

void primitives_init_copy ( primitives_t prims)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ primitives_init_copy_opt()

void primitives_init_copy_opt ( primitives_t prims)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ generic

primitives_t* generic = NULL
static