From 26049351e09d75bdf8b35273a76cf65202583fa7 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Thu, 27 May 2010 17:20:18 +0000 Subject: Better device hierarchy with surfaces and graphics drivers. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7617 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Double_Window.cxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/Fl_Double_Window.cxx') diff --git a/src/Fl_Double_Window.cxx b/src/Fl_Double_Window.cxx index 89f838844..bd2155329 100644 --- a/src/Fl_Double_Window.cxx +++ b/src/Fl_Double_Window.cxx @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -142,18 +143,24 @@ void fl_copy_offscreen(int x,int y,int w,int h,HBITMAP bitmap,int srcx,int srcy) DeleteDC(new_gc); } +//#include void fl_copy_offscreen_with_alpha(int x,int y,int w,int h,HBITMAP bitmap,int srcx,int srcy) { HDC new_gc = CreateCompatibleDC(fl_gc); int save = SaveDC(new_gc); SelectObject(new_gc, bitmap); BOOL alpha_ok = 0; // first try to alpha blend - int to_display = Fl_Device::current()->type() < 256; // true iff display output - if ( (!to_display) || fl_can_do_alpha_blending()) // if not on display, always try alpha_blend + // if to printer, always try alpha_blend + int to_display = Fl_Surface_Device::surface()->type() == Fl_Display_Device::device_type; // true iff display output +//fl_alert("to_display=%d ",to_display); + if ( (to_display && fl_can_do_alpha_blending()) || Fl_Surface_Device::surface()->type() == Fl_Printer::device_type) { alpha_ok = fl_alpha_blend(fl_gc, x, y, w, h, new_gc, srcx, srcy, w, h, blendfunc); +//fl_alert("alpha_ok=%d",alpha_ok); + } // if that failed (it shouldn't), still copy the bitmap over, but now alpha is 1 - if (!alpha_ok) + if (!alpha_ok) { BitBlt(fl_gc, x, y, w, h, new_gc, srcx, srcy, SRCCOPY); + } RestoreDC(new_gc, save); DeleteDC(new_gc); } -- cgit v1.2.3