~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/gdi32/enhmfdrv/dc.c

Version: ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~ [ wine-1.0-rc5 ] ~ [ wine-1.0-rc4 ] ~ [ wine-1.0-rc3 ] ~ [ wine-1.0-rc2 ] ~ [ wine-1.0-rc1 ] ~ [ wine-0.9.61 ] ~ [ wine-0.9.60 ] ~ [ wine-0.9.59 ] ~ [ wine-0.9.58 ] ~ [ wine-0.9.57 ] ~ [ wine-0.9.56 ] ~ [ wine-0.9.55 ] ~ [ wine-0.9.54 ] ~ [ wine-0.9.53 ] ~ [ wine-0.9.52 ] ~ [ wine-0.9.51 ] ~ [ wine-0.9.50 ] ~ [ wine-0.9.49 ] ~ [ wine-0.9.48 ] ~ [ wine-0.9.47 ] ~ [ wine-0.9.46 ] ~ [ wine-0.9.45 ] ~ [ wine-0.9.44 ] ~ [ wine-0.9.43 ] ~ [ wine-0.9.42 ] ~ [ wine-0.9.41 ] ~ [ wine-0.9.40 ] ~ [ wine-0.9.39 ] ~ [ wine-0.9.38 ] ~ [ wine-0.9.37 ] ~ [ wine-0.9.36 ] ~ [ wine-0.9.35 ] ~ [ wine-0.9.34 ] ~ [ wine-0.9.33 ] ~ [ wine-0.9.32 ] ~ [ wine-0.9.31 ] ~ [ wine-0.9.30 ] ~ [ wine-0.9.29 ] ~ [ wine-0.9.28 ] ~ [ wine-0.9.27 ] ~ [ wine-0.9.26 ] ~ [ wine-0.9.25 ] ~ [ wine-0.9.24 ] ~ [ wine-0.9.23 ] ~ [ wine-0.9.22 ] ~ [ wine-0.9.21 ] ~ [ wine-0.9.20 ] ~ [ wine-0.9.19 ] ~ [ wine-0.9.18 ] ~ [ wine-0.9.17 ] ~ [ wine-0.9.16 ] ~ [ wine-0.9.15 ] ~ [ wine-0.9.14 ] ~ [ wine-0.9.13 ] ~ [ wine-0.9.12 ] ~ [ wine-0.9.11 ] ~ [ wine-0.9.10 ] ~ [ wine-0.9.9 ] ~ [ wine-0.9.8 ] ~ [ wine-0.9.7 ] ~ [ wine-0.9.6 ] ~ [ wine-0.9.5 ] ~ [ wine-0.9.4 ] ~ [ wine-0.9.3 ] ~ [ wine-0.9.2 ] ~ [ wine-0.9.1 ] ~ [ wine-0.9 ] ~ [ wine20050930 ] ~ [ wine20050830 ] ~ [ wine20050725 ] ~ [ wine20050628 ] ~ [ wine20050524 ] ~ [ wine20050419 ] ~ [ wine20050310 ] ~ [ wine20050211 ] ~ [ wine20050111 ] ~ [ wine20041201 ] ~ [ wine20041019 ] ~ [ wine20040914 ] ~ [ wine20040813 ] ~ [ wine20040716 ] ~ [ wine20040615 ] ~ [ wine20040505 ] ~ [ wine20040408 ] ~ [ wine20040309 ] ~ [ wine20040213 ] ~ [ wine20040121 ] ~ [ wine20031212 ] ~ [ wine20031118 ] ~ [ wine20031016 ] ~ [ wine20030911 ] ~ [ wine20030813 ] ~ [ wine20030709 ] ~ [ wine20030618 ] ~ [ wine20030508 ] ~ [ wine20030408 ] ~ [ wine20030318 ] ~ [ wine20030219 ] ~ [ wine20030115 ] ~ [ wine20021219 ] ~ [ wine20021125 ] ~ [ wine20021031 ] ~ [ wine20021007 ] ~ [ wine20020904 ] ~ [ wine20020804 ] ~ [ wine20020710 ] ~ [ wine20020605 ] ~ [ wine20020509 ] ~ [ wine20020411 ] ~ [ wine20020310 ] ~ [ wine20020228 ] ~ [ wine20011226 ] ~ [ wine20011108 ] ~ [ wine20011004 ] ~ [ wine20010824 ] ~ [ wine20010731 ] ~ [ wine20010629 ] ~ [ wine20010510 ] ~ [ wine20010418 ] ~ [ wine20010326 ] ~ [ wine20010305 ] ~ [ wine20010216 ] ~ [ wine20010112 ] ~ [ wine20001222 ] ~ [ wine20001202 ] ~ [ wine20001026 ] ~ [ wine20001002 ] ~ [ wine20000909 ] ~ [ wine20000821 ] ~ [ wine20000801 ] ~ [ wine20000716 ] ~ [ wine20000326 ] ~ [ wine20000227 ] ~ [ wine20000130 ] ~ [ wine20000109 ] ~

  1 /*
  2  * Enhanced MetaFile driver dc value functions
  3  *
  4  * Copyright 1999 Huw D M Davies
  5  *
  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.
 10  *
 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.
 15  *
 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
 19  */
 20 
 21 #include "enhmfdrv/enhmetafiledrv.h"
 22 #include "wine/debug.h"
 23 
 24 WINE_DEFAULT_DEBUG_CHANNEL(enhmetafile);
 25 
 26 INT EMFDRV_SaveDC( PHYSDEV dev )
 27 {
 28     EMRSAVEDC emr;
 29     emr.emr.iType = EMR_SAVEDC;
 30     emr.emr.nSize = sizeof(emr);
 31     return EMFDRV_WriteRecord( dev, &emr.emr );
 32 }
 33 
 34 BOOL EMFDRV_RestoreDC( PHYSDEV dev, INT level )
 35 {
 36     EMFDRV_PDEVICE* physDev = (EMFDRV_PDEVICE*)dev;
 37     DC *dc = get_dc_ptr( physDev->hdc );
 38     EMRRESTOREDC emr;
 39 
 40     emr.emr.iType = EMR_RESTOREDC;
 41     emr.emr.nSize = sizeof(emr);
 42 
 43     if (level < 0)
 44         emr.iRelative = level;
 45     else
 46         emr.iRelative = level - dc->saveLevel - 1;
 47 
 48     EMFDRV_WriteRecord( dev, &emr.emr );
 49 
 50     release_dc_ptr( dc );
 51     return TRUE;
 52 }
 53 
 54 UINT EMFDRV_SetTextAlign( PHYSDEV dev, UINT align )
 55 {
 56     EMRSETTEXTALIGN emr;
 57     emr.emr.iType = EMR_SETTEXTALIGN;
 58     emr.emr.nSize = sizeof(emr);
 59     emr.iMode = align;
 60     return EMFDRV_WriteRecord( dev, &emr.emr );
 61 }
 62 
 63 BOOL EMFDRV_SetTextJustification(PHYSDEV dev, INT nBreakExtra, INT nBreakCount)
 64 {
 65     EMRSETTEXTJUSTIFICATION emr;
 66     emr.emr.iType = EMR_SETTEXTJUSTIFICATION;
 67     emr.emr.nSize = sizeof(emr);
 68     emr.nBreakExtra = nBreakExtra;
 69     emr.nBreakCount = nBreakCount;
 70     return EMFDRV_WriteRecord(dev, &emr.emr);
 71 }
 72 
 73 INT EMFDRV_SetBkMode( PHYSDEV dev, INT mode )
 74 {
 75     EMRSETBKMODE emr;
 76     emr.emr.iType = EMR_SETBKMODE;
 77     emr.emr.nSize = sizeof(emr);
 78     emr.iMode = mode;
 79     return EMFDRV_WriteRecord( dev, &emr.emr );
 80 }
 81 
 82 INT EMFDRV_SetROP2( PHYSDEV dev, INT rop )
 83 {
 84     EMRSETROP2 emr;
 85     emr.emr.iType = EMR_SETROP2;
 86     emr.emr.nSize = sizeof(emr);
 87     emr.iMode = rop;
 88     return EMFDRV_WriteRecord( dev, &emr.emr );
 89 }
 90 
 91 INT EMFDRV_SetPolyFillMode( PHYSDEV dev, INT mode )
 92 {
 93     EMRSETPOLYFILLMODE emr;
 94     emr.emr.iType = EMR_SETPOLYFILLMODE;
 95     emr.emr.nSize = sizeof(emr);
 96     emr.iMode = mode;
 97     return EMFDRV_WriteRecord( dev, &emr.emr );
 98 }
 99 
