From fa41ed01c525191c4cd8880f0f98d5a0001331d6 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 30 Mar 2014 15:13:57 -0600 Subject: [PATCH] upgrade pre-built libraries for Windows and Mac OS X Mostly upgrades the drawing stack to the latest Cairo, Pango, Glib, etc., but also upgrades the OpenSSL library on Windows to 1.0.1g. The new "racket/src/native-libs" directory provides scripts to rebuild the libraries from source. Those script are fragile, because library sources and configuration scripts are fragile. The scripts at least archive some expertise/advice in a mostly executable form. original commit: 23cf3ba11e6ea3ac5aa0b3919651f38e037fa2c9 --- pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/dc.rkt | 7 +++++++ pkgs/gui-pkgs/gui-test/tests/gracket/draw.rkt | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/dc.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/dc.rkt index bba8669c..2a1afe13 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/dc.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/dc.rkt @@ -204,6 +204,13 @@ (cairo_matrix_t-y0 m))) (cairo_surface_flush s) (define cg (cairo_quartz_surface_get_cg_context s)) + (begin + ;; A Cairo flush doesn't reset the clipping region. The + ;; implementation of clipping is that there's a saved + ;; GState that we can use to get back to the original + ;; clipping region, so restore (and save again) that state: + (CGContextRestoreGState cg) + (CGContextSaveGState cg)) (CGContextSaveGState cg) (CGContextConcatCTM cg trans) (let ([n (cairo_rectangle_list_t-num_rectangles rs)]) diff --git a/pkgs/gui-pkgs/gui-test/tests/gracket/draw.rkt b/pkgs/gui-pkgs/gui-test/tests/gracket/draw.rkt index 1f082eaa..55e43173 100644 --- a/pkgs/gui-pkgs/gui-test/tests/gracket/draw.rkt +++ b/pkgs/gui-pkgs/gui-test/tests/gracket/draw.rkt @@ -262,6 +262,7 @@ (define c-xscale 1) (define c-yscale 1) (define c-offset 0) + (define c-rotate 0) (define c-gray? #f) (public* [set-bitmaps (lambda (on?) (set! no-bitmaps? (not on?)) (refresh))] @@ -275,6 +276,7 @@ [set-scale (lambda (xs ys) (set! xscale xs) (set! yscale ys) (refresh))] [set-offset (lambda (o) (set! offset o) (refresh))] [set-canvas-offset (lambda (o) (set! c-offset o) (refresh))] + [set-canvas-rotation (lambda (r) (set! c-rotate r) (refresh))] [set-canvas-gray (lambda (g?) (set! c-gray? g?) (refresh))]) (override* [on-paint @@ -1042,6 +1044,7 @@ (send can-dc set-brush b) (send can-dc set-pen p))) (send can-dc set-origin c-offset c-offset) + (send can-dc set-rotation c-rotate) (send can-dc set-scale c-xscale c-yscale) (send can-dc set-alpha current-c-alpha) (when c-clip @@ -1415,6 +1418,9 @@ (make-object check-box% "Cvs +10" hp3 (lambda (self event) (send canvas set-canvas-offset (if (send self get-value) 10 0)))) + (make-object check-box% "Cvs rot" hp3 + (lambda (self event) + (send canvas set-canvas-rotation (if (send self get-value) (* pi -1/5) 0)))) (make-object choice% "Cvs Clip" '("None" "Empty" "Square" "Squares" "Octagon") hp3 (lambda (self event) (send canvas set-canvas-clip (case (send self get-selection)