Implemented Unplugged GDI32 code
[reactos.git] / reactos / lib / user32 / misc / devmode.c
1 #include <string.h>
2 #include <windows.h>
3 #include <user32.h>
4
5 void
6 USER32_DevModeA2W ( LPDEVMODEW pW, const LPDEVMODEA pA )
7 {
8 #define SIZEOF_DEVMODEA_300 124
9 #define SIZEOF_DEVMODEA_400 148
10 #define SIZEOF_DEVMODEA_500 156
11 #define SIZEOF_DEVMODEW_300 188
12 #define SIZEOF_DEVMODEW_400 212
13 #define SIZEOF_DEVMODEW_500 220
14
15 #define COPYS(f,len) MultiByteToWideChar ( CP_THREAD_ACP, 0, pA->f, len, pW->f, len )
16 #define COPYN(f) pW->f = pA->f
17 memset ( pW, 0, sizeof(DEVMODEW) );
18 COPYS(dmDeviceName, CCHDEVICENAME );
19 COPYN(dmSpecVersion);
20 COPYN(dmDriverVersion);
21 switch ( pA->dmSize )
22 {
23 case SIZEOF_DEVMODEA_300:
24 pW->dmSize = SIZEOF_DEVMODEW_300;
25 break;
26 case SIZEOF_DEVMODEA_400:
27 pW->dmSize = SIZEOF_DEVMODEW_400;
28 break;
29 case SIZEOF_DEVMODEA_500:
30 default: /* FIXME what to do??? */
31 pW->dmSize = SIZEOF_DEVMODEW_500;
32 break;
33 }
34 COPYN(dmDriverExtra);
35 COPYN(dmFields);
36 COPYN(dmPosition.x);
37 COPYN(dmPosition.y);
38 COPYN(dmScale);
39 COPYN(dmCopies);
40 COPYN(dmDefaultSource);
41 COPYN(dmPrintQuality);
42 COPYN(dmColor);
43 COPYN(dmDuplex);
44 COPYN(dmYResolution);
45 COPYN(dmTTOption);
46 COPYN(dmCollate);
47 COPYS(dmFormName,CCHFORMNAME);
48 COPYN(dmLogPixels);
49 COPYN(dmBitsPerPel);
50 COPYN(dmPelsWidth);
51 COPYN(dmPelsHeight);
52 COPYN(dmDisplayFlags); // aka dmNup
53 COPYN(dmDisplayFrequency);
54
55 if ( pA->dmSize <= SIZEOF_DEVMODEA_300 )
56 return; // we're done with 0x300 fields
57
58 COPYN(dmICMMethod);
59 COPYN(dmICMIntent);
60 COPYN(dmMediaType);
61 COPYN(dmDitherType);
62 COPYN(dmReserved1);
63 COPYN(dmReserved2);
64
65 if ( pA->dmSize <= SIZEOF_DEVMODEA_400 )
66 return; // we're done with 0x400 fields
67
68 COPYN(dmPanningWidth);
69 COPYN(dmPanningHeight);
70
71 return;
72
73 #undef COPYN
74 #undef COPYS
75
76 #undef SIZEOF_DEVMODEA_300
77 #undef SIZEOF_DEVMODEA_400
78 #undef SIZEOF_DEVMODEA_500
79 #undef SIZEOF_DEVMODEW_300
80 #undef SIZEOF_DEVMODEW_400
81 #undef SIZEOF_DEVMODEW_500
82 }