// Created: 12/07/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _MFUTILS_H_
#define _MFUTILS_H_
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "mfutils.h"
#endif
+
#include <wx/metafile.h>
#ifndef GetRValue
-#define GetRValue(rgb) ((unsigned char)(rgb))
-#define GetGValue(rgb) ((unsigned char)(((int)(rgb)) >> 8))
-#define GetBValue(rgb) ((unsigned char)((rgb)>>16))
+#define GetRValue(rgb) ((unsigned char)(rgb))
+#define GetGValue(rgb) ((unsigned char)(((int)(rgb)) >> 8))
+#define GetBValue(rgb) ((unsigned char)((rgb)>>16))
#endif
/* Metafile Functions */
-/* Win32s/Borland need these macros, although META_SETBKCOLOR is defined */
-#if 1 // !defined(META_SETBKCOLOR) // || defined(WIN32)
-
-#define META_SETBKCOLOR 0x0201
-#define META_SETBKMODE 0x0102
-#define META_SETMAPMODE 0x0103
-#define META_SETROP2 0x0104
-#define META_SETRELABS 0x0105
-#define META_SETPOLYFILLMODE 0x0106
-#define META_SETSTRETCHBLTMODE 0x0107
-#define META_SETTEXTCHAREXTRA 0x0108
-#define META_SETTEXTCOLOR 0x0209
-#define META_SETTEXTJUSTIFICATION 0x020A
-#define META_SETWINDOWORG 0x020B
-#define META_SETWINDOWEXT 0x020C
-#define META_SETVIEWPORTORG 0x020D
-#define META_SETVIEWPORTEXT 0x020E
-#define META_OFFSETWINDOWORG 0x020F
-#define META_SCALEWINDOWEXT 0x0410
-#define META_OFFSETVIEWPORTORG 0x0211
-#define META_SCALEVIEWPORTEXT 0x0412
-#define META_LINETO 0x0213
-#define META_MOVETO 0x0214
-#define META_EXCLUDECLIPRECT 0x0415
-#define META_INTERSECTCLIPRECT 0x0416
-#define META_ARC 0x0817
-#define META_ELLIPSE 0x0418
-#define META_FLOODFILL 0x0419
-#define META_PIE 0x081A
-#define META_RECTANGLE 0x041B
-#define META_ROUNDRECT 0x061C
-#define META_PATBLT 0x061D
-#define META_SAVEDC 0x001E
-#define META_SETPIXEL 0x041F
-#define META_OFFSETCLIPRGN 0x0220
-#define META_TEXTOUT 0x0521
-#define META_BITBLT 0x0922
-#define META_STRETCHBLT 0x0B23
-#define META_POLYGON 0x0324
-#define META_POLYLINE 0x0325
-#define META_ESCAPE 0x0626
-#define META_RESTOREDC 0x0127
-#define META_FILLREGION 0x0228
-#define META_FRAMEREGION 0x0429
-#define META_INVERTREGION 0x012A
-#define META_PAINTREGION 0x012B
-#define META_SELECTCLIPREGION 0x012C
-#define META_SELECTOBJECT 0x012D
-#define META_SETTEXTALIGN 0x012E
-#define META_DRAWTEXT 0x062F
-
-#define META_CHORD 0x0830
-#define META_SETMAPPERFLAGS 0x0231
-#define META_EXTTEXTOUT 0x0a32
-#define META_SETDIBTODEV 0x0d33
-#define META_SELECTPALETTE 0x0234
-#define META_REALIZEPALETTE 0x0035
-#define META_ANIMATEPALETTE 0x0436
-#define META_SETPALENTRIES 0x0037
-#define META_POLYPOLYGON 0x0538
-#define META_RESIZEPALETTE 0x0139
-
-#define META_DIBBITBLT 0x0940
-#define META_DIBSTRETCHBLT 0x0b41
-#define META_DIBCREATEPATTERNBRUSH 0x0142
-#define META_STRETCHDIB 0x0f43
-
-#define META_EXTFLOODFILL 0x0548
-
-#define META_RESETDC 0x014C
-#define META_STARTDOC 0x014D
-#define META_STARTPAGE 0x004F
-#define META_ENDPAGE 0x0050
-#define META_ABORTDOC 0x0052
-#define META_ENDDOC 0x005E
-
-#define META_DELETEOBJECT 0x01f0
-
-#define META_CREATEPALETTE 0x00f7
-#define META_CREATEBRUSH 0x00F8
-#define META_CREATEPATTERNBRUSH 0x01F9
-#define META_CREATEPENINDIRECT 0x02FA
-#define META_CREATEFONTINDIRECT 0x02FB
-#define META_CREATEBRUSHINDIRECT 0x02FC
-#define META_CREATEBITMAPINDIRECT 0x02FD
-#define META_CREATEBITMAP 0x06FE
-#define META_CREATEREGION 0x06FF
+// some compilers have them in their include files
+
+#ifndef META_SETBKCOLOR
+ #define META_SETBKCOLOR 0x0201
+#endif
+#ifndef META_SETBKMODE
+ #define META_SETBKMODE 0x0102
+#endif
+#ifndef META_SETMAPMODE
+ #define META_SETMAPMODE 0x0103
+#endif
+#ifndef META_SETROP2
+ #define META_SETROP2 0x0104
+#endif
+#ifndef META_SETRELABS
+ #define META_SETRELABS 0x0105
+#endif
+#ifndef META_SETPOLYFILLMODE
+ #define META_SETPOLYFILLMODE 0x0106
+#endif
+#ifndef META_SETSTRETCHBLTMODE
+ #define META_SETSTRETCHBLTMODE 0x0107
+#endif
+#ifndef META_SETTEXTCHAREXTRA
+ #define META_SETTEXTCHAREXTRA 0x0108
+#endif
+#ifndef META_SETTEXTCOLOR
+ #define META_SETTEXTCOLOR 0x0209
+#endif
+#ifndef META_SETTEXTJUSTIFICATION
+ #define META_SETTEXTJUSTIFICATION 0x020A
+#endif
+#ifndef META_SETWINDOWORG
+ #define META_SETWINDOWORG 0x020B
+#endif
+#ifndef META_SETWINDOWEXT
+ #define META_SETWINDOWEXT 0x020C
+#endif
+#ifndef META_SETVIEWPORTORG
+ #define META_SETVIEWPORTORG 0x020D
+#endif
+#ifndef META_SETVIEWPORTEXT
+ #define META_SETVIEWPORTEXT 0x020E
+#endif
+#ifndef META_OFFSETWINDOWORG
+ #define META_OFFSETWINDOWORG 0x020F
+#endif
+#ifndef META_SCALEWINDOWEXT
+ #define META_SCALEWINDOWEXT 0x0410
+#endif
+#ifndef META_OFFSETVIEWPORTORG
+ #define META_OFFSETVIEWPORTORG 0x0211
+#endif
+#ifndef META_SCALEVIEWPORTEXT
+ #define META_SCALEVIEWPORTEXT 0x0412
+#endif
+#ifndef META_LINETO
+ #define META_LINETO 0x0213
+#endif
+#ifndef META_MOVETO
+ #define META_MOVETO 0x0214
+#endif
+#ifndef META_EXCLUDECLIPRECT
+ #define META_EXCLUDECLIPRECT 0x0415
+#endif
+#ifndef META_INTERSECTCLIPRECT
+ #define META_INTERSECTCLIPRECT 0x0416
+#endif
+#ifndef META_ARC
+ #define META_ARC 0x0817
+#endif
+#ifndef META_ELLIPSE
+ #define META_ELLIPSE 0x0418
+#endif
+#ifndef META_FLOODFILL
+ #define META_FLOODFILL 0x0419
+#endif
+#ifndef META_PIE
+ #define META_PIE 0x081A
+#endif
+#ifndef META_RECTANGLE
+ #define META_RECTANGLE 0x041B
+#endif
+#ifndef META_ROUNDRECT
+ #define META_ROUNDRECT 0x061C
+#endif
+#ifndef META_PATBLT
+ #define META_PATBLT 0x061D
+#endif
+#ifndef META_SAVEDC
+ #define META_SAVEDC 0x001E
+#endif
+#ifndef META_SETPIXEL
+ #define META_SETPIXEL 0x041F
+#endif
+#ifndef META_OFFSETCLIPRGN
+ #define META_OFFSETCLIPRGN 0x0220
+#endif
+#ifndef META_TEXTOUT
+ #define META_TEXTOUT 0x0521
+#endif
+#ifndef META_BITBLT
+ #define META_BITBLT 0x0922
+#endif
+#ifndef META_STRETCHBLT
+ #define META_STRETCHBLT 0x0B23
+#endif
+#ifndef META_POLYGON
+ #define META_POLYGON 0x0324
+#endif
+#ifndef META_POLYLINE
+ #define META_POLYLINE 0x0325
+#endif
+#ifndef META_ESCAPE
+ #define META_ESCAPE 0x0626
+#endif
+#ifndef META_RESTOREDC
+ #define META_RESTOREDC 0x0127
+#endif
+#ifndef META_FILLREGION
+ #define META_FILLREGION 0x0228
+#endif
+#ifndef META_FRAMEREGION
+ #define META_FRAMEREGION 0x0429
+#endif
+#ifndef META_INVERTREGION
+ #define META_INVERTREGION 0x012A
+#endif
+#ifndef META_PAINTREGION
+ #define META_PAINTREGION 0x012B
+#endif
+#ifndef META_SELECTCLIPREGION
+ #define META_SELECTCLIPREGION 0x012C
+#endif
+#ifndef META_SELECTOBJECT
+ #define META_SELECTOBJECT 0x012D
+#endif
+#ifndef META_SETTEXTALIGN
+ #define META_SETTEXTALIGN 0x012E
+#endif
+#ifndef META_DRAWTEXT
+ #define META_DRAWTEXT 0x062F
+#endif
+
+#ifndef META_CHORD
+ #define META_CHORD 0x0830
+#endif
+#ifndef META_SETMAPPERFLAGS
+ #define META_SETMAPPERFLAGS 0x0231
+#endif
+#ifndef META_EXTTEXTOUT
+ #define META_EXTTEXTOUT 0x0a32
+#endif
+#ifndef META_SETDIBTODEV
+ #define META_SETDIBTODEV 0x0d33
+#endif
+#ifndef META_SELECTPALETTE
+ #define META_SELECTPALETTE 0x0234
+#endif
+#ifndef META_REALIZEPALETTE
+ #define META_REALIZEPALETTE 0x0035
+#endif
+#ifndef META_ANIMATEPALETTE
+ #define META_ANIMATEPALETTE 0x0436
+#endif
+#ifndef META_SETPALENTRIES
+ #define META_SETPALENTRIES 0x0037
+#endif
+#ifndef META_POLYPOLYGON
+ #define META_POLYPOLYGON 0x0538
+#endif
+#ifndef META_RESIZEPALETTE
+ #define META_RESIZEPALETTE 0x0139
+#endif
+
+#ifndef META_DIBBITBLT
+ #define META_DIBBITBLT 0x0940
+#endif
+#ifndef META_DIBSTRETCHBLT
+ #define META_DIBSTRETCHBLT 0x0b41
+#endif
+#ifndef META_DIBCREATEPATTERNBRUSH
+ #define META_DIBCREATEPATTERNBRUSH 0x0142
+#endif
+#ifndef META_STRETCHDIB
+ #define META_STRETCHDIB 0x0f43
+#endif
+
+#ifndef META_EXTFLOODFILL
+ #define META_EXTFLOODFILL 0x0548
+#endif
+
+#ifndef META_RESETDC
+ #define META_RESETDC 0x014C
+#endif
+#ifndef META_STARTDOC
+ #define META_STARTDOC 0x014D
+#endif
+#ifndef META_STARTPAGE
+ #define META_STARTPAGE 0x004F
+#endif
+#ifndef META_ENDPAGE
+ #define META_ENDPAGE 0x0050
+#endif
+#ifndef META_ABORTDOC
+ #define META_ABORTDOC 0x0052
+#endif
+#ifndef META_ENDDOC
+ #define META_ENDDOC 0x005E
+#endif
+
+#ifndef META_DELETEOBJECT
+ #define META_DELETEOBJECT 0x01f0
+#endif
+
+#ifndef META_CREATEPALETTE
+ #define META_CREATEPALETTE 0x00f7
+#endif
+#ifndef META_CREATEBRUSH
+ #define META_CREATEBRUSH 0x00F8
+#endif
+#ifndef META_CREATEPATTERNBRUSH
+ #define META_CREATEPATTERNBRUSH 0x01F9
+#endif
+#ifndef META_CREATEPENINDIRECT
+ #define META_CREATEPENINDIRECT 0x02FA
+#endif
+#ifndef META_CREATEFONTINDIRECT
+ #define META_CREATEFONTINDIRECT 0x02FB
+#endif
+#ifndef META_CREATEBRUSHINDIRECT
+ #define META_CREATEBRUSHINDIRECT 0x02FC
+#endif
+#ifndef META_CREATEBITMAPINDIRECT
+ #define META_CREATEBITMAPINDIRECT 0x02FD
+#endif
+#ifndef META_CREATEBITMAP
+ #define META_CREATEBITMAP 0x06FE
+#endif
+#ifndef META_CREATEREGION
+ #define META_CREATEREGION 0x06FF
+#endif
/* Background Modes */
-#define TRANSPARENT 1
-#define OPAQUE 2
+#ifndef TRANSPARENT
+ #define TRANSPARENT 1
+#endif
+#ifndef OPAQUE
+ #define OPAQUE 2
+#endif
/* Pen Styles */
-#define PS_SOLID 0
-#define PS_DASH 1
-#define PS_DOT 2
-#define PS_DASHDOT 3
-#define PS_DASHDOTDOT 4
-#define PS_NULL 5
-#define PS_INSIDEFRAME 6
+#ifndef PS_SOLID
+ #define PS_SOLID 0
+#endif
+#ifndef PS_DASH
+ #define PS_DASH 1
+#endif
+#ifndef PS_DOT
+ #define PS_DOT 2
+#endif
+#ifndef PS_DASHDOT
+ #define PS_DASHDOT 3
+#endif
+#ifndef PS_DASHDOTDOT
+ #define PS_DASHDOTDOT 4
+#endif
+#ifndef PS_NULL
+ #define PS_NULL 5
+#endif
+#ifndef PS_INSIDEFRAME
+ #define PS_INSIDEFRAME 6
+#endif
/* PitchAndFamily family values (high 4 bits) */
-/* Win32s/Borland don't need this */
-#ifndef FF_DONTCARE // !defined(__BORLANDC__) && !defined(WIN32)
-#define FF_DONTCARE 0x00
-#define FF_ROMAN 0x10
-#define FF_SWISS 0x20
-#define FF_MODERN 0x30
-#define FF_SCRIPT 0x40
-#define FF_DECORATIVE 0x50
+#ifndef FF_DONTCARE
+ #define FF_DONTCARE 0x00
+#endif
+#ifndef FF_ROMAN
+ #define FF_ROMAN 0x10
+#endif
+#ifndef FF_SWISS
+ #define FF_SWISS 0x20
+#endif
+#ifndef FF_MODERN
+ #define FF_MODERN 0x30
+#endif
+#ifndef FF_SCRIPT
+ #define FF_SCRIPT 0x40
+#endif
+#ifndef FF_DECORATIVE
+ #define FF_DECORATIVE 0x50
#endif
/* Brush Styles */
-#define BS_SOLID 0
-#define BS_NULL 1
-#define BS_HOLLOW BS_NULL
-#define BS_HATCHED 2
-#define BS_PATTERN 3
-#define BS_INDEXED 4
-#define BS_DIBPATTERN 5
+#ifndef BS_SOLID
+ #define BS_SOLID 0
+#endif
+#ifndef BS_NULL
+ #define BS_NULL 1
+#endif
+#ifndef BS_HOLLOW
+ #define BS_HOLLOW BS_NULL
+#endif
+#ifndef BS_HATCHED
+ #define BS_HATCHED 2
+#endif
+#ifndef BS_PATTERN
+ #define BS_PATTERN 3
+#endif
+#ifndef BS_INDEXED
+ #define BS_INDEXED 4
+#endif
+#ifndef BS_DIBPATTERN
+ #define BS_DIBPATTERN 5
+#endif
/* Hatch Styles */
-#define HS_HORIZONTAL 0
-#define HS_VERTICAL 1
-#define HS_FDIAGONAL 2
-#define HS_BDIAGONAL 3
-#define HS_CROSS 4
-#define HS_DIAGCROSS 5
-
-#endif // metafile functions
+#ifndef HS_HORIZONTAL
+ #define HS_HORIZONTAL 0
+#endif
+#ifndef HS_VERTICAL
+ #define HS_VERTICAL 1
+#endif
+#ifndef HS_FDIAGONAL
+ #define HS_FDIAGONAL 2
+#endif
+#ifndef HS_BDIAGONAL
+ #define HS_BDIAGONAL 3
+#endif
+#ifndef HS_CROSS
+ #define HS_CROSS 4
+#endif
+#ifndef HS_DIAGCROSS
+ #define HS_DIAGCROSS 5
+#endif
-class wxMetaRecord: public wxObject
+class WXDLLIMPEXP_OGL wxMetaRecord: public wxObject
{
public:
int metaFunction;
~wxMetaRecord(void);
};
-class wxXMetaFile: public wxObject
+class WXDLLIMPEXP_OGL wxXMetaFile: public wxObject
{
public:
double lastX;
wxList metaRecords;
wxList gdiObjects; // List of wxMetaRecord objects created with Create...,
// referenced by position in list by SelectObject
- wxXMetaFile(char *file = NULL);
+ wxXMetaFile(const wxChar* file = NULL);
~wxXMetaFile(void);
// After this is called, the metafile cannot be used for anything
bool Play(wxDC *dc);
inline bool Ok(void) const { return ok; }
- bool ReadFile(char *file);
+ bool ReadFile(const wxChar *file);
};
#endif