[ros-diffs] [greatlrd] 15750: bitblt srcpy optimze it can be more optimze

greatlrd at svn.reactos.com greatlrd at svn.reactos.com
Fri Jun 3 18:58:05 CEST 2005


bitblt srcpy optimze it can be more optimze
Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c
  _____  

Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c
--- trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 16:56:27 UTC
(rev 15749)
+++ trunk/reactos/subsys/win32k/dib/dib32bpp.c	2005-06-03 16:57:55 UTC
(rev 15750)
@@ -308,6 +308,7 @@

 
    switch (BltInfo->Rop4)
 	{
+
 		 case  ROP4_BLACKNESS:  
 			 //return(0x00000000);	
 
@@ -376,17 +377,39 @@
 #endif
 		 return TRUE;
 		 break;
+
 		case  ROP4_SRCCOPY:     
 			 // return(Source);
 			  switch (BltInfo->SourceSurface->iBitmapFormat)
 			  {			   
 			    case BMF_1BPP:
-				break;
-				case BMF_4BPP:
-				break;
+				case BMF_4BPP:
case BMF_16BPP:
-				break;
 				case BMF_24BPP:
+				{
+					PBYTE byteaddr =
BltInfo->SourceSurface->pvScan0 + BltInfo->DestRect.top *
BltInfo->SourceSurface->lDelta;
+                    PDWORD addr = (PDWORD)byteaddr +
BltInfo->DestRect.left;
+					LONG  xlDelta =
BltInfo->SourceSurface->lDelta - (BltInfo->DestRect.right -
BltInfo->DestRect.left) ;
+
+					 SourceY =
BltInfo->SourcePoint.y;					 
+
+					 for
(DestY=BltInfo->DestRect.top; DestY<BltInfo->DestRect.bottom; DestY++)
+			         {  
+
+				      if (SourceY >
BltInfo->SourceSurface->sizlBitmap.cy) break;
+                 	  
+					  SourceX =
BltInfo->SourcePoint.x;
+
+				      for (DestX=BltInfo->DestRect.left;
DestX<BltInfo->DestRect.right; DestX++, SourceX++, addr++)
+					  {
+						   if (SourceX >
BltInfo->SourceSurface->sizlBitmap.cx) break;
+
+								*addr =
DIB_GetSource(BltInfo->SourceSurface,  SourceX, 
+
SourceY, BltInfo->XlateSourceToDest);
+							}
+					  } 
+					 addr+=xlDelta;
+				}
 				break;
 				case BMF_32BPP:
 				{
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050603/c6473406/attachment.html


More information about the Ros-diffs mailing list