Ownerdraw buttons should erase themselves in WM_ERASEBKGND.
[wine.git] / dlls / wineps / bitblt.c
blob1c1d87f604c3024b94313df6d87b5448ee774f7b
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "psdrv.h"
22 #include "wine/debug.h"
23 #include "winbase.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(psdrv);
28 /***********************************************************************
30 * PSDRV_PatBlt
32 BOOL PSDRV_PatBlt(PSDRV_PDEVICE *physDev, INT x, INT y, INT width, INT height, DWORD dwRop)
34 POINT pt[2];
36 pt[0].x = x;
37 pt[0].y = y;
38 pt[1].x = x + width;
39 pt[1].y = y + height;
40 LPtoDP( physDev->hdc, pt, 2 );
42 switch(dwRop) {
43 case PATCOPY:
44 PSDRV_SetClip(physDev);
45 PSDRV_WriteGSave(physDev);
46 PSDRV_WriteRectangle(physDev, pt[0].x, pt[0].y, pt[1].x - pt[0].x, pt[1].y - pt[0].y );
47 PSDRV_Brush(physDev, FALSE);
48 PSDRV_WriteGRestore(physDev);
49 PSDRV_ResetClip(physDev);
50 return TRUE;
52 case BLACKNESS:
53 case WHITENESS:
55 PSCOLOR pscol;
57 PSDRV_SetClip(physDev);
58 PSDRV_WriteGSave(physDev);
59 PSDRV_WriteRectangle(physDev, pt[0].x, pt[0].y, pt[1].x - pt[0].x, pt[1].y - pt[0].y );
60 PSDRV_CreateColor( physDev, &pscol, (dwRop == BLACKNESS) ?
61 RGB(0,0,0) : RGB(0xff,0xff,0xff) );
62 PSDRV_WriteSetColor(physDev, &pscol);
63 PSDRV_WriteFill(physDev);
64 PSDRV_WriteGRestore(physDev);
65 PSDRV_ResetClip(physDev);
66 return TRUE;
68 default:
69 FIXME("Unsupported rop %ld\n", dwRop);
70 return FALSE;