summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_cocoa.mm15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index ac139005f..ce6580a89 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -2464,6 +2464,7 @@ void Fl_X::q_release_context(Fl_X *x) {
#endif
}
+/* the former implementation
void Fl_X::q_begin_image(CGRect &rect, int cx, int cy, int w, int h) {
CGContextSaveGState(fl_gc);
CGAffineTransform mx = CGContextGetCTM(fl_gc);
@@ -2478,6 +2479,20 @@ void Fl_X::q_begin_image(CGRect &rect, int cx, int cy, int w, int h) {
rect.size.width = w;
rect.size.height = h;
}
+*/
+void Fl_X::q_begin_image(CGRect &rect, int cx, int cy, int w, int h) {
+ CGContextSaveGState(fl_gc);
+ CGRect r2 = rect;
+ r2.origin.x -= 0.5f;
+ r2.origin.y -= 0.5f;
+ CGContextClipToRect(fl_gc, r2);
+ // move graphics context to origin of vertically reversed image
+ CGContextTranslateCTM(fl_gc, rect.origin.x - cx - 0.5, rect.origin.y - cy + h - 0.5);
+ CGContextScaleCTM(fl_gc, 1, -1);
+ rect.origin.x = rect.origin.y = 0;
+ rect.size.width = w;
+ rect.size.height = h;
+}
void Fl_X::q_end_image() {
CGContextRestoreGState(fl_gc);