2ba06d5a8c
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27708 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
419 lines
9.4 KiB
C++
419 lines
9.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: mfutils.h
|
|
// Purpose: Metafile utilities: reading a placeable metafile independently
|
|
// of Windows.
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 12/07/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _MFUTILS_H_
|
|
#define _MFUTILS_H_
|
|
|
|
#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))
|
|
#endif
|
|
|
|
/* Metafile Functions */
|
|
// 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 */
|
|
#ifndef TRANSPARENT
|
|
#define TRANSPARENT 1
|
|
#endif
|
|
#ifndef OPAQUE
|
|
#define OPAQUE 2
|
|
#endif
|
|
|
|
/* Pen Styles */
|
|
#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) */
|
|
#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 */
|
|
#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 */
|
|
#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 WXDLLIMPEXP_OGL wxMetaRecord: public wxObject
|
|
{
|
|
public:
|
|
int metaFunction;
|
|
long param1;
|
|
long param2;
|
|
long param3;
|
|
long param4;
|
|
long param5;
|
|
long param6;
|
|
long param7;
|
|
long param8;
|
|
wxChar *stringParam;
|
|
wxRealPoint *points;
|
|
|
|
wxMetaRecord(int fun)
|
|
{
|
|
metaFunction = fun; points = NULL; stringParam = NULL;
|
|
param1 = 0;
|
|
}
|
|
~wxMetaRecord(void);
|
|
};
|
|
|
|
class WXDLLIMPEXP_OGL wxXMetaFile: public wxObject
|
|
{
|
|
public:
|
|
double lastX;
|
|
double lastY;
|
|
bool ok;
|
|
|
|
double left;
|
|
double top;
|
|
double right;
|
|
double bottom;
|
|
|
|
wxList metaRecords;
|
|
wxList gdiObjects; // List of wxMetaRecord objects created with Create...,
|
|
// referenced by position in list by SelectObject
|
|
wxXMetaFile(const wxChar* file = NULL);
|
|
~wxXMetaFile(void);
|
|
|
|
// After this is called, the metafile cannot be used for anything
|
|
// since it is now owned by the clipboard.
|
|
bool SetClipboard(int width = 0, int height = 0);
|
|
|
|
bool Play(wxDC *dc);
|
|
inline bool Ok(void) const { return ok; }
|
|
bool ReadFile(const wxChar *file);
|
|
};
|
|
|
|
#endif
|
|
// _MFUTILS_H_
|