diff --git a/collects/mred/private/wx/cocoa/printer-dc.rkt b/collects/mred/private/wx/cocoa/printer-dc.rkt index 84f2eab309..2df653c5cc 100644 --- a/collects/mred/private/wx/cocoa/printer-dc.rkt +++ b/collects/mred/private/wx/cocoa/printer-dc.rkt @@ -151,6 +151,9 @@ (define/override (get-size) (values (/ page-width page-scaling) (/ page-height page-scaling))) + (define/override (get-device-scale) + (values page-scaling page-scaling)) + (define current-page 0) (define/public (get-page-count) (length pages)) diff --git a/collects/mred/private/wx/gtk/printer-dc.rkt b/collects/mred/private/wx/gtk/printer-dc.rkt index 92980523ee..651c6f2885 100644 --- a/collects/mred/private/wx/gtk/printer-dc.rkt +++ b/collects/mred/private/wx/gtk/printer-dc.rkt @@ -222,6 +222,9 @@ (define/override (get-size) (values (/ page-width page-scaling) (/ page-height page-scaling))) + (define/override (get-device-scale) + (values page-scaling page-scaling)) + (define/override (end-doc) (send (new printout% [op-gtk (gtk_print_operation_new)] diff --git a/collects/racket/draw/private/dc-intf.rkt b/collects/racket/draw/private/dc-intf.rkt index c5f53ec415..2af154f8a0 100644 --- a/collects/racket/draw/private/dc-intf.rkt +++ b/collects/racket/draw/private/dc-intf.rkt @@ -32,6 +32,7 @@ get-char-height get-char-width get-clipping-region + get-device-scale get-font get-gl-context get-initial-matrix diff --git a/collects/racket/draw/private/dc.rkt b/collects/racket/draw/private/dc.rkt index 3c607e5b9e..f0c3e159d5 100644 --- a/collects/racket/draw/private/dc.rkt +++ b/collects/racket/draw/private/dc.rkt @@ -129,8 +129,9 @@ ;; the color is for a background. install-color - ;; The public get-size method: + ;; The public get-size & get-device-scale methods: get-size + get-device-scale ;; set-auto-scroll : real real -> void ;; @@ -197,6 +198,7 @@ (define/public (collapse-bitmap-b&w?) #f) (define/public (get-size) (values 0.0 0.0)) + (define/public (get-device-scale) (values 1.0 1.0)) (define/public (set-auto-scroll dx dy) (void)) @@ -612,6 +614,10 @@ (check-ok 'get-size) (super get-size)) + (define/override (get-device-scale) + (check-ok 'get-device-scale) + (super get-device-scale)) + (def/public (suspend-flush) (void)) (def/public (resume-flush) (void)) (def/public (flush) (void)) diff --git a/collects/racket/draw/private/post-script-dc.rkt b/collects/racket/draw/private/post-script-dc.rkt index f896c0fc9a..bc083d9fcc 100644 --- a/collects/racket/draw/private/post-script-dc.rkt +++ b/collects/racket/draw/private/post-script-dc.rkt @@ -142,6 +142,9 @@ (values h w) (values w h)))) + (define/override (get-device-scale) + (values scale-x scale-y)) + (define/override (end-cr) (cairo_surface_finish s) (cairo_destroy c) diff --git a/collects/scribblings/draw/dc-intf.scrbl b/collects/scribblings/draw/dc-intf.scrbl index 9461c0e67c..f55a947ba5 100644 --- a/collects/scribblings/draw/dc-intf.scrbl +++ b/collects/scribblings/draw/dc-intf.scrbl @@ -540,6 +540,21 @@ Gets the current clipping region, returning @scheme[#f] if the drawing } + +@defmethod[(get-device-scale) + (values (and/c real? (not/c negative?)) + (and/c real? (not/c negative?)))]{ + +Gets an ``external'' scaling factor for drawing coordinates to the +target device. For most DCs, the result is @racket[1.0] and +@racket[1.0]. + +A @racket[post-script-dc%] or @racket[pdf-dc%] object returns scaling +factors determined via @xmethod[ps-setup% get-scaling] at the time +that the DC was created. A @racket[printer-dc%] may also have a +user-configured scaling factor.} + + @defmethod[(get-font) (is-a?/c font%)]{