Alexandre Julliard : wineps: Get rid of the StretchDIBits entry point.

Alexandre Julliard julliard at winehq.org
Tue Oct 18 12:56:26 CDT 2011


Module: wine
Branch: master
Commit: 2dfa00230d43384cb3543719bfddb156ab0a1760
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2dfa00230d43384cb3543719bfddb156ab0a1760

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Oct 17 20:12:59 2011 +0200

wineps: Get rid of the StretchDIBits entry point.

---

 dlls/wineps.drv/bitmap.c |  158 +---------------------------------------------
 dlls/wineps.drv/init.c   |    2 +-
 dlls/wineps.drv/psdrv.h  |    4 -
 3 files changed, 3 insertions(+), 161 deletions(-)

diff --git a/dlls/wineps.drv/bitmap.c b/dlls/wineps.drv/bitmap.c
index fd153ba..ef6e482 100644
--- a/dlls/wineps.drv/bitmap.c
+++ b/dlls/wineps.drv/bitmap.c
@@ -38,7 +38,7 @@ static inline int get_dib_width_bytes( int width, int depth )
 /***************************************************************************
  *                PSDRV_WriteImageHeader
  *
- * Helper for PSDRV_StretchDIBits
+ * Helper for PSDRV_PutImage
  *
  * BUGS
  *  Uses level 2 PostScript
@@ -79,7 +79,7 @@ static BOOL PSDRV_WriteImageHeader(PHYSDEV dev, const BITMAPINFO *info, INT xDst
 /***************************************************************************
  *                PSDRV_WriteImageMaskHeader
  *
- * Helper for PSDRV_StretchDIBits
+ * Helper for PSDRV_PutImage
  *
  * We use the imagemask operator for 1bpp bitmaps since the output
  * takes much less time for the printer to render.
@@ -276,157 +276,3 @@ update_format:
     info->bmiHeader.biCompression = BI_RGB;
     return ERROR_BAD_FORMAT;
 }
-
-/***************************************************************************
- *
- *	PSDRV_StretchDIBits
- *
- * BUGS
- *  Doesn't work correctly if xSrc isn't byte aligned - this affects 1 and 4
- *  bit depths.
- *  Compression not implemented.
- */
-INT PSDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst,
-                         INT heightDst, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc, const void *bits,
-                         BITMAPINFO *info, UINT wUsage, DWORD dwRop )
-{
-    INT stride;
-    INT line;
-    POINT pt[2];
-    const BYTE *src_ptr;
-    BYTE *dst_ptr, *bitmap;
-    DWORD bitmap_size;
-
-    TRACE("%p (%d,%d %dx%d) -> (%d,%d %dx%d)\n", dev->hdc,
-	  xSrc, ySrc, widthSrc, heightSrc, xDst, yDst, widthDst, heightDst);
-
-    stride = get_dib_width_bytes( info->bmiHeader.biWidth, info->bmiHeader.biBitCount );
-
-    TRACE("full size=%dx%d bpp=%d compression=%d rop=%08x\n", info->bmiHeader.biWidth,
-	  info->bmiHeader.biHeight, info->bmiHeader.biBitCount, info->bmiHeader.biCompression, dwRop);
-
-
-    if(info->bmiHeader.biCompression != BI_RGB) {
-        FIXME("Compression not supported\n");
-	return FALSE;
-    }
-
-    pt[0].x = xDst;
-    pt[0].y = yDst;
-    pt[1].x = xDst + widthDst;
-    pt[1].y = yDst + heightDst;
-    LPtoDP( dev->hdc, pt, 2 );
-    xDst = pt[0].x;
-    yDst = pt[0].y;
-    widthDst = pt[1].x - pt[0].x;
-    heightDst = pt[1].y - pt[0].y;
-
-    switch (info->bmiHeader.biBitCount) {
-
-    case 1:
-	src_ptr = bits;
-	src_ptr += (ySrc * stride);
-	if(xSrc & 7)
-	    FIXME("This won't work...\n");
-        bitmap_size = heightSrc * ((widthSrc + 7) / 8);
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += ((widthSrc + 7) / 8))
-            memcpy(dst_ptr, src_ptr + xSrc / 8, (widthSrc + 7) / 8);
-	break;
-
-    case 4:
-	src_ptr = bits;
-	src_ptr += (ySrc * stride);
-	if(xSrc & 1)
-	    FIXME("This won't work...\n");
-        bitmap_size = heightSrc * ((widthSrc + 1) / 2);
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += ((widthSrc + 1) / 2))
-	    memcpy(dst_ptr, src_ptr + xSrc/2, (widthSrc+1)/2);
-	break;
-
-    case 8:
-	src_ptr = bits;
-	src_ptr += (ySrc * stride);
-        bitmap_size = heightSrc * widthSrc;
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        for(line = 0; line < heightSrc; line++, src_ptr += stride, dst_ptr += widthSrc)
-	    memcpy(dst_ptr, src_ptr + xSrc, widthSrc);
-	break;
-
-    case 16:
-        src_ptr = bits;
-        src_ptr += (ySrc * stride);
-        bitmap_size = heightSrc * widthSrc * 3;
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        
-        for(line = 0; line < heightSrc; line++, src_ptr += stride) {
-            const WORD *words = (const WORD *)src_ptr + xSrc;
-            int i;
-            for(i = 0; i < widthSrc; i++) {
-                BYTE r, g, b;
-
-                /* We want 0x0 -- 0x1f to map to 0x0 -- 0xff */
-                r = words[i] >> 10 & 0x1f;
-                r = r << 3 | r >> 2;
-                g = words[i] >> 5 & 0x1f;
-                g = g << 3 | g >> 2;
-                b = words[i] & 0x1f;
-                b = b << 3 | b >> 2;
-                dst_ptr[0] = r;
-                dst_ptr[1] = g;
-                dst_ptr[2] = b;
-                dst_ptr += 3;
-            }
-        }
-	break;
-
-    case 24:
-        src_ptr = bits;
-        src_ptr += (ySrc * stride);
-        bitmap_size = heightSrc * widthSrc * 3;
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        for(line = 0; line < heightSrc; line++, src_ptr += stride) {
-            const BYTE *byte = src_ptr + xSrc * 3;
-            int i;
-            for(i = 0; i < widthSrc; i++) {
-                dst_ptr[0] = byte[i * 3 + 2];
-                dst_ptr[1] = byte[i * 3 + 1];
-                dst_ptr[2] = byte[i * 3];
-                dst_ptr += 3;
-            }
-        }
-	break;
-
-    case 32:
-        src_ptr = bits;
-        src_ptr += (ySrc * stride);
-        bitmap_size = heightSrc * widthSrc * 3;
-        dst_ptr = bitmap = HeapAlloc(GetProcessHeap(), 0, bitmap_size);
-        for(line = 0; line < heightSrc; line++, src_ptr += stride) {
-            const BYTE *byte = src_ptr + xSrc * 4;
-            int i;
-            for(i = 0; i < widthSrc; i++) {
-                dst_ptr[0] = byte[i * 4 + 2];
-                dst_ptr[1] = byte[i * 4 + 1];
-                dst_ptr[2] = byte[i * 4];
-                dst_ptr += 3;
-            }
-        }
-	break;
-
-    default:
-        FIXME("Unsupported depth\n");
-	return FALSE;
-
-    }
-
-    PSDRV_SetClip(dev);
-    PSDRV_WriteGSave(dev);
-    PSDRV_WriteImageBits( dev, info, xDst, yDst, widthDst, heightDst,
-                          widthSrc, heightSrc, bitmap, bitmap_size );
-    HeapFree(GetProcessHeap(), 0, bitmap);
-    PSDRV_WriteGRestore(dev);
-    PSDRV_ResetClip(dev);
-    return abs(heightSrc);
-}
diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c
index 3a6f89f..4532097 100644
--- a/dlls/wineps.drv/init.c
+++ b/dlls/wineps.drv/init.c
@@ -931,7 +931,7 @@ static const struct gdi_dc_funcs psdrv_funcs =
     PSDRV_StartDoc,                     /* pStartDoc */
     PSDRV_StartPage,                    /* pStartPage */
     NULL,                               /* pStretchBlt */
-    PSDRV_StretchDIBits,                /* pStretchDIBits */
+    NULL,                               /* pStretchDIBits */
     NULL,                               /* pStrokeAndFillPath */
     NULL,                               /* pStrokePath */
     NULL,                               /* pSwapBuffers */
diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h
index 8047942..3f48991 100644
--- a/dlls/wineps.drv/psdrv.h
+++ b/dlls/wineps.drv/psdrv.h
@@ -459,10 +459,6 @@ extern COLORREF PSDRV_SetDCPenColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDD
 extern COLORREF PSDRV_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN;
 extern COLORREF PSDRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
 extern INT PSDRV_StartDoc( PHYSDEV dev, const DOCINFOW *doc ) DECLSPEC_HIDDEN;
-extern INT PSDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst,
-                                INT heightDst, INT xSrc, INT ySrc,
-                                INT widthSrc, INT heightSrc, const void *bits,
-                                BITMAPINFO *info, UINT wUsage, DWORD dwRop ) DECLSPEC_HIDDEN;
 
 extern void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2,
 			 PRINTERINFO *pi) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list