]> git.saurik.com Git - wxWidgets.git/blame - utils/ogl/src/mfutils.h
fixed somebody's poorly done StreamSize-->GetSize transition
[wxWidgets.git] / utils / ogl / src / mfutils.h
CommitLineData
0fc1a713
JS
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#ifdef __GNUG__
17#pragma interface "mfutils.h"
18#endif
19
20#include <wx/metafile.h>
21
631f1bfe 22#ifndef GetRValue
0fc1a713
JS
23#define GetRValue(rgb) ((unsigned char)(rgb))
24#define GetGValue(rgb) ((unsigned char)(((int)(rgb)) >> 8))
25#define GetBValue(rgb) ((unsigned char)((rgb)>>16))
26#endif
27
28/* Metafile Functions */
29/* Win32s/Borland need these macros, although META_SETBKCOLOR is defined */
306dfc2b 30#if 1 // !defined(META_SETBKCOLOR) // || defined(WIN32)
0fc1a713
JS
31
32#define META_SETBKCOLOR 0x0201
33#define META_SETBKMODE 0x0102
34#define META_SETMAPMODE 0x0103
35#define META_SETROP2 0x0104
36#define META_SETRELABS 0x0105
37#define META_SETPOLYFILLMODE 0x0106
38#define META_SETSTRETCHBLTMODE 0x0107
39#define META_SETTEXTCHAREXTRA 0x0108
40#define META_SETTEXTCOLOR 0x0209
41#define META_SETTEXTJUSTIFICATION 0x020A
42#define META_SETWINDOWORG 0x020B
43#define META_SETWINDOWEXT 0x020C
44#define META_SETVIEWPORTORG 0x020D
45#define META_SETVIEWPORTEXT 0x020E
46#define META_OFFSETWINDOWORG 0x020F
47#define META_SCALEWINDOWEXT 0x0410
48#define META_OFFSETVIEWPORTORG 0x0211
49#define META_SCALEVIEWPORTEXT 0x0412
50#define META_LINETO 0x0213
51#define META_MOVETO 0x0214
52#define META_EXCLUDECLIPRECT 0x0415
53#define META_INTERSECTCLIPRECT 0x0416
54#define META_ARC 0x0817
55#define META_ELLIPSE 0x0418
56#define META_FLOODFILL 0x0419
57#define META_PIE 0x081A
58#define META_RECTANGLE 0x041B
59#define META_ROUNDRECT 0x061C
60#define META_PATBLT 0x061D
61#define META_SAVEDC 0x001E
62#define META_SETPIXEL 0x041F
63#define META_OFFSETCLIPRGN 0x0220
64#define META_TEXTOUT 0x0521
65#define META_BITBLT 0x0922
66#define META_STRETCHBLT 0x0B23
67#define META_POLYGON 0x0324
68#define META_POLYLINE 0x0325
69#define META_ESCAPE 0x0626
70#define META_RESTOREDC 0x0127
71#define META_FILLREGION 0x0228
72#define META_FRAMEREGION 0x0429
73#define META_INVERTREGION 0x012A
74#define META_PAINTREGION 0x012B
75#define META_SELECTCLIPREGION 0x012C
76#define META_SELECTOBJECT 0x012D
77#define META_SETTEXTALIGN 0x012E
78#define META_DRAWTEXT 0x062F
79
80#define META_CHORD 0x0830
81#define META_SETMAPPERFLAGS 0x0231
82#define META_EXTTEXTOUT 0x0a32
83#define META_SETDIBTODEV 0x0d33
84#define META_SELECTPALETTE 0x0234
85#define META_REALIZEPALETTE 0x0035
86#define META_ANIMATEPALETTE 0x0436
87#define META_SETPALENTRIES 0x0037
88#define META_POLYPOLYGON 0x0538
89#define META_RESIZEPALETTE 0x0139
90
91#define META_DIBBITBLT 0x0940
92#define META_DIBSTRETCHBLT 0x0b41
93#define META_DIBCREATEPATTERNBRUSH 0x0142
94#define META_STRETCHDIB 0x0f43
95
96#define META_EXTFLOODFILL 0x0548
97
98#define META_RESETDC 0x014C
99#define META_STARTDOC 0x014D
100#define META_STARTPAGE 0x004F
101#define META_ENDPAGE 0x0050
102#define META_ABORTDOC 0x0052
103#define META_ENDDOC 0x005E
104
105#define META_DELETEOBJECT 0x01f0
106
107#define META_CREATEPALETTE 0x00f7
108#define META_CREATEBRUSH 0x00F8
109#define META_CREATEPATTERNBRUSH 0x01F9
110#define META_CREATEPENINDIRECT 0x02FA
111#define META_CREATEFONTINDIRECT 0x02FB
112#define META_CREATEBRUSHINDIRECT 0x02FC
113#define META_CREATEBITMAPINDIRECT 0x02FD
114#define META_CREATEBITMAP 0x06FE
115#define META_CREATEREGION 0x06FF
116
117/* Background Modes */
118#define TRANSPARENT 1
119#define OPAQUE 2
120
121/* Pen Styles */
122#define PS_SOLID 0
123#define PS_DASH 1
124#define PS_DOT 2
125#define PS_DASHDOT 3
126#define PS_DASHDOTDOT 4
127#define PS_NULL 5
128#define PS_INSIDEFRAME 6
129
130/* PitchAndFamily family values (high 4 bits) */
131/* Win32s/Borland don't need this */
631f1bfe 132#ifndef FF_DONTCARE // !defined(__BORLANDC__) && !defined(WIN32)
0fc1a713
JS
133#define FF_DONTCARE 0x00
134#define FF_ROMAN 0x10
135#define FF_SWISS 0x20
136#define FF_MODERN 0x30
137#define FF_SCRIPT 0x40
138#define FF_DECORATIVE 0x50
139#endif
140
141/* Brush Styles */
142#define BS_SOLID 0
143#define BS_NULL 1
144#define BS_HOLLOW BS_NULL
145#define BS_HATCHED 2
146#define BS_PATTERN 3
147#define BS_INDEXED 4
148#define BS_DIBPATTERN 5
149
150/* Hatch Styles */
151#define HS_HORIZONTAL 0
152#define HS_VERTICAL 1
153#define HS_FDIAGONAL 2
154#define HS_BDIAGONAL 3
155#define HS_CROSS 4
156#define HS_DIAGCROSS 5
157
158#endif // metafile functions
159
160class wxMetaRecord: public wxObject
161{
162 public:
163 int metaFunction;
164 long param1;
165 long param2;
166 long param3;
167 long param4;
168 long param5;
169 long param6;
170 long param7;
171 long param8;
172 char *stringParam;
173 wxRealPoint *points;
174
175 wxMetaRecord(int fun)
176 {
177 metaFunction = fun; points = NULL; stringParam = NULL;
178 param1 = 0;
179 }
180 ~wxMetaRecord(void);
181};
182
183class wxXMetaFile: public wxObject
184{
185 public:
42cfaf8c
JS
186 double lastX;
187 double lastY;
0fc1a713
JS
188 bool ok;
189
42cfaf8c
JS
190 double left;
191 double top;
192 double right;
193 double bottom;
194
0fc1a713
JS
195 wxList metaRecords;
196 wxList gdiObjects; // List of wxMetaRecord objects created with Create...,
197 // referenced by position in list by SelectObject
198 wxXMetaFile(char *file = NULL);
199 ~wxXMetaFile(void);
200
201 // After this is called, the metafile cannot be used for anything
202 // since it is now owned by the clipboard.
203 bool SetClipboard(int width = 0, int height = 0);
204
205 bool Play(wxDC *dc);
206 inline bool Ok(void) const { return ok; }
207 bool ReadFile(char *file);
208};
209
210#endif
211 // _MFUTILS_H_