Changeset 10374 for trunk/src/gdi32/gdi32.cpp
- Timestamp:
- Jan 11, 2004, 12:43:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gdi32/gdi32.cpp
r10349 r10374 1 /* $Id: gdi32.cpp,v 1.9 0 2003-12-01 13:27:38sandervl Exp $ */1 /* $Id: gdi32.cpp,v 1.91 2004-01-11 11:42:15 sandervl Exp $ */ 2 2 3 3 /* … … 27 27 #include <stats.h> 28 28 #include <objhandle.h> 29 #include <winspool.h> 29 30 30 31 #define DBG_LOCALLOG DBG_gdi32 … … 33 34 ODINDEBUGCHANNEL(GDI32-GDI32) 34 35 36 //****************************************************************************** 37 //****************************************************************************** 38 BOOL WIN32API GdiFlush() 39 { 40 //NOP: DIB synchronization is done using exceptions 41 return TRUE; 42 } 35 43 //****************************************************************************** 36 44 //****************************************************************************** … … 78 86 ret = O32_InvertRect(hDC,lprc); 79 87 DIBSECTION_MARK_INVALID(hDC); 88 return ret; 89 } 90 //****************************************************************************** 91 //****************************************************************************** 92 BOOL WIN32API StrokeAndFillPath(HDC hdc) 93 { 94 DIBSECTION_CHECK_IF_DIRTY(hdc); 95 BOOL ret = O32_StrokeAndFillPath(hdc); 96 DIBSECTION_MARK_INVALID(hdc); 97 return ret; 98 } 99 //****************************************************************************** 100 //****************************************************************************** 101 BOOL WIN32API StrokePath(HDC hdc) 102 { 103 DIBSECTION_CHECK_IF_DIRTY(hdc); 104 BOOL ret = O32_StrokePath(hdc); 105 DIBSECTION_MARK_INVALID(hdc); 80 106 return ret; 81 107 } … … 254 280 //****************************************************************************** 255 281 //****************************************************************************** 256 HDC WIN32API CreateCompatibleDC( HDC hdc)257 {258 HDC newHdc;259 260 newHdc = O32_CreateCompatibleDC(hdc);261 ULONG oldcp = OSLibGpiQueryCp(hdc);262 if (!oldcp) /* If new DC is to be created */263 oldcp = GetDisplayCodepage();264 265 if(newHdc) STATS_CreateCompatibleDC(hdc, newHdc);266 OSLibGpiSetCp(newHdc, oldcp);267 //PF Open32 seems not to move coordinates to 0,0 in newHdc268 MoveToEx(newHdc, 0, 0 , NULL);269 270 return newHdc;271 }272 //******************************************************************************273 //******************************************************************************274 BOOL WIN32API DeleteDC(HDC hdc)275 {276 pDCData pHps = (pDCData)OSLibGpiQueryDCData((HPS)hdc);277 if(!pHps)278 {279 dprintf(("WARNING: DeleteDC %x; invalid hdc!", hdc));280 SetLastError(ERROR_INVALID_HANDLE);281 return 0;282 }283 SetLastError(ERROR_SUCCESS);284 285 DIBSection *dsect = DIBSection::findHDC(hdc);286 if(dsect)287 {288 //remove previously selected dibsection289 dprintf(("DeleteDC %x, unselect DIB section %x", hdc, dsect->GetBitmapHandle()));290 dsect->UnSelectDIBObject();291 }292 293 //Must call ReleaseDC for window dcs294 if(pHps->hdcType == TYPE_1) {295 return ReleaseDC(OS2ToWin32Handle(pHps->hwnd), hdc);296 }297 298 STATS_DeleteDC(hdc);299 return O32_DeleteDC(hdc);300 }301 //******************************************************************************302 //******************************************************************************303 BOOL WIN32API StrokeAndFillPath(HDC hdc)304 {305 return O32_StrokeAndFillPath(hdc);306 }307 //******************************************************************************308 //******************************************************************************309 BOOL WIN32API StrokePath(HDC hdc)310 {311 return O32_StrokePath(hdc);312 }313 //******************************************************************************314 //******************************************************************************315 282 int WIN32API SetBkMode( HDC hdc, int mode) 316 283 { … … 396 363 //****************************************************************************** 397 364 //****************************************************************************** 398 HDC WIN32API CreateDCA(LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput, const DEVMODEA *lpInitData)399 {400 HDC hdc;401 402 // 2001-05-28 PH403 // Ziff Davis Benchmarks come in here with "display".404 // Obviously, Windows does accept case-insensitive driver names,405 // whereas Open32 doesn't.406 if (*lpszDriver == 'd') // quick check407 {408 // then do a double-check and use the uppercase constant409 // instead410 if (stricmp(lpszDriver, "DISPLAY") == 0)411 lpszDriver = "DISPLAY";412 }413 414 hdc = O32_CreateDC(lpszDriver, lpszDevice, lpszOutput, lpInitData);415 if(hdc) {416 OSLibGpiSetCp(hdc, GetDisplayCodepage());417 STATS_CreateDCA(hdc, lpszDriver, lpszDevice, lpszOutput, lpInitData);418 }419 420 dprintf(("GDI32: CreateDCA %s %s %s %x returned %x", lpszDriver, lpszDevice, lpszOutput, lpInitData, hdc));421 return hdc;422 }423 //******************************************************************************424 //******************************************************************************425 HDC WIN32API CreateDCW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)426 {427 char *astring4, *astring5;428 429 char *astring1 = UnicodeToAsciiString((LPWSTR)arg1);430 char *astring2 = UnicodeToAsciiString((LPWSTR)arg2);431 char *astring3 = UnicodeToAsciiString((LPWSTR)arg3);432 433 if(arg4)434 {435 astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));436 astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));437 }438 439 HDC rc;440 DEVMODEA devmode;441 442 if(arg4)443 {444 strcpy((char*)devmode.dmDeviceName, astring4);445 strcpy((char*)devmode.dmFormName, astring5);446 447 devmode.dmSpecVersion = arg4->dmSpecVersion;448 devmode.dmDriverVersion = arg4->dmDriverVersion;449 devmode.dmSize = arg4->dmSize;450 devmode.dmDriverExtra = arg4->dmDriverExtra;451 devmode.dmFields = arg4->dmFields;452 #if (__IBMCPP__ == 360)453 devmode.dmOrientation = arg4->dmOrientation;454 devmode.dmPaperSize = arg4->dmPaperSize;455 devmode.dmPaperLength = arg4->dmPaperLength;456 devmode.dmPaperWidth = arg4->dmPaperWidth;457 #else458 devmode.s1.dmOrientation = arg4->s1.dmOrientation;459 devmode.s1.dmPaperSize = arg4->s1.dmPaperSize;460 devmode.s1.dmPaperLength = arg4->s1.dmPaperLength;461 devmode.s1.dmPaperWidth = arg4->s1.dmPaperWidth;462 #endif463 devmode.dmScale = arg4->dmScale;464 devmode.dmCopies = arg4->dmCopies;465 devmode.dmDefaultSource = arg4->dmDefaultSource;466 devmode.dmPrintQuality = arg4->dmPrintQuality;467 devmode.dmColor = arg4->dmColor;468 devmode.dmDuplex = arg4->dmDuplex;469 devmode.dmYResolution = arg4->dmYResolution;470 devmode.dmTTOption = arg4->dmTTOption;471 devmode.dmCollate = arg4->dmCollate;472 devmode.dmLogPixels = arg4->dmLogPixels;473 devmode.dmBitsPerPel = arg4->dmBitsPerPel;474 devmode.dmPelsWidth = arg4->dmPelsWidth;475 devmode.dmPelsHeight = arg4->dmPelsHeight;476 devmode.dmDisplayFlags = arg4->dmDisplayFlags;477 devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;478 devmode.dmICMMethod = arg4->dmICMMethod;479 devmode.dmICMIntent = arg4->dmICMIntent;480 devmode.dmMediaType = arg4->dmMediaType;481 devmode.dmDitherType = arg4->dmDitherType;482 devmode.dmReserved1 = arg4->dmReserved1;483 devmode.dmReserved2 = arg4->dmReserved2;484 rc = CreateDCA(astring1,astring2,astring3,&devmode);485 }486 else487 rc = CreateDCA(astring1,astring2,astring3, NULL);488 489 FreeAsciiString(astring1);490 FreeAsciiString(astring2);491 FreeAsciiString(astring3);492 493 if(arg4)494 {495 FreeAsciiString(astring4);496 FreeAsciiString(astring5);497 }498 499 return rc;500 }501 //******************************************************************************502 //******************************************************************************503 HDC WIN32API CreateICA(LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput,504 const DEVMODEA *lpdvmInit)505 {506 static char *szDisplay = "DISPLAY";507 HDC hdc;508 509 //SvL: Open32 tests for "DISPLAY"510 if(lpszDriver && !strcmp(lpszDriver, "display")) {511 lpszDriver = szDisplay;512 }513 //SvL: Open32 tests lpszDriver for NULL even though it's ignored514 if(lpszDriver == NULL) {515 lpszDriver = lpszDevice;516 }517 hdc = O32_CreateIC(lpszDriver, lpszDevice, lpszOutput, lpdvmInit);518 if(hdc) STATS_CreateICA(hdc, lpszDriver, lpszDevice, lpszOutput, lpdvmInit);519 return hdc;520 }521 //******************************************************************************522 //******************************************************************************523 HDC WIN32API CreateICW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)524 {525 char *astring4, *astring5;526 527 char *astring1 = UnicodeToAsciiString((LPWSTR)arg1);528 char *astring2 = UnicodeToAsciiString((LPWSTR)arg2);529 char *astring3 = UnicodeToAsciiString((LPWSTR)arg3);530 if(arg4)531 {532 astring4 = UnicodeToAsciiString((LPWSTR)(arg4->dmDeviceName));533 astring5 = UnicodeToAsciiString((LPWSTR)(arg4->dmFormName));534 }535 536 HDC rc;537 DEVMODEA devmode;538 539 if(arg4)540 {541 strcpy((char*)devmode.dmDeviceName, astring4);542 strcpy((char*)devmode.dmFormName, astring5);543 544 devmode.dmSpecVersion = arg4->dmSpecVersion;545 devmode.dmDriverVersion = arg4->dmDriverVersion;546 devmode.dmSize = arg4->dmSize;547 devmode.dmDriverExtra = arg4->dmDriverExtra;548 devmode.dmFields = arg4->dmFields;549 #if (__IBMCPP__ == 360)550 devmode.dmOrientation = arg4->dmOrientation;551 devmode.dmPaperSize = arg4->dmPaperSize;552 devmode.dmPaperLength = arg4->dmPaperLength;553 devmode.dmPaperWidth = arg4->dmPaperWidth;554 #else555 devmode.s1.dmOrientation = arg4->s1.dmOrientation;556 devmode.s1.dmPaperSize = arg4->s1.dmPaperSize;557 devmode.s1.dmPaperLength = arg4->s1.dmPaperLength;558 devmode.s1.dmPaperWidth = arg4->s1.dmPaperWidth;559 #endif560 devmode.dmScale = arg4->dmScale;561 devmode.dmCopies = arg4->dmCopies;562 devmode.dmDefaultSource = arg4->dmDefaultSource;563 devmode.dmPrintQuality = arg4->dmPrintQuality;564 devmode.dmColor = arg4->dmColor;565 devmode.dmDuplex = arg4->dmDuplex;566 devmode.dmYResolution = arg4->dmYResolution;567 devmode.dmTTOption = arg4->dmTTOption;568 devmode.dmCollate = arg4->dmCollate;569 devmode.dmLogPixels = arg4->dmLogPixels;570 devmode.dmBitsPerPel = arg4->dmBitsPerPel;571 devmode.dmPelsWidth = arg4->dmPelsWidth;572 devmode.dmPelsHeight = arg4->dmPelsHeight;573 devmode.dmDisplayFlags = arg4->dmDisplayFlags;574 devmode.dmDisplayFrequency = arg4->dmDisplayFrequency;575 devmode.dmICMMethod = arg4->dmICMMethod;576 devmode.dmICMIntent = arg4->dmICMIntent;577 devmode.dmMediaType = arg4->dmMediaType;578 devmode.dmDitherType = arg4->dmDitherType;579 devmode.dmReserved1 = arg4->dmReserved1;580 devmode.dmReserved2 = arg4->dmReserved2;581 582 rc = CreateICA(astring1,astring2,astring3,&devmode);583 }584 else585 rc = CreateICA(astring1,astring2,astring3, NULL);586 587 FreeAsciiString(astring1);588 FreeAsciiString(astring2);589 FreeAsciiString(astring3);590 if(arg4)591 {592 FreeAsciiString(astring4);593 FreeAsciiString(astring5);594 }595 596 return rc;597 }598 //******************************************************************************599 //******************************************************************************600 365 BOOL WIN32API Ellipse(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, 601 366 int nBottomRect) … … 708 473 //****************************************************************************** 709 474 //****************************************************************************** 710 int WIN32API Escape( HDC hdc, int nEscape, int cbInput, LPCSTR lpvInData, PVOID lpvOutData)711 {712 int rc;713 714 #ifdef DEBUG715 if(cbInput && lpvInData) {716 ULONG *tmp = (ULONG *)lpvInData;717 for(int i=0;i<cbInput/4;i++) {718 dprintf(("GDI32: Escape par %d: %x", i, *tmp++));719 }720 }721 #endif722 rc = O32_Escape(hdc, nEscape, cbInput, lpvInData, lpvOutData);723 if(rc == 0) {724 dprintf(("GDI32: Escape %x %d %d %x %x returned %d (WARNING: might not be implemented!!) ", hdc, nEscape, cbInput, lpvInData, lpvOutData, rc));725 }726 else dprintf(("GDI32: Escape %x %d %d %x %x returned %d ", hdc, nEscape, cbInput, lpvInData, lpvOutData, rc));727 728 return rc;729 }730 //******************************************************************************731 //******************************************************************************732 475 BOOL WIN32API ExtFloodFill( HDC arg1, int arg2, int arg3, COLORREF arg4, UINT arg5) 733 476 { … … 787 530 { 788 531 return O32_GetBrushOrgEx(arg1, arg2); 789 }790 //******************************************************************************791 //******************************************************************************792 BOOL WIN32API GetCharABCWidthsA( HDC arg1, UINT arg2, UINT arg3, LPABC arg4)793 {794 return O32_GetCharABCWidths(arg1, arg2, arg3, arg4);795 }796 //******************************************************************************797 //******************************************************************************798 BOOL WIN32API GetCharABCWidthsW( HDC arg1, UINT arg2, UINT arg3, LPABC arg4)799 {800 dprintf(("GDI32: GetCharABCWidthsW not properly implemented."));801 // NOTE: This will not work as is (needs UNICODE support)802 return O32_GetCharABCWidths(arg1, arg2, arg3, arg4);803 }804 //******************************************************************************805 //******************************************************************************806 BOOL WIN32API GetCharWidth32A( HDC hdc, UINT iFirstChar, UINT iLastChar, PINT pWidthArray)807 {808 BOOL ret;809 810 dprintf(("GDI32: GetCharWidth32A %x %x %x %x", hdc, iFirstChar, iLastChar, pWidthArray));811 ret = O32_GetCharWidth(hdc, iFirstChar, iLastChar, pWidthArray);812 dprintf(("GDI32: GetCharWidth32A returned %d", ret));813 #ifdef DEBUG814 if(ret) {815 for(int i=iFirstChar;i<iLastChar;i++) {816 if((i >= 'a' && i <= 'z') || (i >= 'A' && i <= 'Z')) {817 dprintf2(("Char %c -> width %d", i, pWidthArray[i]));818 }819 else dprintf2(("Char %x -> width %d", i, pWidthArray[i]));820 }821 }822 #endif823 return ret;824 }825 //******************************************************************************826 //TODO: Cut off Unicode chars?827 //******************************************************************************828 BOOL WIN32API GetCharWidth32W(HDC hdc, UINT iFirstChar, UINT iLastChar, PINT pWidthArray)829 {830 dprintf(("GDI32: GetCharWidth32W might not work properly %x %x %x %x", hdc, iFirstChar, iLastChar, pWidthArray));831 return O32_GetCharWidth(hdc, iFirstChar, iLastChar, pWidthArray);832 532 } 833 533 //****************************************************************************** … … 841 541 return rc; 842 542 } 543 #ifdef DEBUG 544 //****************************************************************************** 545 //****************************************************************************** 546 char *GetDeviceCapsString(int nIndex) 547 { 548 switch(nIndex) { 549 case DRIVERVERSION: 550 return "DRIVERVERSION"; 551 case TECHNOLOGY: 552 return "TECHNOLOGY"; 553 case HORZSIZE: 554 return "HORZSIZE"; 555 case VERTSIZE: 556 return "VERTSIZE"; 557 case HORZRES: 558 return "HORZRES"; 559 case VERTRES: 560 return "VERTRES"; 561 case BITSPIXEL: 562 return "BITSPIXEL"; 563 case PLANES: 564 return "PLANES"; 565 case NUMBRUSHES: 566 return "NUMBRUSHES"; 567 case NUMPENS: 568 return "NUMPENS"; 569 case NUMMARKERS: 570 return "NUMMARKERS"; 571 case NUMFONTS: 572 return "NUMFONTS"; 573 case NUMCOLORS: 574 return "NUMCOLORS"; 575 case PDEVICESIZE: 576 return "PDEVICESIZE"; 577 case CURVECAPS: 578 return "CURVECAPS"; 579 case LINECAPS: 580 return "LINECAPS"; 581 case POLYGONALCAPS: 582 return "POLYGONALCAPS"; 583 case TEXTCAPS: 584 return "TEXTCAPS"; 585 case CLIPCAPS: 586 return "CLIPCAPS"; 587 case RASTERCAPS: 588 return "RASTERCAPS"; 589 case ASPECTX: 590 return "ASPECTX"; 591 case ASPECTY: 592 return "ASPECTY"; 593 case ASPECTXY: 594 return "ASPECTXY"; 595 case LOGPIXELSX: 596 return "LOGPIXELSX"; 597 case LOGPIXELSY: 598 return "LOGPIXELSY"; 599 case SIZEPALETTE: 600 return "SIZEPALETTE"; 601 case NUMRESERVED: 602 return "NUMRESERVED"; 603 case COLORRES: 604 return "COLORRES"; 605 case PHYSICALWIDTH: 606 return "PHYSICALWIDTH"; 607 case PHYSICALHEIGHT: 608 return "PHYSICALHEIGHT"; 609 case PHYSICALOFFSETX: 610 return "PHYSICALOFFSETX"; 611 case PHYSICALOFFSETY: 612 return "PHYSICALOFFSETY"; 613 case SCALINGFACTORX: 614 return "SCALINGFACTORX"; 615 case SCALINGFACTORY: 616 return "SCALINGFACTORY"; 617 } 618 return "unknown"; 619 } 620 #endif 843 621 //****************************************************************************** 844 622 //****************************************************************************** … … 848 626 849 627 rc = O32_GetDeviceCaps(hdc, nIndex); 850 dprintf(("GDI32: GetDeviceCaps % X, %d returned %d\n", hdc, nIndex, rc));628 dprintf(("GDI32: GetDeviceCaps %x %s returned %d\n", hdc, GetDeviceCapsString(nIndex), rc)); 851 629 //SvL: 13-9-'98: NT returns -1 when using 16 bits colors, NOT 65536! 852 630 if(nIndex == NUMCOLORS && rc > 256) … … 854 632 855 633 return(rc); 856 }857 //******************************************************************************858 //******************************************************************************859 DWORD WIN32API GetKerningPairsA( HDC arg1, DWORD arg2, LPKERNINGPAIR arg3)860 {861 return O32_GetKerningPairs(arg1, arg2, arg3);862 }863 //******************************************************************************864 //******************************************************************************865 DWORD WIN32API GetKerningPairsW( HDC arg1, DWORD arg2, LPKERNINGPAIR arg3)866 {867 dprintf(("GDI32: GetKerningPairsW; might not work"));868 // NOTE: This will not work as is (needs UNICODE support)869 return O32_GetKerningPairs(arg1, arg2, arg3);870 634 } 871 635 //****************************************************************************** … … 952 716 //****************************************************************************** 953 717 //****************************************************************************** 954 BOOL WIN32API PolyDraw( HDC arg1, const POINT * arg2, const BYTE * arg3, DWORD arg4)955 { 956 return O32_PolyDraw( arg1, arg2, arg3, arg4);957 } 958 //****************************************************************************** 959 //****************************************************************************** 960 BOOL WIN32API PolyPolygon( HDC arg1, const POINT * arg2, const INT * arg3, UINT arg4)961 { 962 return O32_PolyPolygon( arg1, arg2, arg3, arg4);718 BOOL WIN32API PolyDraw( HDC hdc, const POINT * arg2, const BYTE * arg3, DWORD arg4) 719 { 720 return O32_PolyDraw(hdc, arg2, arg3, arg4); 721 } 722 //****************************************************************************** 723 //****************************************************************************** 724 BOOL WIN32API PolyPolygon( HDC hdc, const POINT * arg2, const INT * arg3, UINT arg4) 725 { 726 return O32_PolyPolygon(hdc, arg2, arg3, arg4); 963 727 } 964 728 //****************************************************************************** … … 972 736 BOOL WIN32API Polygon( HDC hdc, const POINT *lpPoints, int count) 973 737 { 738 BOOL ret = FALSE; 739 #ifdef DEBUG 740 if(lpPoints && count) { 741 for(int i=0;i<count;i++) { 742 dprintf(("Point (%d,%d)", lpPoints[i].x, lpPoints[i].y)); 743 } 744 } 745 #endif 974 746 return O32_Polygon(hdc, lpPoints, count); 975 747 } … … 994 766 //****************************************************************************** 995 767 //****************************************************************************** 996 HDC WIN32API ResetDCA( HDC arg1, const DEVMODEA * arg2)997 {998 return (HDC)O32_ResetDC(arg1, arg2);999 }1000 //******************************************************************************1001 //******************************************************************************1002 HDC WIN32API ResetDCW( HDC arg1, const DEVMODEW * arg2)1003 {1004 dprintf(("GDI32: ResetDCW: not properly implemented"));1005 DebugInt3();1006 // NOTE: This will not work as is (needs UNICODE support)1007 return (HDC)O32_ResetDC(arg1, (const DEVMODEA *)arg2);1008 }1009 //******************************************************************************1010 //******************************************************************************1011 BOOL WIN32API RestoreDC(HDC hdc, int id)1012 {1013 BOOL ret;1014 1015 ret = O32_RestoreDC(hdc, id);1016 if(ret == FALSE) {1017 dprintf(("ERROR: GDI32: RestoreDC %x %d FAILED", hdc, id));1018 }1019 return ret;1020 }1021 //******************************************************************************1022 //******************************************************************************1023 768 BOOL WIN32API RoundRect( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) 1024 769 { 1025 770 return O32_RoundRect(arg1, arg2, arg3, arg4, arg5, arg6, arg7); 1026 }1027 //******************************************************************************1028 //******************************************************************************1029 int WIN32API SaveDC( HDC hdc)1030 {1031 int id;1032 1033 id = O32_SaveDC(hdc);1034 if(id == 0) {1035 dprintf(("ERROR: GDI32: SaveDC %x FAILED", hdc));1036 }1037 else dprintf(("GDI32: SaveDC %x returned %d", hdc, id));1038 return id;1039 771 } 1040 772 //****************************************************************************** … … 1128 860 //****************************************************************************** 1129 861 //****************************************************************************** 1130 BOOL WIN32API GdiFlush()1131 {1132 dprintf(("GDI32: GdiFlush, not implemented (TRUE)\n"));1133 return(TRUE);1134 }1135 //******************************************************************************1136 //******************************************************************************1137 862 BOOL WIN32API GdiComment(HDC hdc, UINT cbSize, CONST BYTE *lpData) 1138 863 { … … 1143 868 //****************************************************************************** 1144 869 //****************************************************************************** 1145 BOOL WIN32API GetCharWidthFloatA(HDC hdc, UINT iFirstChar, UINT iLastChar, PFLOAT pxBUffer)1146 {1147 dprintf(("GDI32: GetCharWidthFloatA, not implemented\n"));1148 return(FALSE);1149 }1150 //******************************************************************************1151 //******************************************************************************1152 BOOL WIN32API GetCharWidthFloatW(HDC hdc, UINT iFirstChar, UINT iLastChar, PFLOAT pxBUffer)1153 {1154 dprintf(("GDI32: GetCharWidthFloatW, not implemented\n"));1155 return(FALSE);1156 }1157 //******************************************************************************1158 //******************************************************************************1159 BOOL WIN32API GetCharABCWidthsFloatA(HDC hdc, UINT iFirstChar, UINT iLastChar, LPABCFLOAT pxBUffer)1160 {1161 dprintf(("GDI32: GetCharABCWidthsFloatA, not implemented\n"));1162 return(FALSE);1163 }1164 //******************************************************************************1165 //******************************************************************************1166 BOOL WIN32API GetCharABCWidthsFloatW(HDC hdc,1167 UINT iFirstChar,1168 UINT iLastChar,1169 LPABCFLOAT pxBUffer)1170 {1171 dprintf(("GDI32: GetCharABCWidthsFloatA, not implemented\n"));1172 return(FALSE);1173 }1174 //******************************************************************************1175 //******************************************************************************1176 INT WIN32API ExtEscape(HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData,1177 INT cbOutput, LPSTR lpszOutData)1178 {1179 dprintf(("GDI32: ExtEscape, %x %x %d %x %d %x not implemented", hdc, nEscape, cbInput, lpszInData, cbOutput, lpszOutData));1180 #ifdef DEBUG1181 if(cbInput && lpszInData) {1182 ULONG *tmp = (ULONG *)lpszInData;1183 for(int i=0;i<cbInput/4;i++) {1184 dprintf(("GDI32: ExtEscape par %d: %x", i, *tmp++));1185 }1186 }1187 #endif1188 return(0);1189 }1190 //******************************************************************************1191 //******************************************************************************1192 870 int WIN32API DrawEscape(HDC hdc, int nEscape, int cbInput, LPCSTR lpszInData) 1193 871 { … … 1204 882 //****************************************************************************** 1205 883 //****************************************************************************** 1206 DWORD WIN32API GetGlyphOutlineA(HDC hdc, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm, 1207 DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2) 1208 { 1209 dprintf(("GDI32: GetGlyphOutLineA, not implemented (GDI_ERROR)\n")); 1210 return(GDI_ERROR); 1211 } 1212 //****************************************************************************** 1213 1214 //****************************************************************************** 1215 /*KSO Thu 21.05.1998*/ 1216 DWORD WIN32API GetGlyphOutlineW(HDC hdc, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm, 1217 DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2) 1218 { 1219 dprintf(("GDI32: GetGlyphOutLineW, not implemented\n")); 1220 return(GDI_ERROR); 1221 } 1222 //****************************************************************************** 1223 1224 //****************************************************************************** 884 1225 885 1226 886 /***************************************************************************** … … 1372 1032 1373 1033 1374 /*****************************************************************************1375 * Name : DWORD GetCharacterPlacementA1376 * Purpose : The GetCharacterPlacementA function retrieves information about1377 * a character string, such as character widths, caret positioning,1378 * ordering within the string, and glyph rendering. The type of1379 * information returned depends on the dwFlags parameter and is1380 * based on the currently selected font in the given display context.1381 * The function copies the information to the specified GCP_RESULTSA1382 * structure or to one or more arrays specified by the structure.1383 * Parameters: HDC hdc handle to device context1384 * LPCSTR lpString pointer to string1385 * int nCount number of characters in string1386 * int nMaxExtent maximum extent for displayed string1387 * LPGCP_RESULTSA *lpResults pointer to buffer for placement result1388 * DWORD dwFlags placement flags1389 * Variables :1390 * Result :1391 * Remark :1392 * Status : UNTESTED STUB1393 *1394 * Author : Patrick Haller [Mon, 1998/06/15 08:00]1395 *****************************************************************************/1396 1397 DWORD WIN32API GetCharacterPlacementA(HDC hdc,1398 LPCSTR lpString,1399 int nCount,1400 int nMaxExtent,1401 GCP_RESULTSA * lpResults,1402 DWORD dwFlags)1403 {1404 dprintf(("GDI32: GetCharacterPlacementA(%08xh,%s,%08xh,%08xh,%08xh,%08xh) not implemented.\n",1405 hdc,1406 lpString,1407 nCount,1408 nMaxExtent,1409 lpResults,1410 dwFlags));1411 1412 return (0);1413 }1414 1415 1416 /*****************************************************************************1417 * Name : DWORD GetCharacterPlacementW1418 * Purpose : The GetCharacterPlacementW function retrieves information about1419 * a character string, such as character widths, caret positioning,1420 * ordering within the string, and glyph rendering. The type of1421 * information returned depends on the dwFlags parameter and is1422 * based on the currently selected font in the given display context.1423 * The function copies the information to the specified GCP_RESULTSW1424 * structure or to one or more arrays specified by the structure.1425 * Parameters: HDC hdc handle to device context1426 * LPCSTR lpString pointer to string1427 * int nCount number of characters in string1428 * int nMaxExtent maximum extent for displayed string1429 * GCP_RESULTSW *lpResults pointer to buffer for placement result1430 * DWORD dwFlags placement flags1431 * Variables :1432 * Result :1433 * Remark :1434 * Status : UNTESTED STUB1435 *1436 * Author : Patrick Haller [Mon, 1998/06/15 08:00]1437 *****************************************************************************/1438 1439 DWORD WIN32API GetCharacterPlacementW(HDC hdc,1440 LPCWSTR lpString,1441 int nCount,1442 int nMaxExtent,1443 GCP_RESULTSW *lpResults,1444 DWORD dwFlags)1445 {1446 dprintf(("GDI32: GetCharacterPlacementW(%08xh,%s,%08xh,%08xh,%08xh,%08xh) not implemented.\n",1447 hdc,1448 lpString,1449 nCount,1450 nMaxExtent,1451 lpResults,1452 dwFlags));1453 1454 return (0);1455 }
Note:
See TracChangeset
for help on using the changeset viewer.