windowscodecs: Fix ICO palette size calculation.
[wine/multimedia.git] / dlls / wineps.drv / bitblt.c
blobd3d8ee3da7385736111067ce0e205df6dbdb5180
1 /*
2 * PostScript driver BitBlt, StretchBlt and PatBlt
4 * Copyright 1999 Huw D M Davies
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include "psdrv.h"
22 #include "wine/debug.h"
24 WINE_DEFAULT_DEBUG_CHANNEL(psdrv);
27 /***********************************************************************
29 * PSDRV_PatBlt
31 BOOL CDECL PSDRV_PatBlt(PSDRV_PDEVICE *physDev, INT x, INT y, INT width, INT height, DWORD dwRop)
33 POINT pt[2];
35 pt[0].x = x;
36 pt[0].y = y;
37 pt[1].x = x + width;
38 pt[1].y = y + height;
39 LPtoDP( physDev->hdc, pt, 2 );
41 switch(dwRop) {
42 case PATCOPY:
43 PSDRV_SetClip(physDev);
44 PSDRV_WriteGSave(physDev);
45 PSDRV_WriteRectangle(physDev, pt[0].x, pt[0].y, pt[1].x - pt[0].x, pt[1].y - pt[0].y );
46 PSDRV_Brush(physDev, FALSE);
47 PSDRV_WriteGRestore(physDev);
48 PSDRV_ResetClip(physDev);
49 return TRUE;
51 case BLACKNESS:
52 case WHITENESS:
54 PSCOLOR pscol;
56 PSDRV_SetClip(physDev);
57 PSDRV_WriteGSave(physDev);
58 PSDRV_WriteRectangle(physDev, pt[0].x, pt[0].y, pt[1].x - pt[0].x, pt[1].y - pt[0].y );
59 PSDRV_CreateColor( physDev, &pscol, (dwRop == BLACKNESS) ?
60 RGB(0,0,0) : RGB(0xff,0xff,0xff) );
61 PSDRV_WriteSetColor(physDev, &pscol);
62 PSDRV_WriteFill(physDev);
63 PSDRV_WriteGRestore(physDev);
64 PSDRV_ResetClip(physDev);
65 return TRUE;
67 default:
68 FIXME("Unsupported rop %d\n", dwRop);
69 return FALSE;