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