summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_cocoa.mm9
-rw-r--r--src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx2
2 files changed, 6 insertions, 5 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 1649f0b53..b36ca5ae8 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -4177,15 +4177,16 @@ static NSBitmapImageRep* rect_to_NSBitmapImageRep(Fl_Window *win, int x, int y,
{
NSBitmapImageRep *bitmap = nil;
NSRect rect;
+ float s = Fl_Graphics_Driver::default_driver().scale();
if (win->as_gl_window() && y >= 0) {
bitmap = GL_rect_to_nsbitmap(win, x, y, w, h);
} else {
NSView *winview = nil;
if ( through_Fl_X_flush && Fl_Window::current() == win ) {
- rect = NSMakeRect(x - 0.5, y - 0.5, w, h);
+ rect = NSMakeRect(s*x - 0.5, s*y - 0.5, s*w, s*h);
}
else {
- rect = NSMakeRect(x, win->h()-(y+h), w, h);
+ rect = NSMakeRect(x*s, win->h()*s-(y+h)*s, w*s, h*s);
// lock focus to win's view
winview = [fl_xid(win) contentView];
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
@@ -4220,8 +4221,8 @@ static NSBitmapImageRep* rect_to_NSBitmapImageRep(Fl_Window *win, int x, int y,
if (childbitmap) {
// if bitmap is high res and childbitmap is not, childbitmap must be rescaled
if ([bitmap pixelsWide] > w && [childbitmap pixelsWide] == clip.size.width) childbitmap = scale_nsbitmapimagerep(childbitmap, 2);
- write_bitmap_inside(bitmap, w, childbitmap,
- clip.origin.x - x, win->h() - clip.origin.y - clip.size.height - y );
+ write_bitmap_inside(bitmap, w*s, childbitmap,
+ (clip.origin.x - x)*s, (win->h() - clip.origin.y - clip.size.height - y)*s );
}
[childbitmap release];
}
diff --git a/src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx b/src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx
index c65c6a3a1..5b1f8b1f8 100644
--- a/src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx
+++ b/src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx
@@ -64,7 +64,7 @@ static uchar *convert_BGRA_to_RGB(uchar *baseAddress, int w, int h, int mByteWid
Fl_RGB_Image* Fl_OpenGL_Display_Device::capture_gl_rectangle(Fl_Gl_Window* glw, int x, int y, int w, int h)
{
float factor = glw->pixels_per_unit();
- if (factor > 1) {
+ if (factor != 1) {
w *= factor; h *= factor; x *= factor; y *= factor;
}
glw->flush(); // forces a GL redraw, necessary for the glpuzzle demo