Changeset 1954


Ignore:
Timestamp:
Dec 3, 1999, 12:55:45 PM (25 years ago)
Author:
sandervl
Message:

EB's Fixes for CreateDCW & CreateICW

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/gdi32/gdi32.cpp

    r1948 r1954  
    1 /* $Id: gdi32.cpp,v 1.20 1999-12-02 18:46:21 achimha Exp $ */
     1/* $Id: gdi32.cpp,v 1.21 1999-12-03 11:55:45 sandervl Exp $ */
    22
    33/*
     
    282282{
    283283    dprintf(("GDI32: CreateDIBitmap\n"));
     284//TEMPORARY HACK TO PREVENT CRASH IN OPEN32 (WSeB GA)
     285    if(arg2->biHeight < 0) {
     286        ((BITMAPINFOHEADER *)arg2)->biHeight = -arg2->biHeight;
     287    }
    284288    return O32_CreateDIBitmap(arg1, arg2, arg3, arg4, arg5, arg6);
    285289}
     
    667671HDC WIN32API CreateDCW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)
    668672{
     673    char *astring4, *astring5;
     674
    669675    char *astring1 = UnicodeToAsciiString((LPWSTR)arg1);
    670676    char *astring2 = UnicodeToAsciiString((LPWSTR)arg2);
    671677    char *astring3 = UnicodeToAsciiString((LPWSTR)arg3);
    672     char *astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));
    673     char *astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));
     678    if(arg4)
     679    {
     680      astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));
     681      astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));
     682    }
    674683
    675684    HDC   rc;
     
    678687    dprintf(("GDI32: CreateDCW"));
    679688
    680     strcpy((char*)devmode.dmDeviceName, astring4);
    681     strcpy((char*)devmode.dmFormName, astring5);
    682 
    683     devmode.dmSpecVersion      = arg4->dmSpecVersion;
    684     devmode.dmDriverVersion    = arg4->dmDriverVersion;
    685     devmode.dmSize             = arg4->dmSize;
    686     devmode.dmDriverExtra      = arg4->dmDriverExtra;
    687     devmode.dmFields           = arg4->dmFields;
    688     devmode.dmOrientation      = arg4->dmOrientation;
    689     devmode.dmPaperSize        = arg4->dmPaperSize;
    690     devmode.dmPaperLength      = arg4->dmPaperLength;
    691     devmode.dmPaperWidth       = arg4->dmPaperWidth;
    692     devmode.dmScale            = arg4->dmScale;
    693     devmode.dmCopies           = arg4->dmCopies;
    694     devmode.dmDefaultSource    = arg4->dmDefaultSource;
    695     devmode.dmPrintQuality     = arg4->dmPrintQuality;
    696     devmode.dmColor            = arg4->dmColor;
    697     devmode.dmDuplex           = arg4->dmDuplex;
    698     devmode.dmYResolution      = arg4->dmYResolution;
    699     devmode.dmTTOption         = arg4->dmTTOption;
    700     devmode.dmCollate          = arg4->dmCollate;
    701     devmode.dmLogPixels        = arg4->dmLogPixels;
    702     devmode.dmBitsPerPel       = arg4->dmBitsPerPel;
    703     devmode.dmPelsWidth        = arg4->dmPelsWidth;
    704     devmode.dmPelsHeight       = arg4->dmPelsHeight;
    705     devmode.dmDisplayFlags     = arg4->dmDisplayFlags;
    706     devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;
    707     devmode.dmICMMethod        = arg4->dmICMMethod;
    708     devmode.dmICMIntent        = arg4->dmICMIntent;
    709     devmode.dmMediaType        = arg4->dmMediaType;
    710     devmode.dmDitherType       = arg4->dmDitherType;
    711     devmode.dmReserved1        = arg4->dmReserved1;
    712     devmode.dmReserved2        = arg4->dmReserved2;
    713 
    714     rc = O32_CreateDC(astring1,astring2,astring3,&devmode);
     689    if(arg4)
     690    {
     691      strcpy((char*)devmode.dmDeviceName, astring4);
     692      strcpy((char*)devmode.dmFormName, astring5);
     693
     694      devmode.dmSpecVersion      = arg4->dmSpecVersion;
     695      devmode.dmDriverVersion    = arg4->dmDriverVersion;
     696      devmode.dmSize             = arg4->dmSize;
     697      devmode.dmDriverExtra      = arg4->dmDriverExtra;
     698      devmode.dmFields           = arg4->dmFields;
     699      devmode.dmOrientation      = arg4->dmOrientation;
     700      devmode.dmPaperSize        = arg4->dmPaperSize;
     701      devmode.dmPaperLength      = arg4->dmPaperLength;
     702      devmode.dmPaperWidth       = arg4->dmPaperWidth;
     703      devmode.dmScale            = arg4->dmScale;
     704      devmode.dmCopies           = arg4->dmCopies;
     705      devmode.dmDefaultSource    = arg4->dmDefaultSource;
     706      devmode.dmPrintQuality     = arg4->dmPrintQuality;
     707      devmode.dmColor            = arg4->dmColor;
     708      devmode.dmDuplex           = arg4->dmDuplex;
     709      devmode.dmYResolution      = arg4->dmYResolution;
     710      devmode.dmTTOption         = arg4->dmTTOption;
     711      devmode.dmCollate          = arg4->dmCollate;
     712      devmode.dmLogPixels        = arg4->dmLogPixels;
     713      devmode.dmBitsPerPel       = arg4->dmBitsPerPel;
     714      devmode.dmPelsWidth        = arg4->dmPelsWidth;
     715      devmode.dmPelsHeight       = arg4->dmPelsHeight;
     716      devmode.dmDisplayFlags     = arg4->dmDisplayFlags;
     717      devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;
     718      devmode.dmICMMethod        = arg4->dmICMMethod;
     719      devmode.dmICMIntent        = arg4->dmICMIntent;
     720      devmode.dmMediaType        = arg4->dmMediaType;
     721      devmode.dmDitherType       = arg4->dmDitherType;
     722      devmode.dmReserved1        = arg4->dmReserved1;
     723      devmode.dmReserved2        = arg4->dmReserved2;
     724
     725      rc = O32_CreateDC(astring1,astring2,astring3,&devmode);
     726    }
     727    else
     728      rc = O32_CreateDC(astring1,astring2,astring3, NULL);
     729
    715730    FreeAsciiString(astring1);
    716731    FreeAsciiString(astring2);
    717732    FreeAsciiString(astring3);
    718     FreeAsciiString(astring4);
    719     FreeAsciiString(astring5);
     733    if(arg4)
     734    {
     735      FreeAsciiString(astring4);
     736      FreeAsciiString(astring5);
     737    }
    720738
    721739    return rc;
     
    771789HDC WIN32API CreateICW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)
    772790{
     791    char *astring4, *astring5;
     792
    773793    char *astring1 = UnicodeToAsciiString((LPWSTR)arg1);
    774794    char *astring2 = UnicodeToAsciiString((LPWSTR)arg2);
    775795    char *astring3 = UnicodeToAsciiString((LPWSTR)arg3);
    776     char *astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));
    777     char *astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));
     796    if(arg4)
     797    {
     798      astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));
     799      astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));
     800    }
    778801
    779802    HDC   rc;
     
    782805    dprintf(("GDI32: CreateICW"));
    783806
    784     strcpy((char*)devmode.dmDeviceName, astring4);
    785     strcpy((char*)devmode.dmFormName, astring5);
    786 
    787     devmode.dmSpecVersion      = arg4->dmSpecVersion;
    788     devmode.dmDriverVersion    = arg4->dmDriverVersion;
    789     devmode.dmSize             = arg4->dmSize;
    790     devmode.dmDriverExtra      = arg4->dmDriverExtra;
    791     devmode.dmFields           = arg4->dmFields;
    792     devmode.dmOrientation      = arg4->dmOrientation;
    793     devmode.dmPaperSize        = arg4->dmPaperSize;
    794     devmode.dmPaperLength      = arg4->dmPaperLength;
    795     devmode.dmPaperWidth       = arg4->dmPaperWidth;
    796     devmode.dmScale            = arg4->dmScale;
    797     devmode.dmCopies           = arg4->dmCopies;
    798     devmode.dmDefaultSource    = arg4->dmDefaultSource;
    799     devmode.dmPrintQuality     = arg4->dmPrintQuality;
    800     devmode.dmColor            = arg4->dmColor;
    801     devmode.dmDuplex           = arg4->dmDuplex;
    802     devmode.dmYResolution      = arg4->dmYResolution;
    803     devmode.dmTTOption         = arg4->dmTTOption;
    804     devmode.dmCollate          = arg4->dmCollate;
    805     devmode.dmLogPixels        = arg4->dmLogPixels;
    806     devmode.dmBitsPerPel       = arg4->dmBitsPerPel;
    807     devmode.dmPelsWidth        = arg4->dmPelsWidth;
    808     devmode.dmPelsHeight       = arg4->dmPelsHeight;
    809     devmode.dmDisplayFlags     = arg4->dmDisplayFlags;
    810     devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;
    811     devmode.dmICMMethod        = arg4->dmICMMethod;
    812     devmode.dmICMIntent        = arg4->dmICMIntent;
    813     devmode.dmMediaType        = arg4->dmMediaType;
    814     devmode.dmDitherType       = arg4->dmDitherType;
    815     devmode.dmReserved1        = arg4->dmReserved1;
    816     devmode.dmReserved2        = arg4->dmReserved2;
    817 
    818     rc = O32_CreateIC(astring1,astring2,astring3,&devmode);
     807    if(arg4)
     808    {
     809      strcpy((char*)devmode.dmDeviceName, astring4);
     810      strcpy((char*)devmode.dmFormName, astring5);
     811
     812      devmode.dmSpecVersion      = arg4->dmSpecVersion;
     813      devmode.dmDriverVersion    = arg4->dmDriverVersion;
     814      devmode.dmSize             = arg4->dmSize;
     815      devmode.dmDriverExtra      = arg4->dmDriverExtra;
     816      devmode.dmFields           = arg4->dmFields;
     817      devmode.dmOrientation      = arg4->dmOrientation;
     818      devmode.dmPaperSize        = arg4->dmPaperSize;
     819      devmode.dmPaperLength      = arg4->dmPaperLength;
     820      devmode.dmPaperWidth       = arg4->dmPaperWidth;
     821      devmode.dmScale            = arg4->dmScale;
     822      devmode.dmCopies           = arg4->dmCopies;
     823      devmode.dmDefaultSource    = arg4->dmDefaultSource;
     824      devmode.dmPrintQuality     = arg4->dmPrintQuality;
     825      devmode.dmColor            = arg4->dmColor;
     826      devmode.dmDuplex           = arg4->dmDuplex;
     827      devmode.dmYResolution      = arg4->dmYResolution;
     828      devmode.dmTTOption         = arg4->dmTTOption;
     829      devmode.dmCollate          = arg4->dmCollate;
     830      devmode.dmLogPixels        = arg4->dmLogPixels;
     831      devmode.dmBitsPerPel       = arg4->dmBitsPerPel;
     832      devmode.dmPelsWidth        = arg4->dmPelsWidth;
     833      devmode.dmPelsHeight       = arg4->dmPelsHeight;
     834      devmode.dmDisplayFlags     = arg4->dmDisplayFlags;
     835      devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;
     836      devmode.dmICMMethod        = arg4->dmICMMethod;
     837      devmode.dmICMIntent        = arg4->dmICMIntent;
     838      devmode.dmMediaType        = arg4->dmMediaType;
     839      devmode.dmDitherType       = arg4->dmDitherType;
     840      devmode.dmReserved1        = arg4->dmReserved1;
     841      devmode.dmReserved2        = arg4->dmReserved2;
     842
     843      rc = O32_CreateIC(astring1,astring2,astring3,&devmode);
     844    }
     845    else
     846      rc = O32_CreateIC(astring1,astring2,astring3, NULL);
     847
    819848    FreeAsciiString(astring1);
    820849    FreeAsciiString(astring2);
    821850    FreeAsciiString(astring3);
    822     FreeAsciiString(astring4);
    823     FreeAsciiString(astring5);
     851    if(arg4)
     852    {
     853      FreeAsciiString(astring4);
     854      FreeAsciiString(astring5);
     855    }
     856
    824857    return rc;
    825858}
Note: See TracChangeset for help on using the changeset viewer.