100 INT EMFDRV_SetStretchBltMode( PHYSDEV dev, INT mode )
101 {
102     EMRSETSTRETCHBLTMODE emr;
103     emr.emr.iType = EMR_SETSTRETCHBLTMODE;
104     emr.emr.nSize = sizeof(emr);
105     emr.iMode = mode;
106     return EMFDRV_WriteRecord( dev, &emr.emr );
107 }
108 
109 INT EMFDRV_ExcludeClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom )
110 {
111     EMREXCLUDECLIPRECT emr;
112     emr.emr.iType      = EMR_EXCLUDECLIPRECT;
113     emr.emr.nSize      = sizeof(emr);
114     emr.rclClip.left   = left;
115     emr.rclClip.top    = top;
116     emr.rclClip.right  = right;
117     emr.rclClip.bottom = bottom;
118     return EMFDRV_WriteRecord( dev, &emr.emr );
119 }
120 
121 INT EMFDRV_IntersectClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom)
122 {
123     EMRINTERSECTCLIPRECT emr;
124     emr.emr.iType      = EMR_INTERSECTCLIPRECT;
125     emr.emr.nSize      = sizeof(emr);
126     emr.rclClip.left   = left;
127     emr.rclClip.top    = top;
128     emr.rclClip.right  = right;
129     emr.rclClip.bottom = bottom;
130     return EMFDRV_WriteRecord( dev, &emr.emr );
131 }
132 
133 INT EMFDRV_OffsetClipRgn( PHYSDEV dev, INT x, INT y )
134 {
135     EMROFFSETCLIPRGN emr;
136     emr.emr.iType   = EMR_OFFSETCLIPRGN;
137     emr.emr.nSize   = sizeof(emr);
138     emr.ptlOffset.x = x;
139     emr.ptlOffset.y = y;
140     return EMFDRV_WriteRecord( dev, &emr.emr );
141 }
142 
143 INT EMFDRV_ExtSelectClipRgn( PHYSDEV dev, HRGN hrgn, INT mode )
144 {
145     EMREXTSELECTCLIPRGN *emr;
146     DWORD size, rgnsize;
147     BOOL ret;
148 
149     if (!hrgn)
150     {
151         if (mode != RGN_COPY) return ERROR;
152         rgnsize = 0;
153     }
154     else rgnsize = GetRegionData( hrgn, 0, NULL );
155 
156     size = rgnsize + offsetof(EMREXTSELECTCLIPRGN,RgnData);
157     emr = HeapAlloc( GetProcessHeap(), 0, size );
158     if (rgnsize) GetRegionData( hrgn, rgnsize, (RGNDATA *)&emr->RgnData );
159 
160     emr->emr.iType = EMR_EXTSELECTCLIPRGN;
161     emr->emr.nSize = size;
162     emr->cbRgnData = rgnsize;
163     emr->iMode     = mode;
164 
165     ret = EMFDRV_WriteRecord( dev, &emr->emr );
166     HeapFree( GetProcessHeap(), 0, emr );
167     return ret ? SIMPLEREGION : ERROR;
168 }
169 
170 DWORD EMFDRV_SetMapperFlags( PHYSDEV dev, DWORD flags )
171 {
172     EMRSETMAPPERFLAGS emr;
173 
174     emr.emr.iType = EMR_SETMAPPERFLAGS;
175     emr.emr.nSize = sizeof(emr);
176     emr.dwFlags   = flags;
177 
178     return EMFDRV_WriteRecord( dev, &emr.emr );
179 }
180 
181 BOOL EMFDRV_AbortPath( PHYSDEV dev )
182 {
183     EMRABORTPATH emr;
184 
185     emr.emr.iType = EMR_ABORTPATH;
186     emr.emr.nSize = sizeof(emr);
187 
188     return EMFDRV_WriteRecord( dev, &emr.emr );
189 }
190 
191 BOOL EMFDRV_BeginPath( PHYSDEV dev )
192 {
193     EMRBEGINPATH emr;
194 
195     emr.emr.iType = EMR_BEGINPATH;
196     emr.emr.nSize = sizeof(emr);
197 
198     return EMFDRV_WriteRecord( dev, &emr.emr );
199 }
200 
201 BOOL EMFDRV_CloseFigure( PHYSDEV dev )
202 {
203     EMRCLOSEFIGURE emr;
204 
205     emr.emr.iType = EMR_CLOSEFIGURE;
206     emr.emr.nSize = sizeof(emr);
207 
208     return EMFDRV_WriteRecord( dev, &emr.emr );
209 }
210 
211 BOOL EMFDRV_EndPath( PHYSDEV dev )
212 {
213     EMRENDPATH emr;
214 
215     emr.emr.iType = EMR_ENDPATH;
216     emr.emr.nSize = sizeof(emr);
217 
218     return EMFDRV_WriteRecord( dev, &emr.emr );
219 }
220 
221 BOOL EMFDRV_FillPath( PHYSDEV dev )
222 {
223     EMRFILLPATH emr;
224 
225     emr.emr.iType = EMR_FILLPATH;
226     emr.emr.nSize = sizeof(emr);
227     FIXME("Bounds\n");
228     emr.rclBounds.left = 0;
229     emr.rclBounds.top = 0;
230     emr.rclBounds.right = 0;
231     emr.rclBounds.bottom = 0;
232     return EMFDRV_WriteRecord( dev, &emr.emr );
233 }
234 
235 BOOL EMFDRV_FlattenPath( PHYSDEV dev )
236 {
237     EMRFLATTENPATH emr;
238 
239     emr.emr.iType = EMR_FLATTENPATH;
240     emr.emr.nSize = sizeof(emr);
241 
242     return EMFDRV_WriteRecord( dev, &emr.emr );
243 }
244 
245 BOOL EMFDRV_SelectClipPath( PHYSDEV dev, INT iMode )
246 {
247     EMRSELECTCLIPPATH emr;
248 
249     emr.emr.iType = EMR_SELECTCLIPPATH;
250     emr.emr.nSize = sizeof(emr);
251     emr.iMode = iMode;
252 
253     return EMFDRV_WriteRecord( dev, &emr.emr );
254 }
255 
256 BOOL EMFDRV_StrokeAndFillPath( PHYSDEV dev )
257 {
258     EMRSTROKEANDFILLPATH emr;
259 
260     emr.emr.iType = EMR_STROKEANDFILLPATH;
261     emr.emr.nSize = sizeof(emr);
262     FIXME("Bounds\n");
263     emr.rclBounds.left = 0;
264     emr.rclBounds.top = 0;
265     emr.rclBounds.right = 0;
266     emr.rclBounds.bottom = 0;
267     return EMFDRV_WriteRecord( dev, &emr.emr );
268 }
269 
270 BOOL EMFDRV_StrokePath( PHYSDEV dev )
271 {
272     EMRSTROKEPATH emr;
273 
274     emr.emr.iType = EMR_STROKEPATH;
275     emr.emr.nSize = sizeof(emr);
276     FIXME("Bounds\n");
277     emr.rclBounds.left = 0;
278     emr.rclBounds.top = 0;
279     emr.rclBounds.right = 0;
280     emr.rclBounds.bottom = 0;
281     return EMFDRV_WriteRecord( dev, &emr.emr );
282 }
283 
284 BOOL EMFDRV_WidenPath( PHYSDEV dev )
285 {
286     EMRWIDENPATH emr;
287 
288     emr.emr.iType = EMR_WIDENPATH;
289     emr.emr.nSize = sizeof(emr);
290 
291     return EMFDRV_WriteRecord( dev, &emr.emr );
292 }
293 
294 INT EMFDRV_GetDeviceCaps(PHYSDEV dev, INT cap)
295 {
296     EMFDRV_PDEVICE *physDev = (EMFDRV_PDEVICE*) dev;
297 
298     switch(cap) {
299 
300     case HORZRES:
301         return physDev->horzres;
302     case VERTRES:
303         return physDev->vertres;
304     case LOGPIXELSX:
305         return physDev->logpixelsx;
306     case LOGPIXELSY:
307         return physDev->logpixelsy;
308     case HORZSIZE:
309         return physDev->horzsize;
310     case VERTSIZE:
311         return physDev->vertsize;
312     case BITSPIXEL:
313         return physDev->bitspixel;
314     case TEXTCAPS:
315         return physDev->textcaps;
316     case RASTERCAPS:
317         return physDev->rastercaps;
318     case TECHNOLOGY:
319         return physDev->technology;
320     case PLANES:
321         return physDev->planes;
322     case NUMCOLORS:
323         return physDev->numcolors;
324     default:
325         FIXME("Unimplemented cap %d\n", cap);
326         return 0;
327     }
328 }
329 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.