You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
478 lines
13 KiB
478 lines
13 KiB
/****************************************************************************
|
|
*
|
|
* Win16 Emitter Routines header file
|
|
*
|
|
* Date: 7/18/91
|
|
* Author: Jeffrey Newman (c-jeffn)
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef _WIN16_MF3216_
|
|
#define _WIN16_MF3216_
|
|
|
|
#pragma pack(1)
|
|
|
|
#define msosignature 0x50504E54 // Office/Escher signature
|
|
#define msocommentBeginSrcCopy 0x0106
|
|
#define msocommentEndSrcCopy 0x0107
|
|
|
|
typedef struct tagRECTS {
|
|
SHORT left;
|
|
SHORT top;
|
|
SHORT right;
|
|
SHORT bottom;
|
|
} RECTS, *PRECTS;
|
|
|
|
typedef struct tagWIN16LOGPEN {
|
|
WORD lopnStyle;
|
|
POINTS lopnWidth;
|
|
COLORREF lopnColor;
|
|
} WIN16LOGPEN, *LPWIN16LOGPEN;
|
|
|
|
typedef struct tagWIN16LOGBRUSH
|
|
{
|
|
WORD lbStyle;
|
|
DWORD lbColor;
|
|
SHORT lbHatch;
|
|
} WIN16LOGBRUSH, *LPWIN16LOGBRUSH;
|
|
|
|
typedef struct tagWIN16LOGFONT
|
|
{
|
|
SHORT lfHeight;
|
|
SHORT lfWidth;
|
|
SHORT lfEscapement;
|
|
SHORT lfOrientation;
|
|
SHORT lfWeight;
|
|
BYTE lfItalic;
|
|
BYTE lfUnderline;
|
|
BYTE lfStrikeOut;
|
|
BYTE lfCharSet;
|
|
BYTE lfOutPrecision;
|
|
BYTE lfClipPrecision;
|
|
BYTE lfQuality;
|
|
BYTE lfPitchAndFamily;
|
|
BYTE lfFaceName[LF_FACESIZE];
|
|
} WIN16LOGFONT, *LPWIN16LOGFONT;
|
|
|
|
typedef struct tagMETARECORD0 {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
} METARECORD0;
|
|
|
|
// Define METARECORD1 through METARECORD9.
|
|
|
|
#define METARECORD_(n) \
|
|
typedef struct tagMETARECORD##n { \
|
|
DWORD rdSize; \
|
|
WORD rdFunction; \
|
|
WORD rdParm[n]; \
|
|
} METARECORD##n
|
|
|
|
METARECORD_(1);
|
|
METARECORD_(2);
|
|
METARECORD_(3);
|
|
METARECORD_(4);
|
|
METARECORD_(5);
|
|
METARECORD_(6);
|
|
METARECORD_(7);
|
|
METARECORD_(8);
|
|
METARECORD_(9);
|
|
|
|
typedef struct tagMETARECORD_CREATEFONTINDIRECT {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WIN16LOGFONT lf16;
|
|
} METARECORD_CREATEFONTINDIRECT;
|
|
|
|
typedef struct tagMETARECORD_CREATEPENINDIRECT {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WIN16LOGPEN lopn16;
|
|
} METARECORD_CREATEPENINDIRECT;
|
|
|
|
typedef struct tagMETARECORD_CREATEBRUSHINDIRECT {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WIN16LOGBRUSH lb16;
|
|
} METARECORD_CREATEBRUSHINDIRECT;
|
|
|
|
typedef struct tagMETARECORD_DIBCREATEPATTERNBRUSH {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WORD iType;
|
|
WORD iUsage;
|
|
} METARECORD_DIBCREATEPATTERNBRUSH;
|
|
|
|
typedef struct tagMETARECORD_POLY {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WORD cpt;
|
|
} METARECORD_POLY;
|
|
|
|
typedef struct tagMETARECORD_POLYPOLYGON {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WORD ccpt;
|
|
} METARECORD_POLYPOLYGON;
|
|
|
|
typedef struct tagMETARECORD_DIBSTRETCHBLT {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
DWORD rop;
|
|
SHORT cySrc;
|
|
SHORT cxSrc;
|
|
SHORT ySrc;
|
|
SHORT xSrc;
|
|
SHORT cy;
|
|
SHORT cx;
|
|
SHORT y;
|
|
SHORT x;
|
|
} METARECORD_DIBSTRETCHBLT;
|
|
|
|
typedef struct tagMETARECORD_SETPALENTRIES {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WORD iStart;
|
|
WORD cEntries;
|
|
} METARECORD_SETPALENTRIES;
|
|
|
|
typedef struct tagMETARECORD_ESCAPE {
|
|
DWORD rdSize;
|
|
WORD rdFunction;
|
|
WORD wEscape;
|
|
WORD wCount;
|
|
} METARECORD_ESCAPE, *PMETARECORD_ESCAPE;
|
|
|
|
#pragma pack()
|
|
|
|
#define bEmitWin16EOF(pLocalDC) \
|
|
bW16Emit0(pLocalDC, 0)
|
|
|
|
#define bEmitWin16RealizePalette(pLocalDC) \
|
|
bW16Emit0(pLocalDC, META_REALIZEPALETTE)
|
|
|
|
#define bEmitWin16SaveDC(pLocalDC) \
|
|
bW16Emit0(pLocalDC, META_SAVEDC)
|
|
|
|
#define bEmitWin16SetTextAlign(pLocalDC, wFlags) \
|
|
bW16Emit1(pLocalDC, META_SETTEXTALIGN, wFlags)
|
|
|
|
#define bEmitWin16SetStretchBltMode(pLocalDC, iStretchMode) \
|
|
bW16Emit1(pLocalDC, META_SETSTRETCHBLTMODE, iStretchMode)
|
|
|
|
#define bEmitWin16SetROP2(pLocalDC, nDrawMode) \
|
|
bW16Emit1(pLocalDC, META_SETROP2, nDrawMode)
|
|
|
|
#define bEmitWin16SetPolyFillMode(pLocalDC, iPolyFillMode) \
|
|
bW16Emit1(pLocalDC, META_SETPOLYFILLMODE, iPolyFillMode)
|
|
|
|
#define bEmitWin16SetBkMode(pLocalDC, iBkMode) \
|
|
bW16Emit1(pLocalDC, META_SETBKMODE, iBkMode)
|
|
|
|
#define bEmitWin16SelectPalette(pLocalDC, ihObject) \
|
|
bW16Emit1(pLocalDC, META_SELECTPALETTE, ihObject)
|
|
|
|
#define bEmitWin16SelectObject(pLocalDC, ihObject) \
|
|
bW16Emit1(pLocalDC, META_SELECTOBJECT, ihObject)
|
|
|
|
#define bEmitWin16DeleteObject(pLocalDC, ihObject) \
|
|
bW16Emit1(pLocalDC, META_DELETEOBJECT, ihObject)
|
|
|
|
#define bEmitWin16SetMapMode(pLocalDC, iMapMode) \
|
|
bW16Emit1(pLocalDC, META_SETMAPMODE, iMapMode)
|
|
|
|
#define bEmitWin16PaintRgn(pLocalDC, ihRgn) \
|
|
bW16Emit1(pLocalDC, META_PAINTREGION, ihRgn)
|
|
|
|
#define bEmitWin16InvertRgn(pLocalDC, ihRgn) \
|
|
bW16Emit1(pLocalDC, META_INVERTREGION, ihRgn)
|
|
|
|
#define bEmitWin16RestoreDC(pLocalDC, nSavedDC) \
|
|
bW16Emit1(pLocalDC, META_RESTOREDC, nSavedDC)
|
|
|
|
#define bEmitWin16ResizePalette(pLocalDC, cEntries) \
|
|
bW16Emit1(pLocalDC, META_RESIZEPALETTE, cEntries)
|
|
|
|
#define bEmitWin16SetTextColor(pLocalDC, crColor) \
|
|
bW16Emit2(pLocalDC, META_SETTEXTCOLOR, \
|
|
HIWORD(crColor), LOWORD(crColor))
|
|
|
|
#define bEmitWin16SetMapperFlags(pLocalDC, dwFlags) \
|
|
bW16Emit2(pLocalDC, META_SETMAPPERFLAGS, \
|
|
HIWORD(dwFlags), LOWORD(dwFlags))
|
|
|
|
#define bEmitWin16SetBkColor(pLocalDC, crColor) \
|
|
bW16Emit2(pLocalDC, META_SETBKCOLOR, \
|
|
HIWORD(crColor), LOWORD(crColor))
|
|
|
|
#define bEmitWin16SetWindowOrg(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_SETWINDOWORG, x, y)
|
|
|
|
#define bEmitWin16SetWindowExt(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_SETWINDOWEXT, x, y)
|
|
|
|
#define bEmitWin16SetViewportOrg(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_SETVIEWPORTORG, x, y)
|
|
|
|
#define bEmitWin16SetViewportExt(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_SETVIEWPORTEXT, x, y)
|
|
|
|
#define bEmitWin16OffsetClipRgn(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_OFFSETCLIPRGN, x, y)
|
|
|
|
#define bEmitWin16FillRgn(pLocalDC, ihRgn, ihBrush) \
|
|
bW16Emit2(pLocalDC, META_FILLREGION, ihBrush, ihRgn)
|
|
|
|
#define bEmitWin16MoveTo(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_MOVETO, x, y)
|
|
|
|
#define bEmitWin16LineTo(pLocalDC, x, y) \
|
|
bW16Emit2(pLocalDC, META_LINETO, x, y)
|
|
|
|
#define bEmitWin16FrameRgn(pLocalDC, ihRgn, ihBrush, nWidth, nHeight) \
|
|
bW16Emit4(pLocalDC, META_FRAMEREGION, \
|
|
nWidth, nHeight, ihBrush, ihRgn)
|
|
|
|
#define bEmitWin16ExcludeClipRect(pLocalDC, xLeft, yTop, xRight, yBottom) \
|
|
bW16Emit4(pLocalDC, META_EXCLUDECLIPRECT, \
|
|
xLeft, yTop, xRight, yBottom)
|
|
|
|
#define bEmitWin16IntersectClipRect(pLocalDC, xLeft, yTop, xRight, yBottom)\
|
|
bW16Emit4(pLocalDC, META_INTERSECTCLIPRECT, \
|
|
xLeft, yTop, xRight, yBottom)
|
|
|
|
#define bEmitWin16SetPixel(pLocalDC, x, y, crColor) \
|
|
bW16Emit4(pLocalDC, META_SETPIXEL, x, y, \
|
|
HIWORD(crColor), LOWORD(crColor))
|
|
|
|
#define bEmitWin16ExtFloodFill(pLocalDC, x, y, crColor, iMode) \
|
|
bW16Emit5(pLocalDC, META_EXTFLOODFILL, x, y, \
|
|
HIWORD(crColor), LOWORD(crColor), iMode)
|
|
|
|
#define bEmitWin16Rectangle(pLocalDC, x1, y1, x2, y2) \
|
|
bW16Emit4(pLocalDC, META_RECTANGLE, x1, y1, x2, y2)
|
|
|
|
#define bEmitWin16Ellipse(pLocalDC, x1, y1, x2, y2) \
|
|
bW16Emit4(pLocalDC, META_ELLIPSE, x1, y1, x2, y2)
|
|
|
|
#define bEmitWin16RoundRect(pLocalDC, x1, y1, x2, y2, x3, y3) \
|
|
bW16Emit6(pLocalDC, META_ROUNDRECT, x1, y1, x2, y2, x3, y3)
|
|
|
|
#define bEmitWin16Arc(pLocalDC, x1, y1, x2, y2, x3, y3, x4, y4) \
|
|
bW16Emit8(pLocalDC, META_ARC, \
|
|
x1, y1, x2, y2, x3, y3, x4, y4)
|
|
|
|
#define bEmitWin16Chord(pLocalDC, x1, y1, x2, y2, x3, y3, x4, y4) \
|
|
bW16Emit8(pLocalDC, META_CHORD, \
|
|
x1, y1, x2, y2, x3, y3, x4, y4)
|
|
|
|
#define bEmitWin16Pie(pLocalDC, x1, y1, x2, y2, x3, y3, x4, y4) \
|
|
bW16Emit8(pLocalDC, META_PIE, \
|
|
x1, y1, x2, y2, x3, y3, x4, y4)
|
|
|
|
#define bEmitWin16BitBltNoSrc(pLocalDC, x, y, cx, cy, rop) \
|
|
bW16Emit9(pLocalDC, META_DIBBITBLT, \
|
|
x, y, cx, cy, 0, 0, 0, HIWORD(rop), LOWORD(rop))
|
|
|
|
#define bEmitWin16EmitSrcCopyComment(pLocalDC, code) \
|
|
bW16Emit5(pLocalDC, META_ESCAPE, code, HIWORD(msosignature),\
|
|
LOWORD(msosignature), 0x0006, MFCOMMENT)
|
|
|
|
BOOL bW16Emit0
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID
|
|
) ;
|
|
|
|
BOOL bW16Emit1
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1
|
|
) ;
|
|
|
|
BOOL bW16Emit2
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2
|
|
) ;
|
|
|
|
BOOL bW16Emit4
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2,
|
|
WORD x3,
|
|
WORD x4
|
|
) ;
|
|
|
|
BOOL bW16Emit5
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2,
|
|
WORD x3,
|
|
WORD x4,
|
|
WORD x5
|
|
) ;
|
|
|
|
BOOL bW16Emit6
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2,
|
|
WORD x3,
|
|
WORD x4,
|
|
WORD x5,
|
|
WORD x6
|
|
) ;
|
|
|
|
BOOL bW16Emit8
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2,
|
|
WORD x3,
|
|
WORD x4,
|
|
WORD x5,
|
|
WORD x6,
|
|
WORD x7,
|
|
WORD x8
|
|
) ;
|
|
|
|
BOOL bW16Emit9
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD RecordID,
|
|
WORD x1,
|
|
WORD x2,
|
|
WORD x3,
|
|
WORD x4,
|
|
WORD x5,
|
|
WORD x6,
|
|
WORD x7,
|
|
WORD x8,
|
|
WORD x9
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreateFontIndirect
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
LPWIN16LOGFONT lpWin16LogFont
|
|
) ;
|
|
|
|
BOOL bEmitWin16Poly
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
LPPOINTS ppt,
|
|
SHORT cpt,
|
|
WORD metaType
|
|
) ;
|
|
|
|
BOOL bEmitWin16PolyPolygon
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
PPOINTS ppt,
|
|
PWORD pcpt,
|
|
WORD cpt,
|
|
WORD ccpt
|
|
) ;
|
|
|
|
BOOL bEmitWin16StretchBlt
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
SHORT x,
|
|
SHORT y,
|
|
SHORT cx,
|
|
SHORT cy,
|
|
SHORT xSrc,
|
|
SHORT ySrc,
|
|
SHORT cxSrc,
|
|
SHORT cySrc,
|
|
DWORD rop,
|
|
PBITMAPINFO lpbmi,
|
|
DWORD cbbmi,
|
|
PBYTE lpBits,
|
|
DWORD cbBits
|
|
) ;
|
|
|
|
BOOL bEmitWin16ExtTextOut
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
SHORT x,
|
|
SHORT y,
|
|
WORD fwOpts,
|
|
PRECTS prcts,
|
|
PSTR ach,
|
|
SHORT nCount,
|
|
PWORD lpDx
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreateRegion
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
DWORD cbRgn,
|
|
PVOID pRgn
|
|
) ;
|
|
|
|
BOOL bEmitWin16SetPaletteEntries
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
DWORD iStart,
|
|
DWORD cEntries,
|
|
LPPALETTEENTRY pPalEntries
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreatePalette
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
LPLOGPALETTE lpLogPal
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreateBrushIndirect
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
LPWIN16LOGBRUSH lpLogBrush16
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreateDIBPatternBrush
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
PBITMAPINFO pBitmapInfo,
|
|
DWORD cbBitmapInfo,
|
|
PBYTE pBits,
|
|
DWORD cbBits,
|
|
WORD iUsage,
|
|
WORD iType
|
|
) ;
|
|
|
|
BOOL bEmitWin16CreatePen
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
WORD iPenStyle,
|
|
PPOINTS pptsWidth,
|
|
COLORREF crColor
|
|
) ;
|
|
|
|
BOOL bEmitWin16Escape
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
SHORT wEscape,
|
|
SHORT wCount,
|
|
LPSTR lpInData,
|
|
LPSTR lpOutData
|
|
) ;
|
|
|
|
BOOL bEmitWin16EscapeEnhMetaFile
|
|
(
|
|
PLOCALDC pLocalDC,
|
|
PMETARECORD_ESCAPE pmfeEnhMF,
|
|
LPBYTE lpEmfData
|
|
) ;
|
|
#endif // _WIN16_MF3216_
|