]> git.saurik.com Git - wxWidgets.git/blame_incremental - contrib/include/wx/ogl/mfutils.h
wxPalette unified. Source cleaning.
[wxWidgets.git] / contrib / include / wx / ogl / mfutils.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: mfutils.h
3// Purpose: Metafile utilities: reading a placeable metafile independently
4// of Windows.
5// Author: Julian Smart
6// Modified by:
7// Created: 12/07/98
8// RCS-ID: $Id$
9// Copyright: (c) Julian Smart
10// Licence: wxWindows licence
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef _MFUTILS_H_
14#define _MFUTILS_H_
15
16
17#include <wx/metafile.h>
18
19#ifndef GetRValue
20#define GetRValue(rgb) ((unsigned char)(rgb))
21#define GetGValue(rgb) ((unsigned char)(((int)(rgb)) >> 8))
22#define GetBValue(rgb) ((unsigned char)((rgb)>>16))
23#endif
24
25/* Metafile Functions */
26// some compilers have them in their include files
27
28#ifndef META_SETBKCOLOR
29 #define META_SETBKCOLOR 0x0201
30#endif
31#ifndef META_SETBKMODE
32 #define META_SETBKMODE 0x0102
33#endif
34#ifndef META_SETMAPMODE
35 #define META_SETMAPMODE 0x0103
36#endif
37#ifndef META_SETROP2
38 #define META_SETROP2 0x0104
39#endif
40#ifndef META_SETRELABS
41 #define META_SETRELABS 0x0105
42#endif
43#ifndef META_SETPOLYFILLMODE
44 #define META_SETPOLYFILLMODE 0x0106
45#endif
46#ifndef META_SETSTRETCHBLTMODE
47 #define META_SETSTRETCHBLTMODE 0x0107
48#endif
49#ifndef META_SETTEXTCHAREXTRA
50 #define META_SETTEXTCHAREXTRA 0x0108
51#endif
52#ifndef META_SETTEXTCOLOR
53 #define META_SETTEXTCOLOR 0x0209
54#endif
55#ifndef META_SETTEXTJUSTIFICATION
56 #define META_SETTEXTJUSTIFICATION 0x020A
57#endif
58#ifndef META_SETWINDOWORG
59 #define META_SETWINDOWORG 0x020B
60#endif
61#ifndef META_SETWINDOWEXT
62 #define META_SETWINDOWEXT 0x020C
63#endif
64#ifndef META_SETVIEWPORTORG
65 #define META_SETVIEWPORTORG 0x020D
66#endif
67#ifndef META_SETVIEWPORTEXT
68 #define META_SETVIEWPORTEXT 0x020E
69#endif
70#ifndef META_OFFSETWINDOWORG
71 #define META_OFFSETWINDOWORG 0x020F
72#endif
73#ifndef META_SCALEWINDOWEXT
74 #define META_SCALEWINDOWEXT 0x0410
75#endif
76#ifndef META_OFFSETVIEWPORTORG
77 #define META_OFFSETVIEWPORTORG 0x0211
78#endif
79#ifndef META_SCALEVIEWPORTEXT
80 #define META_SCALEVIEWPORTEXT 0x0412
81#endif
82#ifndef META_LINETO
83 #define META_LINETO 0x0213
84#endif
85#ifndef META_MOVETO
86 #define META_MOVETO 0x0214
87#endif
88#ifndef META_EXCLUDECLIPRECT
89 #define META_EXCLUDECLIPRECT 0x0415
90#endif
91#ifndef META_INTERSECTCLIPRECT
92 #define META_INTERSECTCLIPRECT 0x0416
93#endif
94#ifndef META_ARC
95 #define META_ARC 0x0817
96#endif
97#ifndef META_ELLIPSE
98 #define META_ELLIPSE 0x0418
99#endif
100#ifndef META_FLOODFILL
101 #define META_FLOODFILL 0x0419
102#endif
103#ifndef META_PIE
104 #define META_PIE 0x081A
105#endif
106#ifndef META_RECTANGLE
107 #define META_RECTANGLE 0x041B
108#endif
109#ifndef META_ROUNDRECT
110 #define META_ROUNDRECT 0x061C
111#endif
112#ifndef META_PATBLT
113 #define META_PATBLT 0x061D
114#endif
115#ifndef META_SAVEDC
116 #define META_SAVEDC 0x001E
117#endif
118#ifndef META_SETPIXEL
119 #define META_SETPIXEL 0x041F
120#endif
121#ifndef META_OFFSETCLIPRGN
122 #define META_OFFSETCLIPRGN 0x0220
123#endif
124#ifndef META_TEXTOUT
125 #define META_TEXTOUT 0x0521
126#endif
127#ifndef META_BITBLT
128 #define META_BITBLT 0x0922
129#endif
130#ifndef META_STRETCHBLT
131 #define META_STRETCHBLT 0x0B23
132#endif
133#ifndef META_POLYGON
134 #define META_POLYGON 0x0324
135#endif
136#ifndef META_POLYLINE
137 #define META_POLYLINE 0x0325
138#endif
139#ifndef META_ESCAPE
140 #define META_ESCAPE 0x0626
141#endif
142#ifndef META_RESTOREDC
143 #define META_RESTOREDC 0x0127
144#endif
145#ifndef META_FILLREGION
146 #define META_FILLREGION 0x0228
147#endif
148#ifndef META_FRAMEREGION
149 #define META_FRAMEREGION 0x0429
150#endif
151#ifndef META_INVERTREGION
152 #define META_INVERTREGION 0x012A
153#endif
154#ifndef META_PAINTREGION
155 #define META_PAINTREGION 0x012B
156#endif
157#ifndef META_SELECTCLIPREGION
158 #define META_SELECTCLIPREGION 0x012C
159#endif
160#ifndef META_SELECTOBJECT
161 #define META_SELECTOBJECT 0x012D
162#endif
163#ifndef META_SETTEXTALIGN
164 #define META_SETTEXTALIGN 0x012E
165#endif
166#ifndef META_DRAWTEXT
167 #define META_DRAWTEXT 0x062F
168#endif
169
170#ifndef META_CHORD
171 #define META_CHORD 0x0830
172#endif
173#ifndef META_SETMAPPERFLAGS
174 #define META_SETMAPPERFLAGS 0x0231
175#endif
176#ifndef META_EXTTEXTOUT
177 #define META_EXTTEXTOUT 0x0a32
178#endif
179#ifndef META_SETDIBTODEV
180 #define META_SETDIBTODEV 0x0d33
181#endif
182#ifndef META_SELECTPALETTE
183 #define META_SELECTPALETTE 0x0234
184#endif
185#ifndef META_REALIZEPALETTE
186 #define META_REALIZEPALETTE 0x0035
187#endif
188#ifndef META_ANIMATEPALETTE
189 #define META_ANIMATEPALETTE 0x0436
190#endif
191#ifndef META_SETPALENTRIES
192 #define META_SETPALENTRIES 0x0037
193#endif
194#ifndef META_POLYPOLYGON
195 #define META_POLYPOLYGON 0x0538
196#endif
197#ifndef META_RESIZEPALETTE
198 #define META_RESIZEPALETTE 0x0139
199#endif
200
201#ifndef META_DIBBITBLT
202 #define META_DIBBITBLT 0x0940
203#endif
204#ifndef META_DIBSTRETCHBLT
205 #define META_DIBSTRETCHBLT 0x0b41
206#endif
207#ifndef META_DIBCREATEPATTERNBRUSH
208 #define META_DIBCREATEPATTERNBRUSH 0x0142
209#endif
210#ifndef META_STRETCHDIB
211 #define META_STRETCHDIB 0x0f43
212#endif
213
214#ifndef META_EXTFLOODFILL
215 #define META_EXTFLOODFILL 0x0548
216#endif
217
218#ifndef META_RESETDC
219 #define META_RESETDC 0x014C
220#endif
221#ifndef META_STARTDOC
222 #define META_STARTDOC 0x014D
223#endif
224#ifndef META_STARTPAGE
225 #define META_STARTPAGE 0x004F
226#endif
227#ifndef META_ENDPAGE
228 #define META_ENDPAGE 0x0050
229#endif
230#ifndef META_ABORTDOC
231 #define META_ABORTDOC 0x0052
232#endif
233#ifndef META_ENDDOC
234 #define META_ENDDOC 0x005E
235#endif
236
237#ifndef META_DELETEOBJECT
238 #define META_DELETEOBJECT 0x01f0
239#endif
240
241#ifndef META_CREATEPALETTE
242 #define META_CREATEPALETTE 0x00f7
243#endif
244#ifndef META_CREATEBRUSH
245 #define META_CREATEBRUSH 0x00F8
246#endif
247#ifndef META_CREATEPATTERNBRUSH
248 #define META_CREATEPATTERNBRUSH 0x01F9
249#endif
250#ifndef META_CREATEPENINDIRECT
251 #define META_CREATEPENINDIRECT 0x02FA
252#endif
253#ifndef META_CREATEFONTINDIRECT
254 #define META_CREATEFONTINDIRECT 0x02FB
255#endif
256#ifndef META_CREATEBRUSHINDIRECT
257 #define META_CREATEBRUSHINDIRECT 0x02FC
258#endif
259#ifndef META_CREATEBITMAPINDIRECT
260 #define META_CREATEBITMAPINDIRECT 0x02FD
261#endif
262#ifndef META_CREATEBITMAP
263 #define META_CREATEBITMAP 0x06FE
264#endif
265#ifndef META_CREATEREGION
266 #define META_CREATEREGION 0x06FF
267#endif
268
269/* Background Modes */
270#ifndef TRANSPARENT
271 #define TRANSPARENT 1
272#endif
273#ifndef OPAQUE
274 #define OPAQUE 2
275#endif
276
277/* Pen Styles */
278#ifndef PS_SOLID
279 #define PS_SOLID 0
280#endif
281#ifndef PS_DASH
282 #define PS_DASH 1
283#endif
284#ifndef PS_DOT
285 #define PS_DOT 2
286#endif
287#ifndef PS_DASHDOT
288 #define PS_DASHDOT 3
289#endif
290#ifndef PS_DASHDOTDOT
291 #define PS_DASHDOTDOT 4
292#endif
293#ifndef PS_NULL
294 #define PS_NULL 5
295#endif
296#ifndef PS_INSIDEFRAME
297 #define PS_INSIDEFRAME 6
298#endif
299
300/* PitchAndFamily family values (high 4 bits) */
301#ifndef FF_DONTCARE
302 #define FF_DONTCARE 0x00
303#endif
304#ifndef FF_ROMAN
305 #define FF_ROMAN 0x10
306#endif
307#ifndef FF_SWISS
308 #define FF_SWISS 0x20
309#endif
310#ifndef FF_MODERN
311 #define FF_MODERN 0x30
312#endif
313#ifndef FF_SCRIPT
314 #define FF_SCRIPT 0x40
315#endif
316#ifndef FF_DECORATIVE
317 #define FF_DECORATIVE 0x50
318#endif
319
320/* Brush Styles */
321#ifndef BS_SOLID
322 #define BS_SOLID 0
323#endif
324#ifndef BS_NULL
325 #define BS_NULL 1
326#endif
327#ifndef BS_HOLLOW
328 #define BS_HOLLOW BS_NULL
329#endif
330#ifndef BS_HATCHED
331 #define BS_HATCHED 2
332#endif
333#ifndef BS_PATTERN
334 #define BS_PATTERN 3
335#endif
336#ifndef BS_INDEXED
337 #define BS_INDEXED 4
338#endif
339#ifndef BS_DIBPATTERN
340 #define BS_DIBPATTERN 5
341#endif
342
343/* Hatch Styles */
344#ifndef HS_HORIZONTAL
345 #define HS_HORIZONTAL 0
346#endif
347#ifndef HS_VERTICAL
348 #define HS_VERTICAL 1
349#endif
350#ifndef HS_FDIAGONAL
351 #define HS_FDIAGONAL 2
352#endif
353#ifndef HS_BDIAGONAL
354 #define HS_BDIAGONAL 3
355#endif
356#ifndef HS_CROSS
357 #define HS_CROSS 4
358#endif
359#ifndef HS_DIAGCROSS
360 #define HS_DIAGCROSS 5
361#endif
362
363class WXDLLIMPEXP_OGL wxMetaRecord: public wxObject
364{
365 public:
366 int metaFunction;
367 long param1;
368 long param2;
369 long param3;
370 long param4;
371 long param5;
372 long param6;
373 long param7;
374 long param8;
375 wxChar *stringParam;
376 wxRealPoint *points;
377
378 wxMetaRecord(int fun)
379 {
380 metaFunction = fun; points = NULL; stringParam = NULL;
381 param1 = 0;
382 }
383 ~wxMetaRecord(void);
384};
385
386class WXDLLIMPEXP_OGL wxXMetaFile: public wxObject
387{
388 public:
389 double lastX;
390 double lastY;
391 bool ok;
392
393 double left;
394 double top;
395 double right;
396 double bottom;
397
398 wxList metaRecords;
399 wxList gdiObjects; // List of wxMetaRecord objects created with Create...,
400 // referenced by position in list by SelectObject
401 wxXMetaFile(const wxChar* file = NULL);
402 ~wxXMetaFile(void);
403
404 // After this is called, the metafile cannot be used for anything
405 // since it is now owned by the clipboard.
406 bool SetClipboard(int width = 0, int height = 0);
407
408 bool Play(wxDC *dc);
409 inline bool Ok(void) const { return ok; }
410 bool ReadFile(const wxChar *file);
411};
412
413#endif
414 // _MFUTILS_H_