home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / contrib / include / wx / ogl / mfutils.h < prev    next >
C/C++ Source or Header  |  2002-12-18  |  6KB  |  212 lines

  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: mfutils.h,v 1.3.2.1 2002/12/18 06:11:27 RD Exp $
  9. // Copyright:   (c) Julian Smart
  10. // Licence:       wxWindows licence
  11. /////////////////////////////////////////////////////////////////////////////
  12.  
  13. #ifndef _MFUTILS_H_
  14. #define _MFUTILS_H_
  15.  
  16. #if defined(__GNUG__) && !defined(__APPLE__)
  17. #pragma interface "mfutils.h"
  18. #endif
  19.  
  20. #include <wx/metafile.h>
  21.  
  22. #ifndef GetRValue
  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 */
  30. #if 1 // !defined(META_SETBKCOLOR) // || defined(WIN32)
  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 */
  132. #ifndef FF_DONTCARE // !defined(__BORLANDC__) && !defined(WIN32)
  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.  
  160. class 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.   wxChar *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.  
  183. class wxXMetaFile: public wxObject
  184. {
  185.  public:
  186.   double lastX;
  187.   double lastY;
  188.   bool ok;
  189.  
  190.   double left;
  191.   double top;
  192.   double right;
  193.   double bottom;
  194.  
  195.   wxList metaRecords;
  196.   wxList gdiObjects; // List of wxMetaRecord objects created with Create...,
  197.                      // referenced by position in list by SelectObject
  198.   wxXMetaFile(const wxChar* 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(const wxChar *file);
  208. };
  209.  
  210. #endif
  211.  // _MFUTILS_H_
  212.