update for HEAD-2003050101
[reactos.git] / drivers / dd / vga / display / objects / copybits.c
diff --git a/drivers/dd/vga/display/objects/copybits.c b/drivers/dd/vga/display/objects/copybits.c
new file mode 100644 (file)
index 0000000..242a9ef
--- /dev/null
@@ -0,0 +1,39 @@
+#include "../vgaddi.h"
+#include "../vgavideo/vgavideo.h"
+
+#define DBG
+#include <debug.h>
+
+BOOL STDCALL
+DrvCopyBits(OUT PSURFOBJ  DestObj,  
+            IN  PSURFOBJ  SourceObj,  
+            IN  PCLIPOBJ  ClipObj,  
+            IN  PXLATEOBJ XLateObj,  
+            IN  PRECTL    DestRectL,  
+            IN  PPOINTL   SrcPointL)
+{
+  BOOL Done = FALSE;
+
+  if (STYPE_BITMAP == DestObj->iType && BMF_4BPP == DestObj->iBitmapFormat &&
+      STYPE_DEVICE == SourceObj->iType)
+    {
+    /* Screen to 4 BPP DIB */
+    DIB_BltFromVGA(SrcPointL->x, SrcPointL->y,
+                   DestRectL->right - DestRectL->left,
+                   DestRectL->bottom - DestRectL->top,
+                   DestObj->pvScan0, DestObj->lDelta);
+    Done = TRUE;
+    }
+  else if (STYPE_DEVICE == DestObj->iType &&
+           STYPE_BITMAP == SourceObj->iType && BMF_4BPP == SourceObj->iBitmapFormat)
+    {
+    /* 4 BPP DIB to Screen */
+    DIB_BltToVGA(DestRectL->left, DestRectL->top,
+                 DestRectL->right - DestRectL->left,
+                 DestRectL->bottom - DestRectL->top,
+                 SourceObj->pvScan0, SourceObj->lDelta);
+    Done = TRUE;
+    }
+
+  return Done;
+}