|
|
1.1 root 1: /****************************** MODULE HEADER *******************************
2: * halftone.c
3: * Deals with the halftoning UI stuff. Basically packages up the
4: * data required and calls the halftone DLL.
5: *
6: *
7: * Copyright (C) 1992, Microsoft Corporation.
8: *
9: *****************************************************************************/
10:
11: #define _HTUI_APIS_
12:
13:
14: #include <stddef.h>
15: #include <windows.h>
16: #include <winddi.h> /* Halftone structure types */
17: #include <winspool.h> /* For Get/SetPrinterData() */
18: #include <halftone.h>
19: #include <stdlib.h>
20:
21: extern
22: DWORD
23: PickDefaultHTPatSize(
24: DWORD xDPI,
25: DWORD yDPI,
26: BOOL HTFormat8BPP
27: );
28:
29: extern
30: LONG
31: APIENTRY
32: HTUI_ColorAdjustment(
33: LPSTR pCallerTitle,
34: HANDLE hDefDIB,
35: LPSTR pDefDIBTitle,
36: COLORADJUSTMENT *pColorAdjustment,
37: BOOL ShowMonochromeOnly,
38: BOOL UpdatePermission
39: );
40:
41:
42:
43: /*
44: * Local variables private to us.
45: */
46:
47: static int HTUIFlags = 0;
48:
49: #define HTUI_CA_CHANGE 0x0001
50: #define HTUI_DEV_CHANGE 0x0010
51:
52:
53: //
54: // THIS MUST MOVE to PPD at later time so that each printer can set their
55: // own data
56: //
57:
58: static DEVHTINFO DefDevHTInfo = {
59:
60: HT_FLAG_HAS_BLACK_DYE,
61: HT_PATSIZE_6x6_M,
62: 0, // fill in later
63:
64: {
65: { 6810, 3050, 0 }, // xr, yr, Yr
66: { 2260, 6550, 0 }, // xg, yg, Yg
67: { 1810, 500, 0 }, // xb, yb, Yb
68: { 2000, 2450, 0 }, // xc, yc, Yc
69: { 5210, 2100, 0 }, // xm, ym, Ym
70: { 4750, 5100, 0 }, // xy, yy, Yy
71: { 3324, 3474, 10000 }, // xw, yw, Yw
72:
73: 10000, // R gamma
74: 10000, // G gamma
75: 10000, // B gamma
76:
77: 1422, 952, // M/C, Y/C
78: 787, 495, // C/M, Y/M
79: 324, 248 // C/Y, M/Y
80: }
81: };
82:
83: static DEVHTINFO CurDevHTInfo;
84: static DEVHTADJDATA DevHTAdjData;
85:
86:
87:
88:
89:
90: void
91: vDoColorAdjUI(
92: LPSTR pDeviceName,
93: COLORADJUSTMENT *pcoloradj,
94: BOOL ColorAble,
95: BOOL bUpdate
96: )
97:
98: /*++
99:
100: Routine Description:
101:
102: This function let user adjust default printer's color adjustment
103:
104: Arguments:
105:
106: pDeviceName - Ansi version of the device name
107:
108: pcoloradj - Pointer to COLORADJUSTMENT structure.
109:
110: ColorDevice - TRUE if device mode now can do color
111:
112: Return Value:
113:
114: VOID
115:
116:
117: Author:
118:
119: 27-Jan-1993 Wed 12:55:29 created -by- Daniel Chou (danielc)
120:
121:
122: Revision History:
123:
124:
125: --*/
126:
127: {
128:
129: if (HTUI_ColorAdjustment(pDeviceName,
130: NULL, // no dib
131: NULL,
132: pcoloradj,
133: !ColorAble,
134: bUpdate) > 0) {
135:
136: HTUIFlags |= HTUI_CA_CHANGE;
137: }
138: }
139:
140:
141:
142: void
143: vDoDeviceHTDataUI(
144: LPSTR pDeviceName,
145: BOOL ColorDevice,
146: BOOL bUpdate
147: )
148:
149: /*++
150:
151: Routine Description:
152:
153: This function let user adjust default printer's color adjustment
154:
155: Arguments:
156:
157: hPrinter - spooler handle of the printer interest
158:
159: pDeviceName - Ansi version of the device name
160:
161: Return Value:
162:
163: VOID
164:
165:
166: Author:
167:
168: 27-Jan-1993 Wed 12:55:29 created -by- Daniel Chou (danielc)
169:
170:
171: Revision History:
172:
173:
174: --*/
175:
176: {
177: DEVHTADJDATA CurDevHTAdjData;
178:
179: DevHTAdjData.DeviceFlags = (ColorDevice) ? DEVHTADJF_COLOR_DEVICE : 0;
180: CurDevHTAdjData = DevHTAdjData;
181:
182: if (!bUpdate) {
183:
184: CurDevHTAdjData.pDefHTInfo = CurDevHTAdjData.pAdjHTInfo;
185: CurDevHTAdjData.pAdjHTInfo = NULL;
186: }
187:
188: if (HTUI_DeviceColorAdjustment(pDeviceName,
189: &CurDevHTAdjData) > 0) {
190:
191: HTUIFlags |= HTUI_DEV_CHANGE; /* Data has changed */
192: }
193: }
194:
195:
196: void
197: vGetDeviceHTData(
198: HANDLE hPrinter,
199: PDEVHTINFO pDefaultDevHTInfo
200: )
201:
202: /*++
203:
204: Routine Description:
205:
206: This function read the current default coloradjustment from registry
207:
208: Arguments:
209:
210: hPrinter - Current printer handle
211:
212:
213: Return Value:
214:
215: VOID
216:
217: Author:
218:
219: 27-Jan-1993 Wed 13:00:13 created -by- Daniel Chou (danielc)
220:
221:
222: Revision History:
223:
224:
225: --*/
226:
227: {
228: DWORD dwType;
229: DWORD cbNeeded;
230:
231:
232: if (pDefaultDevHTInfo) {
233:
234: DefDevHTInfo = *pDefaultDevHTInfo;
235: } else {
236: //!!! Should pass in the default printer resolution here rather than 300!!!
237:
238: DefDevHTInfo.HTPatternSize = PickDefaultHTPatSize(300, 300, FALSE);
239: }
240:
241: dwType = REG_BINARY;
242:
243: if ((GetPrinterData(hPrinter,
244: REGKEY_CUR_DEVHTINFO,
245: &dwType,
246: (BYTE *)&CurDevHTInfo,
247: sizeof(DEVHTINFO),
248: &cbNeeded) != NO_ERROR) ||
249: (cbNeeded != sizeof(DEVHTINFO))) {
250:
251: CurDevHTInfo = DefDevHTInfo;
252: HTUIFlags |= HTUI_DEV_CHANGE;
253: }
254:
255: DevHTAdjData.DeviceXDPI =
256: DevHTAdjData.DeviceYDPI = 300;
257: DevHTAdjData.pDefHTInfo = &DefDevHTInfo;
258: DevHTAdjData.pAdjHTInfo = &CurDevHTInfo;
259: }
260:
261:
262:
263: BOOL
264: bSaveDeviceHTData(
265: HANDLE hPrinter,
266: BOOL bForce // TRUE if always update
267: )
268: /*++
269:
270: Routine Description:
271:
272: This function save current default color adjustment
273:
274:
275: Arguments:
276:
277: hPrinter - The current printer handle
278:
279: bForce - TRUE if always saved
280:
281: Return Value:
282:
283: BOOLEAN to indicate the result
284:
285: Author:
286:
287: 27-Jan-1993 Wed 13:02:46 created -by- Daniel Chou (danielc)
288:
289:
290: Revision History:
291:
292:
293: --*/
294:
295: {
296: BOOL Ok = TRUE;
297:
298: //
299: // First question is whether to save the data!
300: //
301:
302: if ((HTUIFlags & HTUI_DEV_CHANGE) || bForce) {
303:
304: if (Ok = (SetPrinterData(hPrinter,
305: REGKEY_CUR_DEVHTINFO,
306: REG_BINARY,
307: (BYTE *)&CurDevHTInfo,
308: sizeof(DEVHTINFO)) == NO_ERROR)) {
309:
310: HTUIFlags &= ~HTUI_DEV_CHANGE;
311: }
312: }
313:
314: return(Ok);
315: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.