X-Git-Url: http://git.jankratochvil.net/?p=reactos.git;a=blobdiff_plain;f=lib%2Frosrtl%2Fmisc%2Fdevmode.c;fp=lib%2Frosrtl%2Fmisc%2Fdevmode.c;h=70c51b5f604156f78219537484609a987a557af9;hp=0000000000000000000000000000000000000000;hb=a3df8bf1429570e0bd6c6428f6ed80073578cf4b;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605 diff --git a/lib/rosrtl/misc/devmode.c b/lib/rosrtl/misc/devmode.c new file mode 100644 index 0000000..70c51b5 --- /dev/null +++ b/lib/rosrtl/misc/devmode.c @@ -0,0 +1,82 @@ +#include +#include +#include + +void +RosRtlDevModeA2W ( LPDEVMODEW pW, const LPDEVMODEA pA ) +{ +#define SIZEOF_DEVMODEA_300 124 +#define SIZEOF_DEVMODEA_400 148 +#define SIZEOF_DEVMODEA_500 156 +#define SIZEOF_DEVMODEW_300 188 +#define SIZEOF_DEVMODEW_400 212 +#define SIZEOF_DEVMODEW_500 220 + +#define COPYS(f,len) MultiByteToWideChar ( CP_THREAD_ACP, 0, pA->f, len, pW->f, len ) +#define COPYN(f) pW->f = pA->f + memset ( pW, 0, sizeof(DEVMODEW) ); + COPYS(dmDeviceName, CCHDEVICENAME ); + COPYN(dmSpecVersion); + COPYN(dmDriverVersion); + switch ( pA->dmSize ) + { + case SIZEOF_DEVMODEA_300: + pW->dmSize = SIZEOF_DEVMODEW_300; + break; + case SIZEOF_DEVMODEA_400: + pW->dmSize = SIZEOF_DEVMODEW_400; + break; + case SIZEOF_DEVMODEA_500: + default: /* FIXME what to do??? */ + pW->dmSize = SIZEOF_DEVMODEW_500; + break; + } + COPYN(dmDriverExtra); + COPYN(dmFields); + COPYN(dmPosition.x); + COPYN(dmPosition.y); + COPYN(dmScale); + COPYN(dmCopies); + COPYN(dmDefaultSource); + COPYN(dmPrintQuality); + COPYN(dmColor); + COPYN(dmDuplex); + COPYN(dmYResolution); + COPYN(dmTTOption); + COPYN(dmCollate); + COPYS(dmFormName,CCHFORMNAME); + COPYN(dmLogPixels); + COPYN(dmBitsPerPel); + COPYN(dmPelsWidth); + COPYN(dmPelsHeight); + COPYN(dmDisplayFlags); // aka dmNup + COPYN(dmDisplayFrequency); + + if ( pA->dmSize <= SIZEOF_DEVMODEA_300 ) + return; // we're done with 0x300 fields + + COPYN(dmICMMethod); + COPYN(dmICMIntent); + COPYN(dmMediaType); + COPYN(dmDitherType); + COPYN(dmReserved1); + COPYN(dmReserved2); + + if ( pA->dmSize <= SIZEOF_DEVMODEA_400 ) + return; // we're done with 0x400 fields + + COPYN(dmPanningWidth); + COPYN(dmPanningHeight); + + return; + +#undef COPYN +#undef COPYS + +#undef SIZEOF_DEVMODEA_300 +#undef SIZEOF_DEVMODEA_400 +#undef SIZEOF_DEVMODEA_500 +#undef SIZEOF_DEVMODEW_300 +#undef SIZEOF_DEVMODEW_400 +#undef SIZEOF_DEVMODEW_500 +}