ReactOS  0.4.15-dev-1201-gb2cf5a4
BitBlt_SRCCOPY.c
Go to the documentation of this file.
1 
2 #include "DibLib.h"
3 
4 VOID
7 {
8  ULONG cLines, cjWidth;
9  PBYTE pjDestBase = pBltData->siDst.pjBase;
10  PBYTE pjSrcBase = pBltData->siSrc.pjBase;
11 
12  /* Calculate the width in bytes */
13  cjWidth = pBltData->ulWidth * pBltData->siDst.jBpp / 8;
14 
15  /* Loop all lines */
16  cLines = pBltData->ulHeight;
17  while (cLines--)
18  {
19  memcpy(pjDestBase, pjSrcBase, cjWidth);
20  pjDestBase += pBltData->siDst.cjAdvanceY;
21  pjSrcBase += pBltData->siSrc.cjAdvanceY;
22  }
23 }
24 
25 #define Dib_BitBlt_SRCCOPY_S8_D8_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
26 #define Dib_BitBlt_SRCCOPY_S16_D16_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
27 #define Dib_BitBlt_SRCCOPY_S24_D24_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
28 
29 /* special movsd optimization on x86 */
30 #if defined(_M_IX86) || defined(_M_AMD64)
31 VOID
34 {
35  ULONG cLines, cRows = pBltData->ulWidth;
36  PBYTE pjDestBase = pBltData->siDst.pjBase;
37  PBYTE pjSrcBase = pBltData->siSrc.pjBase;
38 
39  /* Loop all lines */
40  cLines = pBltData->ulHeight;
41  while (cLines--)
42  {
43  __movsd((PULONG)pjDestBase, (PULONG)pjSrcBase, cRows);
44  pjDestBase += pBltData->siDst.cjAdvanceY;
45  pjSrcBase += pBltData->siSrc.cjAdvanceY;
46  }
47 }
48 #define Dib_BitBlt_SRCCOPY_S32_D32_EqSurf_manual 1
49 #else
50 #define Dib_BitBlt_SRCCOPY_S32_D32_EqSurf Dib_BitBlt_SRCCOPY_EqSurf
51 #endif
52 
53 /* This definition will be checked against in DibLib_BitBlt.h
54  for all "redirected" functions */
55 #define Dib_BitBlt_SRCCOPY_EqSurf_manual 1
56 
57 #define __USES_SOURCE 1
58 #define __USES_PATTERN 0
59 #define __USES_DEST 0
60 #define __USES_MASK 0
61 
62 #define __FUNCTIONNAME BitBlt_SRCCOPY
63 
64 #define _DibDoRop(pBltData, M, D, S, P) ROP_SRCCOPY(D,S,P)
65 
66 #include "DibLib_AllSrcBPP.h"
67 
68 VOID
71 {
72  gapfnBitBlt_SRCCOPY[pBltData->siDst.iFormat][pBltData->siSrc.iFormat](pBltData);
73 }
74 
PBYTE pjBase
SURFINFO siDst
VOID FASTCALL Dib_BitBlt_SRCCOPY(PBLTDATA pBltData)
#define FASTCALL
Definition: nt_native.h:50
ULONG ulWidth
ULONG ulHeight
ULONG iFormat
VOID FASTCALL Dib_BitBlt_SRCCOPY_EqSurf(PBLTDATA pBltData)
Definition: BitBlt_SRCCOPY.c:6
#define Dib_BitBlt_SRCCOPY_S32_D32_EqSurf
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
PFN_DIBFUNCTION gapfnBitBlt_SRCCOPY[7][7]
unsigned int * PULONG
Definition: retypes.h:1
PPC_QUAL void __movsd(unsigned long *Destination, const unsigned long *Source, unsigned long Count)
Definition: intrin_ppc.h:333
unsigned int ULONG
Definition: retypes.h:1
SURFINFO siSrc
BYTE * PBYTE
Definition: pedump.c:66