Fixed WIN32 printing of RGB images without transparency. Still print_window_part() problem.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7275 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
0df1d8b695
commit
b20ef0bdeb
@ -49,7 +49,8 @@
|
||||
#include <FL/fl_draw.H>
|
||||
#include <FL/x.H>
|
||||
|
||||
#define MAXBUFFER 0x40000 // 256k
|
||||
//#define MAXBUFFER 0x40000 // 256k
|
||||
#define MAXBUFFER 0x100000 // 1024k
|
||||
|
||||
#if USE_COLORMAP
|
||||
|
||||
@ -254,6 +255,22 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
|
||||
}
|
||||
}
|
||||
}
|
||||
if(Fl_Device::current()->type() == Fl_Device::gdi_printer) {
|
||||
// if print context, device and logical units are not equal, so SetDIBitsToDevice
|
||||
// does not do the expected job, whereas StretchDIBits does it.
|
||||
// TODO with Fl_Printer::print_window_part(), StretchDIBits does not work well
|
||||
// with large captures whereas SetDIBitsToDevice does.
|
||||
StretchDIBits(fl_gc, x, y+j-k, w, k, 0, 0, w, k,
|
||||
(LPSTR)((uchar*)buffer+(blocking-k)*linesize),
|
||||
&bmi,
|
||||
#if USE_COLORMAP
|
||||
indexed ? DIB_PAL_COLORS : DIB_RGB_COLORS
|
||||
#else
|
||||
DIB_RGB_COLORS
|
||||
#endif
|
||||
, SRCCOPY );
|
||||
}
|
||||
else {
|
||||
SetDIBitsToDevice(fl_gc, x, y+j-k, w, k, 0, 0, 0, k,
|
||||
(LPSTR)((uchar*)buffer+(blocking-k)*linesize),
|
||||
&bmi,
|
||||
@ -263,6 +280,7 @@ static void innards(const uchar *buf, int X, int Y, int W, int H,
|
||||
DIB_RGB_COLORS
|
||||
#endif
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user