summaryrefslogtreecommitdiff
path: root/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2017-05-06 07:36:40 +0000
committerManolo Gouy <Manolo>2017-05-06 07:36:40 +0000
commit39b2976f887e1dda102ad48ca045a09b89c70c27 (patch)
treed6460e87cd5a257e79098849194f13a50f1a637b /src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
parent0794cc0ceb267c7c94ba9e8fe4e00d968da1f139 (diff)
De-duplicate code to load pointer to the TransparentBlt() system function at run-time.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12234 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx')
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
index 8d3ba61e1..7006bc429 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
@@ -415,16 +415,17 @@ void Fl_GDI_Graphics_Driver::draw(Fl_Bitmap *bm, int XP, int YP, int WP, int HP,
DeleteDC(tempdc);
}
-// TODO: move this into a file with the printer implementations
+Fl_GDI_Printer_Graphics_Driver::transparent_f_type Fl_GDI_Printer_Graphics_Driver::TransparentBlt() {
+ HMODULE hMod;
+ static transparent_f_type fpter = ( (hMod = LoadLibrary("MSIMG32.DLL")) ?
+ (transparent_f_type)GetProcAddress(hMod, "TransparentBlt") : NULL
+ );
+ return fpter;
+}
+
void Fl_GDI_Printer_Graphics_Driver::draw(Fl_Bitmap *bm, int XP, int YP, int WP, int HP, int cx, int cy) {
int X, Y, W, H;
- typedef BOOL (WINAPI* fl_transp_func) (HDC,int,int,int,int,HDC,int,int,int,int,UINT);
- static fl_transp_func fl_TransparentBlt = NULL;
- static HMODULE hMod = NULL;
- if (!hMod) {
- hMod = LoadLibrary("MSIMG32.DLL");
- if (hMod) fl_TransparentBlt = (fl_transp_func)GetProcAddress(hMod, "TransparentBlt");
- }
+ transparent_f_type fl_TransparentBlt = TransparentBlt();
if (!fl_TransparentBlt) {
Fl_GDI_Graphics_Driver::draw(bm, XP, YP, WP, HP, cx, cy);
return;
@@ -611,13 +612,7 @@ void Fl_GDI_Graphics_Driver::draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP
void Fl_GDI_Printer_Graphics_Driver::draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy) {
int X, Y, W, H;
if (Fl_Graphics_Driver::prepare(pxm, XP, YP, WP, HP, cx, cy, X, Y, W, H)) return;
- typedef BOOL (WINAPI* fl_transp_func) (HDC,int,int,int,int,HDC,int,int,int,int,UINT);
- static HMODULE hMod = NULL;
- static fl_transp_func fl_TransparentBlt = NULL;
- if (!hMod) {
- hMod = LoadLibrary("MSIMG32.DLL");
- if(hMod) fl_TransparentBlt = (fl_transp_func)GetProcAddress(hMod, "TransparentBlt");
- }
+ transparent_f_type fl_TransparentBlt = TransparentBlt();
if (fl_TransparentBlt) {
HDC new_gc = CreateCompatibleDC(gc_);
int save = SaveDC(new_gc);