|
|
1.1 root 1:
2: #define PS_RESOLUTION 72L
3: #define PS_FIX_MASK 0x0FF
4:
5: #define LTOPSFX(x) ((x)<<8)
6: #define PSFXTOL(x) ((x)>>8)
7: #define ETOPSFX(x) ((LONG)((x) * 256.0))
8: #define ETOL(x) ((LONG)((x)))
9: //#define LANDSCAPE_270_ROTATE
10:
11: // a couple of macros which take device coordinates (LONG) and
12: // return user coordinates (PS_FIX), or 72 dpi.
13:
14: #define X72DPI(x) \
15: (LTOPSFX(pdev->CurForm.imagearea.left) + \
16: ((LTOPSFX((x) * PS_RESOLUTION) + \
17: (pdev->psdm.dm.dmPrintQuality / 2)) / \
18: pdev->psdm.dm.dmPrintQuality))
19:
20: #define Y72DPI(y) \
21: (LTOPSFX(pdev->CurForm.imagearea.top) - \
22: ((LTOPSFX((y) * PS_RESOLUTION) + \
23: (pdev->psdm.dm.dmPrintQuality / 2)) / \
24: pdev->psdm.dm.dmPrintQuality))
25:
26: // a couple of macros which take device coordinates in FLOAT and
27: // return PostScript user coordinates in FLOAT, or 72.0f dpi.
28:
29: #define XE72DPI(x) ((FLOAT) pdev->CurForm.imagearea.left + \
30: (((x) * (FLOAT) PS_RESOLUTION + \
31: (FLOAT) pdev->psdm.dm.dmPrintQuality / 2.0f) / \
32: (FLOAT) pdev->psdm.dm.dmPrintQuality))
33:
34: #define YE72DPI(y) \
35: ((FLOAT) pdev->CurForm.imagearea.top - \
36: (((y) * (FLOAT) PS_RESOLUTION + \
37: (FLOAT) pdev->psdm.dm.dmPrintQuality / 2) / \
38: (FLOAT) pdev->psdm.dm.dmPrintQuality))
39:
40: // a macro which translates from device coordinates to user coordinates,
41: // with no flipping or scaling.
42:
43: #define DEVICETOUSER(x) (((x) << 4) * PS_RESOLUTION) / pdev->psdm.dm.dmPrintQuality
44:
45: #define PS_FIX_RESOLUTION LTOPSFX(PS_RESOLUTION)
46: #define PSFXONE LTOPSFX(1L)
47: #define PSFXONEHALF PSFXONE >> 1
48: #define PS_FIX_INTEGER_MASK 0xFFFFFF00
49:
50: #define FIX_ONE 0x00000010
51: #define FIX_ONE_HALF 0x00000008
52: #define FIX_INTEGER_MASK 0xFFFFFFF0
53:
54: #define ROUNDPSFX(x) (((x) + PSFXONEHALF) & PS_FIX_INTEGER_MASK)
55: #define ROUNDFIX(x) (((x) + FIX_ONE_HALF) & FIX_INTEGER_MASK)
56:
57: typedef struct
58: {
59: PS_FIX xLeft;
60: PS_FIX yTop;
61: PS_FIX xRight;
62: PS_FIX yBottom;
63: } RECTPSFX, *PRECTPSFX;
64:
65: typedef struct
66: {
67: PS_FIX x;
68: PS_FIX y;
69: } POINTPSFX, *PPOINTPSFX;
70:
71: // PS_FIX percentages used in color mapping to gray scales.
72:
73: #define PSFXPERCENT_RED 0x04D // 30.078%
74: #define PSFXPERCENT_GREEN 0x097 // 58.984%
75: #define PSFXPERCENT_BLUE 0x01C // 10.938%
76:
77: #define NOT_SOLID_COLOR 0xFFFFFFFF
78:
79: #define RGB_BLACK 0x00000000
80: #define RGB_BLUE 0x000000FF
81: #define RGB_GREEN 0x0000FF00
82: #define RGB_CYAN 0x0000FFFF
83: #define RGB_RED 0x00FF0000
84: #define RGB_MAGENTA 0x00FF00FF
85: #define RGB_YELLOW 0x00FFFF00
86: #define RGB_WHITE 0x00FFFFFF
87: #define RGB_GRAY 0x007F7F7F
88:
89: // postscript line join defines.
90:
91: #define PSCRIPT_JOIN_MITER 0
92: #define PSCRIPT_JOIN_ROUND 1
93: #define PSCRIPT_JOIN_BEVEL 2
94:
95: // postscript line end cap defines.
96:
97: #define PSCRIPT_ENDCAP_BUTT 0
98: #define PSCRIPT_ENDCAP_ROUND 1
99: #define PSCRIPT_ENDCAP_SQUARE 2
100:
101: typedef struct
102: {
103: BYTE bgrBlue;
104: BYTE bgrGreen;
105: BYTE bgrRed;
106: BYTE bgrFlags;
107: } BGR_PAL_ENTRY, *PBGR_PAL_ENTRY;
108:
109: #ifdef INDEX_PAL
110: VOID ps_setrgbcolor(PDEVDATA, PALETTEENTRY *);
111: PS_FIX psfxRGBtoGray(PALETTEENTRY *);
112: #else
113: VOID ps_setrgbcolor(PDEVDATA, BGR_PAL_ENTRY *);
114: PS_FIX psfxRGBtoGray(BGR_PAL_ENTRY *);
115: #endif
116: VOID ps_newpath(PDEVDATA);
117: BOOL ps_save(PDEVDATA, BOOL);
118: BOOL ps_restore(PDEVDATA, BOOL);
119: VOID ps_clip(PDEVDATA, BOOL);
120: VOID ps_box(PDEVDATA, PRECTL);
121: VOID ps_moveto(PDEVDATA, PPOINTL);
122: VOID ps_showpage(PDEVDATA);
123: VOID init_cgs(PDEVDATA);
124: BOOL ps_patfill(PDEVDATA, SURFOBJ *, FLONG, BRUSHOBJ *, PPOINTL, MIX, RECTL *, BOOL, BOOL);
125: VOID ps_stroke(PDEVDATA, BRUSHOBJ *, PPOINTL);
126: VOID ps_lineto(PDEVDATA, PPOINTL);
127: VOID ps_curveto(PDEVDATA, PPOINTL, PPOINTL, PPOINTL);
128: VOID ps_fill(PDEVDATA, FLONG);
129: VOID ps_closepath(PDEVDATA);
130: BOOL ps_setlineattrs(PDEVDATA, LINEATTRS *, XFORMOBJ *);
131: VOID ps_geolinexform(PDEVDATA, LINEATTRS *, XFORMOBJ *);
132: VOID ps_begin_eps(PDEVDATA);
133: VOID ps_end_eps(PDEVDATA);
134:
135: VOID ps_setlinewidth(PDEVDATA, PS_FIX);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.