|
|
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.