diff options
| -rw-r--r-- | src/Fl_cocoa.mm | 9 | ||||
| -rw-r--r-- | src/drivers/OpenGL/Fl_OpenGL_Display_Device.cxx | 2 |
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 |
