branch update for HEAD-2003091401
[reactos.git] / subsys / win32k / eng / copybits.c
index 740faed..5b113d5 100644 (file)
@@ -1,4 +1,23 @@
 /*
+ *  ReactOS W32 Subsystem
+ *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id$
+ *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
  * PURPOSE:          GDI EngCopyBits Function
@@ -9,6 +28,7 @@
  */
 
 #include <ddk/winddi.h>
+#include <ddk/ntddmou.h>
 #include "objects.h"
 #include "clip.h"
 #include "../dib/dib.h"
@@ -16,6 +36,9 @@
 #include <include/object.h>
 #include <include/eng.h>
 
+/*
+ * @implemented
+ */
 BOOL STDCALL
 EngCopyBits(SURFOBJ *Dest,
            SURFOBJ *Source,
@@ -96,17 +119,13 @@ EngCopyBits(SURFOBJ *Dest,
     clippingType = Clip->iDComplexity;
   }
 
-  // We only handle XO_TABLE translations at the momement
-  if ((ColorTranslation == NULL) || (ColorTranslation->flXlate & XO_TRIVIAL) ||
-      (ColorTranslation->flXlate & XO_TABLE))
-  {
-    SourceGDI = (PSURFGDI)AccessInternalObjectFromUserObject(Source);
-    DestGDI   = (PSURFGDI)AccessInternalObjectFromUserObject(Dest);
+  SourceGDI = (PSURFGDI)AccessInternalObjectFromUserObject(Source);
+  DestGDI   = (PSURFGDI)AccessInternalObjectFromUserObject(Dest);
 
-    switch(clippingType)
+  switch(clippingType)
     {
       case DC_TRIVIAL:
-        DestGDI->DIB_BitBlt(Dest, Source, DestGDI, SourceGDI, DestRect, SourcePoint, ColorTranslation);
+        DestGDI->DIB_BitBlt(Dest, Source, DestGDI, SourceGDI, DestRect, SourcePoint, NULL, NULL, ColorTranslation, SRCCOPY);
 
         MouseSafetyOnDrawEnd(Source, SourceGDI);
         MouseSafetyOnDrawEnd(Dest, DestGDI);
@@ -120,7 +139,7 @@ EngCopyBits(SURFOBJ *Dest,
         ptlTmp.x = SourcePoint->x + rclTmp.left - DestRect->left;
         ptlTmp.y = SourcePoint->y + rclTmp.top  - DestRect->top;
 
-        DestGDI->DIB_BitBlt(Dest, Source, DestGDI, SourceGDI, &rclTmp, &ptlTmp, ColorTranslation);
+        DestGDI->DIB_BitBlt(Dest, Source, DestGDI, SourceGDI, &rclTmp, &ptlTmp, NULL, NULL, ColorTranslation, SRCCOPY);
 
         MouseSafetyOnDrawEnd(Source, SourceGDI);
         MouseSafetyOnDrawEnd(Dest, DestGDI);
@@ -146,7 +165,7 @@ EngCopyBits(SURFOBJ *Dest,
               ptlTmp.y = SourcePoint->y + prcl->top - DestRect->top;
 
               if(!DestGDI->DIB_BitBlt(Dest, Source, DestGDI, SourceGDI,
-                                      prcl, &ptlTmp, ColorTranslation)) return FALSE;
+                                      prcl, &ptlTmp, NULL, NULL, ColorTranslation, SRCCOPY)) return FALSE;
 
               prcl++;
 
@@ -155,15 +174,17 @@ EngCopyBits(SURFOBJ *Dest,
 
           } while(EnumMore);
 
-          MouseSafetyOnDrawEnd(Source, SourceGDI);\r
+          MouseSafetyOnDrawEnd(Source, SourceGDI);
+
           MouseSafetyOnDrawEnd(Dest, DestGDI);
 
           return(TRUE);
     }
-  }
 
   MouseSafetyOnDrawEnd(Source, SourceGDI);
   MouseSafetyOnDrawEnd(Dest, DestGDI);
 
   return FALSE;
 }
+
+/* EOF */