From: <mie...@us...> - 2009-11-30 15:18:00
|
Revision: 5368 http://oorexx.svn.sourceforge.net/oorexx/?rev=5368&view=rev Author: miesfeld Date: 2009-11-30 15:17:40 +0000 (Mon, 30 Nov 2009) Log Message: ----------- Continue converting ooDialog to the C++ API Modified Paths: -------------- main/trunk/extensions/platform/windows/oodialog/dlgext.cls main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.cpp main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.hpp Modified: main/trunk/extensions/platform/windows/oodialog/dlgext.cls =================================================================== --- main/trunk/extensions/platform/windows/oodialog/dlgext.cls 2009-11-30 15:15:08 UTC (rev 5367) +++ main/trunk/extensions/platform/windows/oodialog/dlgext.cls 2009-11-30 15:17:40 UTC (rev 5368) @@ -321,6 +321,7 @@ ::method changeBitmapButton unguarded external "LIBRARY oodialog dlgext_changeBitmapButton" ::method getBitmapPosition unguarded external "LIBRARY oodialog dlgext_getBitmapPosition" ::method setBitmapPosition unguarded external "LIBRARY oodialog dlgext_setBitmapPosition" +::method getBitmapSize unguarded external "LIBRARY oodialog dlgext_getBitmapSize" ::method getBitmapSizeX unguarded external "LIBRARY oodialog dlgext_getBitmapSize" ::method getBitmapSizeY unguarded external "LIBRARY oodialog dlgext_getBitmapSize" ::method drawBitmap unguarded external "LIBRARY oodialog dlgext_drawBitmap" Modified: main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.cpp =================================================================== --- main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.cpp 2009-11-30 15:15:08 UTC (rev 5367) +++ main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.cpp 2009-11-30 15:17:40 UTC (rev 5368) @@ -132,22 +132,12 @@ return result; } - static void drawFontToDC(HDC hDC, int32_t x, int32_t y, const char * text, uint32_t fontSize, const char * opts, const char * fontName, int32_t fgColor, int32_t bkColor) { - HFONT hFont, oldFont; - COLORREF oldFg, oldBk; + HFONT hFont = oodGenericFont(fontName, fontSize, opts); + HFONT oldFont = (HFONT)SelectObject(hDC, hFont); - int weight = getWeight(opts); - int height = getHeightFromFontSize(fontSize); - - hFont = CreateFont(height, 0, 0, 0, weight, StrStrI(opts, "ITALIC") != NULL, StrStrI(opts, "UNDERLINE") != NULL, - StrStrI(opts, "STRIKEOUT") != NULL, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, - FF_DONTCARE, fontName); - - oldFont = (HFONT)SelectObject(hDC, hFont); - int oldMode = 0; if ( StrStrI(opts, "TRANSPARENT") != NULL ) { @@ -158,6 +148,7 @@ oldMode = SetBkMode(hDC, OPAQUE); } + COLORREF oldFg, oldBk; if ( fgColor != -1 ) { oldFg = SetTextColor(hDC, PALETTEINDEX(fgColor)); @@ -441,6 +432,18 @@ return 0; } + +HFONT oodGenericFont(const char *fontName, uint32_t fontSize, const char *opts) +{ + int weight = getWeight(opts); + int height = getHeightFromFontSize(fontSize); + + return CreateFont(height, 0, 0, 0, weight, StrStrI(opts, "ITALIC") != NULL, StrStrI(opts, "UNDERLINE") != NULL, + StrStrI(opts, "STRIKEOUT") != NULL, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + FF_DONTCARE, fontName); +} + + logical_t oodWriteToWindow(RexxMethodContext *context, HWND hwnd, int32_t xPos, int32_t yPos, CSTRING text, CSTRING fontName, uint32_t fontSize, CSTRING fontStyle, int32_t fgColor, int32_t bkColor) { @@ -2198,14 +2201,14 @@ * * */ -RexxMethod3(int32_t, dlgext_getBitmapSize, RexxObjectPtr, rxID, NAME, method, OSELF, self) +RexxMethod3(RexxObjectPtr, dlgext_getBitmapSize, RexxObjectPtr, rxID, NAME, method, OSELF, self) { pCPlainBaseDialog pcpbd; uint32_t id; if ( dlgExtControlSetup(context, self, rxID, &pcpbd, &id, NULL) != TheZeroObj ) { - return -1; + return TheNegativeOneObj; } DIALOGADMIN *dlgAdm = pcpbd->dlgAdm; @@ -2228,9 +2231,20 @@ y = DIB_HEIGHT(dlgAdm->BmpTab[index].bitmapID); } - return (method[13] == 'X' ? x : y); + switch ( method[13] ) + { + case '\0' : + return rxNewSize(context, x, y); + case 'X' : + return context->Int32(x); + case 'Y' : + return context->Int32(y); + default : + break; + + } } - return -1; + return TheNegativeOneObj; } @@ -2631,7 +2645,7 @@ HBRUSH oB, hbr; RECT r, rs, rclip; SIZE s, sone; - INT i, rc, sl, step, j, disp, weight; + INT i, rc, sl, step, j, disp; UINT sleep; DEF_ADM; @@ -2646,6 +2660,7 @@ opts = argv[5].strptr; disply = atoi(argv[6].strptr); col = atoi(argv[9].strptr); + CSTRING fontName = argv[3].strptr; w = GET_HWND(argv[1]); step = atoi(argv[7].strptr); @@ -2655,11 +2670,8 @@ { GetWindowRect(w, &r); - weight = getWeight(opts); + hFont = oodGenericFont(fontName, size, opts); - hFont = CreateFont(size, size, 0, 0, weight, strstr(opts, "ITALIC") != NULL, strstr(opts, "UNDERLINE") != NULL, - strstr(opts, "STRIKEOUT") != NULL, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, FF_DONTCARE, argv[3].strptr); - oldF = (HFONT)SelectObject(hDC, hFont); hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNFACE)); Modified: main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.hpp =================================================================== --- main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.hpp 2009-11-30 15:15:08 UTC (rev 5367) +++ main/trunk/extensions/platform/windows/oodialog/oodDeviceGraphics.hpp 2009-11-30 15:17:40 UTC (rev 5368) @@ -43,6 +43,7 @@ extern RexxObjectPtr oodGetClientRect(RexxMethodContext *, HWND hwnd, PRECT); extern RexxObjectPtr oodGetWindowRect(RexxMethodContext *, HWND hwnd); extern logical_t oodColorTable(RexxMethodContext *, DIALOGADMIN *, uint32_t, int32_t, int32_t, bool); +extern HFONT oodGenericFont(const char *, uint32_t, const char *); extern logical_t oodWriteToWindow(RexxMethodContext *, HWND, int32_t, int32_t, CSTRING, CSTRING, uint32_t, CSTRING, int32_t, int32_t); extern HBRUSH oodCreateBrush(RexxMethodContext *, uint32_t, CSTRING); extern RexxObjectPtr clearRect(RexxMethodContext *, HWND, PRECT); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |