From 694745e9985a65bbbfdf0c9853e472ee18a2476d Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 5 Nov 2010 21:53:36 -0600 Subject: [PATCH] first cut at splitting draw and gui docs --- collects/mred/mred-sig.rkt | 3 - collects/mred/mred.rkt | 38 +- collects/mred/private/fontdialog.rkt | 4 +- collects/mred/private/gdi.rkt | 59 +-- collects/racket/draw.rkt | 1 + collects/racket/draw/private/font-dir.rkt | 10 +- .../racket/draw/private/post-script-dc.rkt | 4 +- .../{gui => draw}/bitmap-class.scrbl | 3 +- .../{gui => draw}/bitmap-dc-class.scrbl | 0 collects/scribblings/draw/blurbs.rkt | 62 +++ .../{gui => draw}/brush-class.scrbl | 29 +- .../{gui => draw}/brush-list-class.scrbl | 0 .../{gui => draw}/color-class.scrbl | 0 .../{gui => draw}/color-database-intf.scrbl | 0 collects/scribblings/draw/common.rkt | 25 ++ .../scribblings/{gui => draw}/dc-intf.scrbl | 0 .../{gui => draw}/dc-path-class.scrbl | 0 .../draw-funcs.scrbl} | 61 ++- collects/scribblings/draw/draw.scrbl | 36 ++ .../{gui => draw}/font-class.scrbl | 35 +- .../{gui => draw}/font-list-class.scrbl | 0 .../font-name-directory-intf.scrbl | 90 +--- .../{gui => draw}/gl-config-class.scrbl | 0 .../{gui => draw}/gl-context-intf.scrbl | 0 .../draw-overview.scrbl => draw/guide.scrbl} | 85 +--- collects/scribblings/draw/info.rkt | 3 + .../scribblings/{gui => draw}/pen-class.scrbl | 0 .../{gui => draw}/pen-list-class.scrbl | 0 .../{gui => draw}/point-class.scrbl | 0 .../{gui => draw}/post-script-dc-class.scrbl | 0 .../{gui => draw}/ps-setup-class.scrbl | 0 .../reference.scrbl} | 7 +- .../{gui => draw}/region-class.scrbl | 0 collects/scribblings/gui/blurbs.rkt | 31 +- collects/scribblings/gui/config.scrbl | 9 - collects/scribblings/gui/draw-funcs.scrbl | 12 - .../scribblings/gui/draw-list-funcs.scrbl | 36 -- collects/scribblings/gui/font-config.scrbl | 386 ------------------ collects/scribblings/gui/font-funcs.scrbl | 22 - collects/scribblings/gui/gui.scrbl | 23 +- collects/scribblings/gui/guide.scrbl | 18 +- .../scribblings/gui/post-script-funcs.scrbl | 25 -- collects/scribblings/gui/prefs.scrbl | 38 -- .../scribblings/gui/printer-dc-class.scrbl | 11 +- collects/scribblings/gui/reference.scrbl | 2 - collects/scribblings/gui/win-classes.scrbl | 1 + collects/scribblings/gui/win-funcs.scrbl | 2 + doc/release-notes/racket/Draw_and_GUI_5_1.txt | 4 + 48 files changed, 275 insertions(+), 900 deletions(-) rename collects/scribblings/{gui => draw}/bitmap-class.scrbl (98%) rename collects/scribblings/{gui => draw}/bitmap-dc-class.scrbl (100%) create mode 100644 collects/scribblings/draw/blurbs.rkt rename collects/scribblings/{gui => draw}/brush-class.scrbl (80%) rename collects/scribblings/{gui => draw}/brush-list-class.scrbl (100%) rename collects/scribblings/{gui => draw}/color-class.scrbl (100%) rename collects/scribblings/{gui => draw}/color-database-intf.scrbl (100%) create mode 100644 collects/scribblings/draw/common.rkt rename collects/scribblings/{gui => draw}/dc-intf.scrbl (100%) rename collects/scribblings/{gui => draw}/dc-path-class.scrbl (100%) rename collects/scribblings/{gui/bitmap-funcs.scrbl => draw/draw-funcs.scrbl} (53%) create mode 100644 collects/scribblings/draw/draw.scrbl rename collects/scribblings/{gui => draw}/font-class.scrbl (79%) rename collects/scribblings/{gui => draw}/font-list-class.scrbl (100%) rename collects/scribblings/{gui => draw}/font-name-directory-intf.scrbl (54%) rename collects/scribblings/{gui => draw}/gl-config-class.scrbl (100%) rename collects/scribblings/{gui => draw}/gl-context-intf.scrbl (100%) rename collects/scribblings/{gui/draw-overview.scrbl => draw/guide.scrbl} (76%) create mode 100644 collects/scribblings/draw/info.rkt rename collects/scribblings/{gui => draw}/pen-class.scrbl (100%) rename collects/scribblings/{gui => draw}/pen-list-class.scrbl (100%) rename collects/scribblings/{gui => draw}/point-class.scrbl (100%) rename collects/scribblings/{gui => draw}/post-script-dc-class.scrbl (100%) rename collects/scribblings/{gui => draw}/ps-setup-class.scrbl (100%) rename collects/scribblings/{gui/draw-classes.scrbl => draw/reference.scrbl} (85%) rename collects/scribblings/{gui => draw}/region-class.scrbl (100%) delete mode 100644 collects/scribblings/gui/config.scrbl delete mode 100644 collects/scribblings/gui/draw-funcs.scrbl delete mode 100644 collects/scribblings/gui/draw-list-funcs.scrbl delete mode 100644 collects/scribblings/gui/font-config.scrbl delete mode 100644 collects/scribblings/gui/post-script-funcs.scrbl diff --git a/collects/mred/mred-sig.rkt b/collects/mred/mred-sig.rkt index 989e0ace3c..1f8aa21788 100644 --- a/collects/mred/mred-sig.rkt +++ b/collects/mred/mred-sig.rkt @@ -1,4 +1,3 @@ - #lang scheme/signature add-color<%> @@ -38,8 +37,6 @@ control<%> current-eventspace current-eventspace-has-menu-root? current-eventspace-has-standard-menus? -current-ps-afm-file-paths -current-ps-cmap-file-paths current-ps-setup current-text-keymap-initializer cursor% diff --git a/collects/mred/mred.rkt b/collects/mred/mred.rkt index 5fdbb4e1cb..5c10a451a5 100644 --- a/collects/mred/mred.rkt +++ b/collects/mred/mred.rkt @@ -4,6 +4,7 @@ namespace-anchor->empty-namespace make-base-empty-namespace) scheme/class + racket/draw mzlib/etc (prefix wx: "private/kernel.ss") (prefix wx: "private/wxme/style.ss") @@ -101,26 +102,15 @@ add-pasteboard-keymap-functions begin-busy-cursor bell - bitmap% - make-bitmap - read-bitmap - make-monochrome-bitmap - brush% - brush-list% editor-data% editor-data-class% editor-data-class-list<%> check-for-break clipboard<%> clipboard-client% - color% - color-database<%> control-event% current-eventspace - current-ps-setup cursor% - dc<%> - dc-path% get-display-depth end-busy-cursor event% @@ -128,10 +118,7 @@ eventspace? find-graphical-system-path flush-display - font% - font-list% - font-name-directory<%> - get-highlight-background-color + get-highlight-background-color get-highlight-text-color get-the-editor-data-class-list get-the-snip-class-list @@ -152,14 +139,9 @@ editor-wordbreak-map% mouse-event% mult-color<%> - pen% - pen-list% - point% - ps-setup% read-editor-global-footer read-editor-global-header read-editor-version - region% scroll-event% snip% snip-admin% @@ -181,14 +163,7 @@ yield eventspace-shutdown? get-panel-background - gl-context<%> - gl-config% - the-color-database - the-font-name-directory - the-font-list - the-pen-list - the-brush-list the-style-list the-editor-wordbreak-map make-screen-bitmap @@ -197,9 +172,7 @@ (define the-clipboard (wx:get-the-clipboard)) (define the-x-selection-clipboard (wx:get-the-x-selection)) - ;; Obsolete - (define current-ps-afm-file-paths (make-parameter null)) - (define current-ps-cmap-file-paths (make-parameter null)) + (provide (all-from racket/draw)) (provide button% canvas% @@ -277,13 +250,10 @@ get-top-level-edit-target-window register-collecting-blit unregister-collecting-blit - bitmap-dc% - post-script-dc% printer-dc% current-text-keymap-initializer sleep/yield get-window-text-extent - get-family-builtin-face send-message-to-window the-clipboard the-x-selection-clipboard @@ -309,8 +279,6 @@ make-gui-namespace make-gui-empty-namespace file-creator-and-type - current-ps-afm-file-paths - current-ps-cmap-file-paths hide-cursor-until-moved system-position-ok-before-cancel? label-string? diff --git a/collects/mred/private/fontdialog.rkt b/collects/mred/private/fontdialog.rkt index 035f1118c7..c8c3795700 100644 --- a/collects/mred/private/fontdialog.rkt +++ b/collects/mred/private/fontdialog.rkt @@ -39,7 +39,7 @@ (let ([s (send (send edit get-style-list) find-named-style "Standard")]) (send s set-delta (font->delta f))))))] [p (make-object horizontal-pane% f)] - [face (make-object list-box% #f (get-face-list) p refresh-sample)] + [face (make-object list-box% #f (wx:get-face-list) p refresh-sample)] [p2 (make-object vertical-pane% p)] [p3 (instantiate horizontal-pane% (p2) [stretchable-width #f])] [style (let ([pnl (instantiate group-box-panel% ("Style" p3) [stretchable-height #f] [stretchable-width #f])]) @@ -98,7 +98,7 @@ (lambda (font) (let* ([facen (if font (send font get-face) - (get-family-builtin-face 'default))] + (wx:get-family-builtin-face 'default))] [f (and facen (send face find-string facen))]) (and f (>= f 0) (send face set-selection f))) (when font diff --git a/collects/mred/private/gdi.rkt b/collects/mred/private/gdi.rkt index 7ef08bcc45..89a847bbcb 100644 --- a/collects/mred/private/gdi.rkt +++ b/collects/mred/private/gdi.rkt @@ -13,17 +13,13 @@ (provide register-collecting-blit unregister-collecting-blit - bitmap-dc% - post-script-dc% printer-dc% get-window-text-extent - get-family-builtin-face normal-control-font small-control-font tiny-control-font view-control-font - menu-control-font - get-face-list) + menu-control-font) (define register-collecting-blit (case-lambda @@ -50,14 +46,6 @@ (check-instance 'unregister-collecting-blit canvas% 'canvas% #f canvas) (wx:unregister-collecting-blit (mred->wx canvas)))) - (define bitmap-dc% - (class100 wx:bitmap-dc% ([bitmap #f]) - (inherit set-bitmap) - (sequence - (super-init) - (when bitmap - (set-bitmap bitmap))))) - (define-syntax check-page-active (syntax-rules () [(_ check-page-status (id . args) ...) (begin (check-one-page-active check-page-status id args) ...)])) @@ -167,20 +155,6 @@ (super-new))) - (define post-script-dc% - (class (doc+page-check-mixin wx:post-script-dc% 'post-script-dc%) - (init [interactive #t][parent #f][use-paper-bbox #f][as-eps #t]) - - (check-top-level-parent/false '(constructor post-script-dc) parent) - - (define is-eps? (and as-eps #t)) - (define/override (multiple-pages-ok?) (not is-eps?)) - - (as-entry - (lambda () - (let ([p (and parent (mred->wx parent))]) - (as-exit (lambda () (super-make-object interactive p use-paper-bbox as-eps)))))))) - (define printer-dc% (class100 (doc+page-check-mixin wx:printer-dc% 'printer-dc%) ([parent #f]) (sequence @@ -199,37 +173,6 @@ (check-instance 'get-window-text-extent wx:font% 'font% #f font) (let-values ([(w h d a) (get-window-text-extent* string font combine?)]) (values (inexact->exact (ceiling w)) (inexact->exact (ceiling h))))])) - - (define ugly? - (lambda (a) - (and (positive? (string-length a)) - (not (or (char-alphabetic? (string-ref a 0)) - (char-numeric? (string-ref a 0)) - (char=? #\- (string-ref a 0))))))) - - (define compare-face-names - (lambda (a b) - (let ([a-sp? (char=? #\space (string-ref a 0))] - [b-sp? (char=? #\space (string-ref b 0))] - [a-ugly? (ugly? a)] - [b-ugly? (ugly? b)]) - (cond [(eq? a-sp? b-sp?) - (cond - [(eq? a-ugly? b-ugly?) - (string-locale-ci diff --git a/collects/racket/draw/private/font-dir.rkt b/collects/racket/draw/private/font-dir.rkt index 40037bc5b7..dc5fec724f 100644 --- a/collects/racket/draw/private/font-dir.rkt +++ b/collects/racket/draw/private/font-dir.rkt @@ -4,7 +4,8 @@ "font-syms.rkt") (provide font-name-directory<%> - the-font-name-directory) + the-font-name-directory + get-family-builtin-face) (define font-name-directory% (class object% @@ -103,3 +104,10 @@ (class->interface font-name-directory%)) (define the-font-name-directory (new font-name-directory%)) + +(define (get-family-builtin-face family) + (unless (memq family '(default decorative roman script swiss modern system symbol)) + (raise-type-error 'get-family-builtin-face "family symbol" family)) + (let ([id (send the-font-name-directory find-family-default-font-id family)]) + (send the-font-name-directory get-screen-name id 'normal 'normal))) + diff --git a/collects/racket/draw/private/post-script-dc.rkt b/collects/racket/draw/private/post-script-dc.rkt index 5f70454367..b13099137c 100644 --- a/collects/racket/draw/private/post-script-dc.rkt +++ b/collects/racket/draw/private/post-script-dc.rkt @@ -22,7 +22,7 @@ (define-values (s width height landscape?) (let ([su (if interactive - ((gui-dynamic-require 'get-ps-setup-from-user)) + ((gui-dynamic-require 'get-ps-setup-from-user) #f parent) (current-ps-setup))]) (cond [su @@ -33,7 +33,7 @@ [get-file (lambda (fn) ((gui-dynamic-require 'put-file) "Save PostScript As" - #f + parent (and fn (path-only fn)) (and fn (file-name-from-path fn)) "ps"))] diff --git a/collects/scribblings/gui/bitmap-class.scrbl b/collects/scribblings/draw/bitmap-class.scrbl similarity index 98% rename from collects/scribblings/gui/bitmap-class.scrbl rename to collects/scribblings/draw/bitmap-class.scrbl index 1c2de5586b..92894d3db7 100644 --- a/collects/scribblings/gui/bitmap-class.scrbl +++ b/collects/scribblings/draw/bitmap-class.scrbl @@ -210,8 +210,7 @@ For PNG loading, if @scheme[bg-color] is not @scheme[#f], then it is @index["gamma correction"]{In} all PNG-loading modes, gamma correction is applied when the file provides a gamma value, otherwise gamma correction is not applied. The current display's gamma factor is - determined by the @ResourceFirst{gamma} (see @|mrprefsdiscuss|) if it - is set, or else by the @indexed-envvar{SCREEN_GAMMA} environment + determined by the @indexed-envvar{SCREEN_GAMMA} environment variable if it is defined. If the preference and environment variable are both undefined, a platform-specific default is used. diff --git a/collects/scribblings/gui/bitmap-dc-class.scrbl b/collects/scribblings/draw/bitmap-dc-class.scrbl similarity index 100% rename from collects/scribblings/gui/bitmap-dc-class.scrbl rename to collects/scribblings/draw/bitmap-dc-class.scrbl diff --git a/collects/scribblings/draw/blurbs.rkt b/collects/scribblings/draw/blurbs.rkt new file mode 100644 index 0000000000..a3a91dab81 --- /dev/null +++ b/collects/scribblings/draw/blurbs.rkt @@ -0,0 +1,62 @@ +#readerscribble/reader +(module blurbs scheme/base + (require scribble/struct + scribble/manual + scribble/scheme + scribble/decode + (for-label racket/draw + scheme/base) + (for-syntax scheme/base)) + + (provide (all-defined-out)) + + (define (p . l) + (decode-paragraph l)) + + (define PrintNote + (make-splice + (list + @p{Be sure to use the following methods to start/end drawing:} + @itemize[@item{@method[dc<%> start-doc]} + @item{@method[dc<%> start-page]} + @item{@method[dc<%> end-page]} + @item{@method[dc<%> end-doc]}] + @p{Attempts to use a drawing method outside of an active page raises an exception.}))) + + (define reference-doc '(lib "scribblings/reference/reference.scrbl")) + + (define SeeMzParam @elem{(see @secref[#:doc reference-doc "parameters"])}) + + (define DrawSizeNote "") + + (define MismatchExn @elem{an @scheme[exn:fail:contract] exception is raised}) + + (define (colorName name name2 r g b) + (make-element #f + (list (make-element `(bg-color ,r ,g ,b) + (list (hspace 5))) + (hspace 1) + (bytes->string/latin-1 name)))) + + (define (slant . s) + (make-element "slant" (decode-content s))) + + (define (res-sym s) + (string->symbol (string-append "GRacket:" s))) + + (define (Resource s) + @elem{@to-element[`(quote ,(res-sym s))] + preference}) + (define (ResourceFirst s) ; fixme -- add index + (let ([r (Resource s)]) + (index* (list (format "~a preference" (res-sym s))) + (list r) + r))) + + (define (boxisfill which what) + @elem{The @|which| box is filled with @|what|.}) + (define (boxisfillnull which what) + @elem{The @|which| box is filled with @|what|, unless @|which| is @scheme[#f].}) + + ) + diff --git a/collects/scribblings/gui/brush-class.scrbl b/collects/scribblings/draw/brush-class.scrbl similarity index 80% rename from collects/scribblings/gui/brush-class.scrbl rename to collects/scribblings/draw/brush-class.scrbl index a8a1ace797..66a5caaf17 100644 --- a/collects/scribblings/gui/brush-class.scrbl +++ b/collects/scribblings/draw/brush-class.scrbl @@ -52,34 +52,9 @@ A brush's style is one of the following: ]} - @item{@indexed-scheme['hilite] --- In unsmoothed mode, existing - destination pixels are ``highlighted'' in a platform-specific - way when the brush color is black. Under Windows and X for a - color drawing context, the inverted RGB components of - destination pixel are combined with the RGB components of the - system-wide highlight color using a bitwise ``or'', and the - combination is used. (Under X, the color is specified by the - @ResourceFirst{hiliteColor} preference; see @|mrprefsdiscuss|.) - Under Mac OS X for a color drawing context, the inverted RGB - components of the system-wide highlight color are subtracted - from the RGB components of each destination pixel, and the - difference (or 0 for a negative result) is used. For any - monochrome drawing context, @scheme['hilite] is the same as - @scheme['xor]. For PostScript output, @scheme['hilite] uses a - stipple that is an array of small dots (essentially a - halftone), otherwise @scheme['hilite] is treated like - @scheme['solid] in a smoothing mode.} + @item{@indexed-scheme['hilite] --- Draws with black and a 30% alpha.} - @item{@indexed-scheme['panel] --- In unsmoothed mode, draws with the - same color and pattern as a top-level panel background, if the - brush's color is the same as the color returned by - @scheme[get-panel-background] and if the brush has no - stipple. To create a @scheme[canvas%] object that is drawn like - a control, use the @scheme['transparent] canvas style instead, - because certain kinds of nested panels have different - background colors (e.g., a @scheme[tab-panel%] under Mac OS - X). In a smoothing mode, @scheme['panel] is treated as - @scheme['solid].} + @item{@indexed-scheme['panel] --- the same as @scheme['solid].} @item{The following modes correspond to built-in stipples drawn in @scheme['solid] mode: diff --git a/collects/scribblings/gui/brush-list-class.scrbl b/collects/scribblings/draw/brush-list-class.scrbl similarity index 100% rename from collects/scribblings/gui/brush-list-class.scrbl rename to collects/scribblings/draw/brush-list-class.scrbl diff --git a/collects/scribblings/gui/color-class.scrbl b/collects/scribblings/draw/color-class.scrbl similarity index 100% rename from collects/scribblings/gui/color-class.scrbl rename to collects/scribblings/draw/color-class.scrbl diff --git a/collects/scribblings/gui/color-database-intf.scrbl b/collects/scribblings/draw/color-database-intf.scrbl similarity index 100% rename from collects/scribblings/gui/color-database-intf.scrbl rename to collects/scribblings/draw/color-database-intf.scrbl diff --git a/collects/scribblings/draw/common.rkt b/collects/scribblings/draw/common.rkt new file mode 100644 index 0000000000..33d197fa0e --- /dev/null +++ b/collects/scribblings/draw/common.rkt @@ -0,0 +1,25 @@ +(module common racket/base + (require scribble/manual + scribble/basic + racket/class + racket/contract + "blurbs.ss" + (only-in "../reference/mz.ss" AllUnix exnraise)) + (provide (all-from-out scribble/manual) + (all-from-out scribble/basic) + (all-from-out racket/class) + (all-from-out racket/contract) + (all-from-out "blurbs.ss") + (all-from-out "../reference/mz.ss")) + + (require (for-label racket/draw + racket/gui/base + racket/class + racket/contract + racket/base)) + (provide (for-label (all-from-out racket/draw) + (all-from-out racket/gui/base) + (all-from-out racket/class) + (all-from-out racket/contract) + (all-from-out racket/base)))) + diff --git a/collects/scribblings/gui/dc-intf.scrbl b/collects/scribblings/draw/dc-intf.scrbl similarity index 100% rename from collects/scribblings/gui/dc-intf.scrbl rename to collects/scribblings/draw/dc-intf.scrbl diff --git a/collects/scribblings/gui/dc-path-class.scrbl b/collects/scribblings/draw/dc-path-class.scrbl similarity index 100% rename from collects/scribblings/gui/dc-path-class.scrbl rename to collects/scribblings/draw/dc-path-class.scrbl diff --git a/collects/scribblings/gui/bitmap-funcs.scrbl b/collects/scribblings/draw/draw-funcs.scrbl similarity index 53% rename from collects/scribblings/gui/bitmap-funcs.scrbl rename to collects/scribblings/draw/draw-funcs.scrbl index 5490a9646f..a7ef55decd 100644 --- a/collects/scribblings/gui/bitmap-funcs.scrbl +++ b/collects/scribblings/draw/draw-funcs.scrbl @@ -1,9 +1,36 @@ #lang scribble/doc @(require "common.ss") -@title{Bitmaps} +@title{Drawing Functions} +@local-table-of-contents[] +@defparam[current-ps-setup pss (is-a?/c ps-setup%)]{ + +A parameter that determines the current PostScript configuration + settings. See @scheme[post-script-dc%] and @scheme[printer-dc%]. + +} + +@defproc[(get-face-list [family (one-of/c 'mono 'all) 'all]) + (listof string?)]{ + +Returns a list of font face names available on the current system. If + @scheme['mono] is provided as the argument, then only faces that are + known to correspond to monospace fonts are included in the list. + +} + +@defproc[(get-family-builtin-face [family (one-of/c 'default 'decorative 'roman 'script + 'swiss 'modern 'symbol 'system)]) + string?]{ + +Returns the built-in default face mapping for a particular font + family. + +See @scheme[font%] for information about @scheme[family]. + +} @defproc[(make-bitmap [width exact-positive-integer?] [height exact-positive-integer?] [alpha? any/c #t]) @@ -38,3 +65,35 @@ overloaded.} Returns @racket[(make-object bitmap% in kind)], but this procedure is preferred because it defaults @racket[kind] in a more useful way.} + + +@defthing[the-brush-list (is-a?/c brush-list%)]{ + +See @scheme[brush-list%]. + +} + +@defthing[the-color-database (is-a?/c color-database<%>)]{ + +See @scheme[color-database<%>]. + +} + +@defthing[the-font-list (is-a?/c font-list%)]{ + +See @scheme[font-list%]. + +} + +@defthing[the-font-name-directory (is-a?/c font-name-directory<%>)]{ + +See @scheme[font-name-directory<%>]. + + +} + +@defthing[the-pen-list (is-a?/c pen-list%)]{ + +See @scheme[pen-list%]. + +} diff --git a/collects/scribblings/draw/draw.scrbl b/collects/scribblings/draw/draw.scrbl new file mode 100644 index 0000000000..3787105685 --- /dev/null +++ b/collects/scribblings/draw/draw.scrbl @@ -0,0 +1,36 @@ +#lang scribble/doc +@(require "common.ss") + +@title{@bold{Draw}: Racket Drawing Toolkit} + +@author["Matthew Flatt" "Robert Bruce Findler" "John Clements"] + +@declare-exporting[racket/draw] + +@defmodule*/no-declare[(racket/draw)]{The +@racketmodname[racket/draw] library provides all of the class, +interface, and procedure bindings defined in this manual.} + +@table-of-contents[] + +@;------------------------------------------------------------------------ + +@include-section["guide.scrbl"] +@include-section["reference.scrbl"] + +@;------------------------------------------------------------------------ + +@(bibliography + + (bib-entry #:key "Adobe99" + #:author "Adobe Systems Incorporated" + #:title "PostScript Language Reference, third edition" + #:is-book? #t + #:url "http://partners.adobe.com/public/developer/en/ps/PLRM.pdf" + #:date "1999") + + ) + +@;------------------------------------------------------------------------ + +@index-section[] diff --git a/collects/scribblings/gui/font-class.scrbl b/collects/scribblings/draw/font-class.scrbl similarity index 79% rename from collects/scribblings/gui/font-class.scrbl rename to collects/scribblings/draw/font-class.scrbl index ee29304307..5f5c04d60e 100644 --- a/collects/scribblings/gui/font-class.scrbl +++ b/collects/scribblings/draw/font-class.scrbl @@ -25,17 +25,9 @@ A @defterm{font} is an object which determines the appearance of text, @item{@indexed-scheme['modern] (fixed width)} @item{@indexed-scheme['symbol] (Greek letters and more)} @item{@indexed-scheme['system] (used to draw control labels)} - ] + ]} - The @scheme['symbol] designation is special under Mac OS X and X with - fontconfig/Xft; characters in the ASCII range 0-255 are converted to - Unicode characters that match Adobe symbols. For example, @litchar{a} is - converted to @litchar["\u03B1"].} - - @item{face --- A string face name, such as @scheme["Courier"] (under - Windows and Mac OS X), @scheme["-*-courier"] (under - X), or @scheme[" Luxi Sans"] (under X with - fontconfig/Xft; note the leading space). The format + @item{face --- A string face name, such as @scheme["Courier"]. The format and meaning of a face name is platform- and device-specific. If a font's face name is @scheme[#f], then the font's appearance depends only on the @@ -49,8 +41,8 @@ A @defterm{font} is an object which determines the appearance of text, @item{style --- The slant style of the font, one of: @itemize[ @item{@indexed-scheme['normal]} - @item{@indexed-scheme['slant] (Windows, Mac OS X: same as @scheme['italic]; X: tries @scheme['italic] if @scheme['slant] font does not exist)} - @item{@indexed-scheme['italic] (X: tries @scheme['slant] if @scheme['italic] font does not exist)} + @item{@indexed-scheme['slant] (a.k.a ``oblique'')} + @item{@indexed-scheme['italic]} ]} @item{weight --- The weight of the font, one of: @@ -65,17 +57,10 @@ A @defterm{font} is an object which determines the appearance of text, @item{smoothing --- Amount of anti-alias smoothing, one of: @itemize[ @item{@indexed-scheme['default] (platform-specific, sometimes user-configurable)} - @item{@indexed-scheme['partly-smoothed] (Windows: TrueType when available; - Mac OS X: 4-bit, pixel-aligned smoothing; - X: fontconfig/Xft when available)} - @item{@indexed-scheme['smoothed] (Windows: ClearType when available, XP and up; - Mac OS X: Quartz smoothing; - X: fontconfig/Xft when available)} + @item{@indexed-scheme['partly-smoothed] (gray anti-aliasing)} + @item{@indexed-scheme['smoothed] (sub-pixel anti-aliasing)} @item{@indexed-scheme['unsmoothed]} - ] - Special case: @scheme['default] corresponds to - @scheme['partly-smoothed] when used with the @scheme['modern] family - and a font size between 9 and 13 (inclusive).} + ]} @item{size-in-pixels? --- @scheme[#t] if the size of the font is in logical drawing units (i.e., pixels for an unscaled screen or @@ -113,11 +98,7 @@ See also When no arguments are provided, creates an instance of the default font. If no face name is provided, the font is created without a face - name. Otherwise, see @scheme[font-name-directory<%>] for information - about the way @scheme[face] is interpreted for drawing text on - various platforms and devices; when a platform- or device-specific - interpretation of @scheme[face] is not available, the @scheme[family] - is used to draw text. + name. See @scheme[font%] for information about @scheme[family], @scheme[style], and @scheme[weight]. @scheme[font-name-directory<%>]. diff --git a/collects/scribblings/gui/font-list-class.scrbl b/collects/scribblings/draw/font-list-class.scrbl similarity index 100% rename from collects/scribblings/gui/font-list-class.scrbl rename to collects/scribblings/draw/font-list-class.scrbl diff --git a/collects/scribblings/gui/font-name-directory-intf.scrbl b/collects/scribblings/draw/font-name-directory-intf.scrbl similarity index 54% rename from collects/scribblings/gui/font-name-directory-intf.scrbl rename to collects/scribblings/draw/font-name-directory-intf.scrbl index 49b6ee799e..ed2dd3e712 100644 --- a/collects/scribblings/gui/font-name-directory-intf.scrbl +++ b/collects/scribblings/draw/font-name-directory-intf.scrbl @@ -5,23 +5,15 @@ @definterface/title[font-name-directory<%> ()]{ There is one @scheme[font-name-directory<%>] object: - @scheme[the-font-name-directory]. It implements the mapping from font + @scheme[the-font-name-directory]. It implements a mapping from font specifications (face, family, style, and weight) to information for - rendering text on a specific device. The mapping is different for - each platform. For example, when drawing to a bitmap in Windows, the - rendering information is simply the name of a Windows font. When - drawing to a PostScript file, the rendering information is a - PostScript font name, which encapsulates the style and weight. When - drawing to a bitmap in X, the rendering information is an X font - string, which encapsulates the style and weight, parameterized over - the size (using a ``%d'' placeholder). - -Programmers rarely need to directly invoke methods of - @scheme[the-font-name-directory]. It is used automatically when - drawing text to a @scheme[dc<%>] object. Nevertheless, - @scheme[the-font-name-directory] is available so that programmers can - query or modify the mapping manually. A programmer may also need to - understand how the face-and-family mapping works. + rendering text on a specific device. Programmers rarely need to + directly invoke methods of @scheme[the-font-name-directory]. It is + used automatically when drawing text to a @scheme[dc<%>] + object. Nevertheless, @scheme[the-font-name-directory] is available + so that programmers can query or modify the mapping manually. A + programmer may also need to understand how the face-and-family + mapping works. To extract mapping information from @scheme[the-font-name-directory], first obtain a @defterm{font ID}, which is an index based on a family @@ -33,69 +25,13 @@ To extract mapping information from @scheme[the-font-name-directory], @method[font-name-directory<%> get-post-script-name]. For a family without a face string, the corresponding font ID has a - useful built-in mapping for every platform and device. (The built-in - mapping can be overridden through the user's preferences; see - @secref["fontresources"] for information.) For a family with a + useful built-in mapping for every platform and device. For a family with a face string, @scheme[the-font-name-directory] interprets the string (in a platform-specific way) to generate a mapping for ``screen'' drawing (to a canvas's @scheme[dc<%>], a @scheme[bitmap-dc%], or a @scheme[printer-dc%]). When drawing to a @scheme[post-script-dc%] object, the face-specific mapping defaults to the family's mapping. -Under Windows and Mac OS X, a face name is interpreted simply as a - system font name for drawing to the screen, bitmap, or printer. The - mapping succeeds if the system provides a font with the given name, - and fails otherwise. For example, under Windows, @scheme["MS Sans - Serif"] maps to the font that is typically used for button - labels. Under X, a face name has a more complex interpretation: - -@itemize[ - - @item{If the string begins with a space, then the remainder of the - string is interpreted as a fontconfig/Xft font name, but only - if fontconfig/Xft support is enabled at compile time (which is - the default when available), and only if the RENDER extension - is available at run time. Multiple fontconfig/Xft font names - can appear after the initial space, separated by commas; the - first available font is used to draw text, and later fonts are - substituted for missing characters in earlier fonts.} - - @item{If the string begins with @litchar{+}, then the remainder of the - string is interpreted as an X font name. These names are - usually long, such as - @litchar{+-b&h-lucidatypewriter-medium-r-normal-sans-24-240-75-75-m-140-iso8859-1}. - As usual for X font names, asterisks may appear in the string - as wildcards. Furthermore, the size of the font can be - parameterized by using @litchar{%d} in the place of a specific - point size; if an asterisk appears in place of the pixel size, - the asterisk and @litchar{%d} are swapped when the font size is - specified in pixels (otherwise the size is always interpreted - as points). For rotated text, @litchar{%d} will be replaced by - a transformation matrix.} - - @item{A string of the form - @litchar{-}@nonterm{provider}@litchar{-}@nonterm{font} is - equivalent to - @litchar{+-}@nonterm{provider}@litchar{-}@nonterm{font}@litchar{-}@nonterm{weight}@litchar{-}@nonterm{style}@litchar{-normal-*-*-%d-*-*-*-*-*-*}, - where @nonterm{weight} is either @litchar{medium}, - @litchar{light}, or @litchar{bold} (depending on the requested - weight mapping) and @nonterm{style} is either @litchar{r}, - @litchar{i}, or @litchar{i} (depending on the requested style - mapping).} - - @item{A string of the form @litchar{-}@nonterm{font} is - equivalent to @litchar{-*-}@nonterm{font}.} - - @item{A string of any other format is interpreted as an X font name, - optionally parameterized with @litchar{%d}.} - -] - -The mapping for face names can be overridden (on all platforms) - through the user's preferences, as described in - @secref["fontresources"]. - - @defmethod[(find-family-default-font-id [family (one-of/c 'default 'decorative 'roman 'script 'swiss 'modern 'symbol 'system)]) @@ -157,9 +93,7 @@ Font ID are useful only as mapping indices for (or/c string? false/c)]{ Gets a PostScript font name for a font ID, weight, and style - combination. The PostScript font name is used both for the font name - in PostScript output (sans character set) and as the @|AFM| file - name; see also @secref["postscriptfonts"]. + combination. See @scheme[font%] for information about @scheme[weight] and @scheme[style]. @@ -204,10 +138,6 @@ Sets a platform-dependent screen font name (used for drawing to a canvas's @scheme[dc<%>], a @scheme[bitmap-dc%], or a @scheme[printer-dc%]) for a font ID, weight, and style combination. -Under X, if the screen name contains @litchar{%d}, it is replaced by - the size of the font (point size times 10) to obtain the full screen - font name. - See @scheme[font%] for information about @scheme[weight] and @scheme[style]. diff --git a/collects/scribblings/gui/gl-config-class.scrbl b/collects/scribblings/draw/gl-config-class.scrbl similarity index 100% rename from collects/scribblings/gui/gl-config-class.scrbl rename to collects/scribblings/draw/gl-config-class.scrbl diff --git a/collects/scribblings/gui/gl-context-intf.scrbl b/collects/scribblings/draw/gl-context-intf.scrbl similarity index 100% rename from collects/scribblings/gui/gl-context-intf.scrbl rename to collects/scribblings/draw/gl-context-intf.scrbl diff --git a/collects/scribblings/gui/draw-overview.scrbl b/collects/scribblings/draw/guide.scrbl similarity index 76% rename from collects/scribblings/gui/draw-overview.scrbl rename to collects/scribblings/draw/guide.scrbl index 61dd80e3ae..d3e912ed6a 100644 --- a/collects/scribblings/gui/draw-overview.scrbl +++ b/collects/scribblings/draw/guide.scrbl @@ -1,28 +1,17 @@ #lang scribble/doc @(require scribble/eval - "common.ss" - "diagrams.ss") + "common.ss") -@title[#:tag "drawing-overview"]{Drawing} +@title[#:tag "overview"]{Overview} -Drawing in Racket requires a @deftech{device context} +Drawing with @racketmodname[racket/draw] uses a @deftech{device context} (@deftech{DC}), which is an instance of the @scheme[dc<%>] -interface. For example, the @method[canvas<%> get-dc] method of a +interface. For example, the @racket[post-script-dc%] class implements +a @racket[dc<%>] for drawing to a PostScript file, while @racket[bitmap-dc%] +draws to a bitmap. When using the @racketmodname[racket/gui] library for GUIs, +the @method[canvas<%> get-dc] method of a canvas returns a @scheme[dc<%>] instance for drawing into the canvas -window. Other kinds of DCs draw to different kinds of devices: - -@itemize[ - - @item{@scheme[bitmap-dc%] --- a @deftech{bitmap DC} draws to an - offscreen bitmap.} - - @item{@scheme[post-script-dc%] --- a @deftech{PostScript DC} - records drawing commands to a PostScript file.} - - @item{@scheme[printer-dc%] --- a @deftech{printer DC} draws to a - platform-specific printer device (Windows, Mac OS X).} - -] +window. Tools that are used for drawing include the following: @scheme[pen%] objects for drawing lines and shape outlines, @scheme[brush%] @@ -30,20 +19,11 @@ Tools that are used for drawing include the following: @scheme[pen%] bitmaps, and @scheme[dc-path%] objects for describing paths to draw and fill. -The following example creates a frame with a drawing canvas, and then - draws a round, blue face with square, yellow eyes and a smiling, red - mouth: +The following example uses the GUI library as well as the drawing + library. It creates a frame with a drawing canvas, and then draws a + round, blue face with square, yellow eyes and a smiling, red mouth: @schemeblock[ -(code:comment @#,t{Make a 300 x 300 frame}) -(define frame (new frame% [label "Drawing Example"] - [width 300] - [height 300])) -(code:comment @#,t{Make the drawing area}) -(define canvas (new canvas% [parent frame])) -(code:comment @#,t{Get the canvas's drawing context}) -(define dc (send canvas #,(:: canvas<%> get-dc))) - (code:comment @#,t{Make some pens and brushes}) (define no-pen (make-object pen% "BLACK" 1 'transparent)) (define no-brush (make-object brush% "BLACK" 'transparent)) @@ -66,47 +46,18 @@ The following example creates a frame with a drawing canvas, and then (let ([-pi (atan 0 -1)]) (send dc #,(:: dc<%> draw-arc) 75 75 150 150 (* 5/4 -pi) (* 7/4 -pi)))) -(code:comment @#,t{Show the frame}) -(send frame #,(:: top-level-window<%> show) #t) -(code:comment @#,t{Wait a second to let the window get ready}) -(sleep/yield 1) -(code:comment @#,t{Draw the face}) -(draw-face dc) -] - -The @scheme[sleep/yield] call is necessary under X because - drawing to the canvas has no effect when the canvas is not - shown. Although the @scheme[(send frame #,(:: top-level-window<%> show) #t)] - expression queues a show request for the frame, the actual display of - the frame and its canvas requires handling several events. The - @scheme[sleep/yield] procedure pauses for a specified number - of seconds, handling events while it pauses. - -One second is plenty of time for the frame to show itself, but a - better solution is to create a canvas with a paint callback function - (or overriding @method[canvas<%> on-paint]). Using a paint - callback function is better for all platforms; when the canvas in the - above example is resized or temporarily covered by another window, - the face disappears. To ensure that the face is redrawn whenever the - canvas itself is repainted, we provide a paint callback when creating - the canvas: - -@schemeblock[ (code:comment @#,t{Make a 300 x 300 frame}) (define frame (new frame% [label "Drawing Example"] [width 300] [height 300])) - -(code:comment @#,t{Make the drawing area with a paint callback}) -(define canvas - (new canvas% [parent frame] - [paint-callback - (lambda (canvas dc) (draw-face dc))])) - -(code:comment @#,t{... pens, brushes, and @scheme[draw-face] are the same as above ...}) +(code:comment @#,t{Make the drawing area, and set its paint callback}) +(code:comment @#,t{to use the @racket[draw-face] function:}) +(define canvas (new canvas% + [parent frame] + [paint-callback (lambda (c dc) (draw-face dc))])) (code:comment @#,t{Show the frame}) -(send frame #,(:: top-level-window<%> show) #t) +(send frame #,(:: top-level-window<%> show) #t) ] Suppose that @scheme[draw-face] creates a particularly complex face that @@ -163,7 +114,7 @@ More complex shapes are typically best implemented with @(begin #readerscribble/comment-reader [schemeblock -(require mzlib/math) ; for @scheme[pi] +(require racket/math) ; for @scheme[pi] ;; Construct paths for a 630 x 630 logo diff --git a/collects/scribblings/draw/info.rkt b/collects/scribblings/draw/info.rkt new file mode 100644 index 0000000000..73d0ce07c5 --- /dev/null +++ b/collects/scribblings/draw/info.rkt @@ -0,0 +1,3 @@ +#lang setup/infotab + +(define scribblings '(("draw.scrbl" (multi-page) (gui-library 101)))) diff --git a/collects/scribblings/gui/pen-class.scrbl b/collects/scribblings/draw/pen-class.scrbl similarity index 100% rename from collects/scribblings/gui/pen-class.scrbl rename to collects/scribblings/draw/pen-class.scrbl diff --git a/collects/scribblings/gui/pen-list-class.scrbl b/collects/scribblings/draw/pen-list-class.scrbl similarity index 100% rename from collects/scribblings/gui/pen-list-class.scrbl rename to collects/scribblings/draw/pen-list-class.scrbl diff --git a/collects/scribblings/gui/point-class.scrbl b/collects/scribblings/draw/point-class.scrbl similarity index 100% rename from collects/scribblings/gui/point-class.scrbl rename to collects/scribblings/draw/point-class.scrbl diff --git a/collects/scribblings/gui/post-script-dc-class.scrbl b/collects/scribblings/draw/post-script-dc-class.scrbl similarity index 100% rename from collects/scribblings/gui/post-script-dc-class.scrbl rename to collects/scribblings/draw/post-script-dc-class.scrbl diff --git a/collects/scribblings/gui/ps-setup-class.scrbl b/collects/scribblings/draw/ps-setup-class.scrbl similarity index 100% rename from collects/scribblings/gui/ps-setup-class.scrbl rename to collects/scribblings/draw/ps-setup-class.scrbl diff --git a/collects/scribblings/gui/draw-classes.scrbl b/collects/scribblings/draw/reference.scrbl similarity index 85% rename from collects/scribblings/gui/draw-classes.scrbl rename to collects/scribblings/draw/reference.scrbl index 597d803821..f652399ddc 100644 --- a/collects/scribblings/gui/draw-classes.scrbl +++ b/collects/scribblings/draw/reference.scrbl @@ -1,8 +1,7 @@ #lang scribble/doc -@(require "common.ss" - "diagrams.ss") +@(require "common.ss") -@title[#:style '(toc quiet)]{Drawing Classes} +@title[#:style '(toc reveal)]{Reference} @local-table-of-contents[] @@ -23,6 +22,6 @@ @include-section["pen-list-class.scrbl"] @include-section["point-class.scrbl"] @include-section["post-script-dc-class.scrbl"] -@include-section["printer-dc-class.scrbl"] @include-section["ps-setup-class.scrbl"] @include-section["region-class.scrbl"] +@include-section["draw-funcs.scrbl"] diff --git a/collects/scribblings/gui/region-class.scrbl b/collects/scribblings/draw/region-class.scrbl similarity index 100% rename from collects/scribblings/gui/region-class.scrbl rename to collects/scribblings/draw/region-class.scrbl diff --git a/collects/scribblings/gui/blurbs.rkt b/collects/scribblings/gui/blurbs.rkt index 425a7eef50..4b4ef7ebe9 100644 --- a/collects/scribblings/gui/blurbs.rkt +++ b/collects/scribblings/gui/blurbs.rkt @@ -6,9 +6,17 @@ scribble/decode (for-label scheme/gui/base scheme/base) - (for-syntax scheme/base)) + (for-syntax scheme/base) + (only-in scribblings/draw/blurbs + res-sym + Resource + ResourceFirst + boxisfill + boxisfillnull + MismatchExn)) - (provide (except-out (all-defined-out) p define-inline)) + (provide (except-out (all-defined-out) p define-inline) + (all-from-out scribblings/draw/blurbs)) (define-syntax-rule (define-inline (name) body) (define-syntax (name stx) @@ -193,8 +201,6 @@ information@|details|, even if the editor currently has delayed refreshing (see @scheme[min-width], @scheme[min-height], @scheme[stretchable-width], and @scheme[stretchable-height] arguments, see @scheme[area<%>].}) - (define MismatchExn @elem{an @scheme[exn:fail:contract] exception is raised}) - (define AFM @elem{Adobe Font Metrics}) (define (MonitorMethod what by-what method whatsit) @@ -244,18 +250,6 @@ information@|details|, even if the editor currently has delayed refreshing (see (hspace 1) (bytes->string/latin-1 name)))) - (define (res-sym s) - (string->symbol (string-append "GRacket:" s))) - - (define (Resource s) - @elem{@to-element[`(quote ,(res-sym s))] - preference}) - (define (ResourceFirst s) ; fixme -- add index - (let ([r (Resource s)]) - (index* (list (format "~a preference" (res-sym s))) - (list r) - r))) - (define (edsnipsize a b c) @elem{An @scheme[editor-snip%] normally stretches to wrap around the size of the editor it contains. This method @|a| of the snip @@ -269,11 +263,6 @@ information@|details|, even if the editor currently has delayed refreshing (see "smaller" @elem{the editor is @|b|-aligned in the snip})) - (define (boxisfill which what) - @elem{The @|which| box is filled with @|what|.}) - (define (boxisfillnull which what) - @elem{The @|which| box is filled with @|what|, unless @|which| is @scheme[#f].}) - (define (slant . s) (make-element "slant" (decode-content s))) diff --git a/collects/scribblings/gui/config.scrbl b/collects/scribblings/gui/config.scrbl deleted file mode 100644 index 705c76d087..0000000000 --- a/collects/scribblings/gui/config.scrbl +++ /dev/null @@ -1,9 +0,0 @@ -#lang scribble/doc -@(require "common.ss") - -@title[#:style 'toc]{Configuration} - -@local-table-of-contents[] - -@include-section["prefs.scrbl"] -@include-section["font-config.scrbl"] diff --git a/collects/scribblings/gui/draw-funcs.scrbl b/collects/scribblings/gui/draw-funcs.scrbl deleted file mode 100644 index 1960f7684c..0000000000 --- a/collects/scribblings/gui/draw-funcs.scrbl +++ /dev/null @@ -1,12 +0,0 @@ -#lang scribble/doc -@(require "common.ss") - -@title{Drawing Functions} - -@local-table-of-contents[] - -@include-section["global-draw-funcs.scrbl"] -@include-section["post-script-funcs.scrbl"] -@include-section["draw-list-funcs.scrbl"] -@include-section["bitmap-funcs.scrbl"] -@include-section["font-funcs.scrbl"] diff --git a/collects/scribblings/gui/draw-list-funcs.scrbl b/collects/scribblings/gui/draw-list-funcs.scrbl deleted file mode 100644 index be964fba43..0000000000 --- a/collects/scribblings/gui/draw-list-funcs.scrbl +++ /dev/null @@ -1,36 +0,0 @@ -#lang scribble/doc -@(require "common.ss") - -@title{Drawing Object Lists} - - -@defthing[the-brush-list (is-a?/c brush-list%)]{ - -See @scheme[brush-list%]. - -} - -@defthing[the-color-database (is-a?/c color-database<%>)]{ - -See @scheme[color-database<%>]. - -} - -@defthing[the-font-list (is-a?/c font-list%)]{ - -See @scheme[font-list%]. - -} - -@defthing[the-font-name-directory (is-a?/c font-name-directory<%>)]{ - -See @scheme[font-name-directory<%>]. - - -} - -@defthing[the-pen-list (is-a?/c pen-list%)]{ - -See @scheme[pen-list%]. - -} diff --git a/collects/scribblings/gui/font-config.scrbl b/collects/scribblings/gui/font-config.scrbl deleted file mode 100644 index 02bcf9de8e..0000000000 --- a/collects/scribblings/gui/font-config.scrbl +++ /dev/null @@ -1,386 +0,0 @@ -#lang scribble/doc -@(require "common.ss" - scribble/bnf) - -@title[#:tag "fontresources"]{Font Configuration} - -This chapter describes how to set up face mappings for screen and - PostScript fonts via preferences (see @|mrprefsdiscuss|). The - font-configuration system is overkill; it was designed to handle - especially complex X font mappings before fontconfig/Xft solved the - problem. - -An implementor for a GRacket-based program may find it easier to use the - @method[font-name-directory<%> set-screen-name] and - @method[font-name-directory<%> set-post-script-name] methods - provided by @scheme[the-font-name-directory]. As a user of a - GRacket-based program, preferences provide a mechanism for setting - default mappings. - -Whether a programmer or a user, see @scheme[font-name-directory<%>] for - an overview of the font mapping system. - -To find a font name for a family, GRacket looks for a preference name by - concatenating @litchar{MrEd:}, a @nonterm{dest}, a @nonterm{type}, - a @nonterm{weight}, and a @nonterm{style}, where - -@itemize[ - - @item{@nonterm{dest} is either @litchar{Screen} or @litchar{PostScript}.} - - @item{@nonterm{type} is either @litchar{Default}, @litchar{Decorative}, @litchar{Roman}, @litchar{Script}, - @litchar{Swiss}, @litchar{Modern}, @litchar{System}, or @litchar{Symbol} for a mapping - defining the default font for a family. Otherwise, it is a - face name prefixed with @litchar["@"].} - - @item{@nonterm{weight} is either @litchar{Medium}, @litchar{Bold}, or @litchar{Light}.} - - @item{@nonterm{style} is either @litchar{Straight}, @litchar{Italic}, or @litchar{Slant}.} - -] - -Furthermore, any of the latter three parts can be wildcarded with - @litchar{_}, as described below. The concatenated string is converted - to a symbol (preserving case), and the associated preference value - must be a string. - -The value of the preference is parsed as described in - @scheme[font-name-directory<%>] for parsing face names, except that - the string can contain references and other tricks described below. - -@; ------------------------------------------------------------------------ - -@section[#:tag "exampleresources"]{Wildcards} - -Building items names by concatenating @nonterm{dest}, @nonterm{type}, - @nonterm{weight}, and @nonterm{style} can create a large number of preference - entries, and the @nonterm{weight} and @nonterm{style} parts are useful only - for X screen fonts. To avoid an explosion of preferences, GRacket finds - preferences via a wildcarding search. - -The @nonterm{type}, @nonterm{weight}, and @nonterm{style} parts of a preference name - can be wildcarded by using @litchar{_}. Thus, to set the default font - in X for all types, weights, and styles, use the following preference - entry: - -@schemeblock[ -(MrEd:Screen___ "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -] - -Wildcarded preference entries are used only when un-wildcarded values - cannot be found. If two preference names both match for some search, - then the one with the ``earliest'' (i.e., closest to the beginning of - the preference name) non-wildcarded part will prevail. - -The default GRacket preferences for Windows uses wildcarding to specify - the basic font mapping, as if written as: - -@schemeblock[ -(MrEd:ScreenSystem__ "MS Sans Serif") -(MrEd:ScreenRoman__ "Times New Roman") -(MrEd:ScreenDecorative__ "Modern") -.... -] - -Wildcarding in the preference name naturally leads to references, - variables, and wildcarding references in the preference - value. These features are described in the following few sections. - -@; ------------------------------------------------------------------------ - -@section{References} - -Suppose we define the mapping for variants of @scheme["Default"], and - then we want @scheme["Roman"] to use this setting, too. We could copy - the preference entry, as in the following example: - -@schemeblock[ -(|MrEd:ScreenDefault__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenRoman__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -] - -but the GRacket font-reading system provides a better syntax for - referencing another preference entry. When a preference value contains - @litchar{${x}}, then the @litchar{${x}} fragment is replaced by the - preference value of @litchar{x}. Thus, the above can be re-written: - -@schemeblock[ -(|MrEd:ScreenDefault__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenRoman__| "${ScreenDefault__}") -] - -A mini-language of @litchar{${x}} is used within the string (instead - of an S-expression format) for historical reasons. - -@; ------------------------------------------------------------------------ - -@section{Variables} - -Variables can be used with referencing to configure default values - based on the weight and style that is needed. When a preference - value contains @litchar{$[weight]}, then @litchar{$[weight]} is - replaced with a string for the desired font weight. Similarly, - @litchar{$[style]} is replaced with the desired style. Variable - expressions can be embedded within referencing expressions, as in the - following example: - -@schemeblock[ -(|MrEd:ScreenDefault__| - "+-*-*-${Def$[weight]}-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:DefMedium| "medium") -(|MrEd:DefBold| "bold") -(|MrEd:DefLight| "medium") -] - -Now, when the @Resource{ScreenDefault__} value is used for different - weights, it will return different values; the - @litchar{${Def$[weight]}} expression will turn into - @litchar{${DefMedium}} for a medium-weight lookup, or - @litchar{${DefBold}} for a bold-weight lookup. These references - will in turn give either @litchar{medium} or @litchar{bold}. - -@; ------------------------------------------------------------------------ - -@section{Wildcarding References} - -Consider the following preference configuration: - -@schemeblock[ -(|MrEd:ScreenDefault__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenDefaultBold_| "+-*-*-bold-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenRoman__| "${ScreenDefault__}") -] - -The effect of this statement is probably not what was intended; when a - bold version of the @litchar{Roman} font is needed, the - @Resource{ScreenRoman__} value references the - @Resource{ScreenDefault__} value, which does not specify a bold font. We - could try to remedy the situation as follows: - -@schemeblock[ -(|MrEd:ScreenDefault__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenDefaultBold_| "+-*-*-bold-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenRoman__| "${ScreenDefault$[weight]_}") -] - -but this does not work either. It works fine for bold @litchar{Roman}, - now, but medium @litchar{Roman} will cause a reference to the - @Resource{ScreenDefaultMedium_}, which doesn't exist. The problem is - that our reference does not use wildcarding like the original medium - @litchar{Roman} lookup did. - -Wildcarding can be specified in a reference by separating each - wildcardable field with a comma. The following preference specification - does what we want: - -@schemeblock[ -(|MrEd:ScreenDefault__| "+-*-*-medium-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenDefaultBold_| "+-*-*-bold-r-normal-*-*-%d-*-*-*-*-*-*") -(|MrEd:ScreenRoman__| "${ScreenDefault,$[weight],_}") -] - -Since @litchar{$[weight]} is between commas, it can be wildcarded if - no name exactly matching @litchar{ScreenDefault$[weight]_} is - found. In this case @litchar{ScreenDefault} and @litchar{_} can - also be wildcarded, but this will have no effect. - -The wildcarding used in references need not reflect the wildcarding - GRacket initial uses for finding fonts. In other words, a number of - comma-separated selects can appear between the curly braces. - -@; ------------------------------------------------------------------------ - -@section{Internal Preferences} - -The initial font setup is built into GRacket through a built-in preference - table. The table is shown at the end of this section. When font - information is computed, it is @italic{almost} as if this table were - installed into your preferences file; the difference is that preference - specifications in your file override specifications in the built-in - table, even when the wildcarding of your preference provides a weaker - match. - -When no information is available for mapping a face name to a font, - GRacket falls back to the system described in - @scheme[font-name-directory<%>]. (Since a mapping is built into GRacket - for every family, information is always available for the default - font of a family.) - -Internal preferences for all platforms: - -@schemeblock[ -(|MrEd:PostScriptMediumStraight| "") -(|MrEd:PostScriptMediumItalic| "-Oblique") -(|MrEd:PostScriptMediumSlant| "-Oblique") -(|MrEd:PostScriptLightStraight| "") -(|MrEd:PostScriptLightItalic| "-Oblique") -(|MrEd:PostScriptLightSlant| "-Oblique") -(|MrEd:PostScriptBoldStraight| "-Bold") -(|MrEd:PostScriptBoldItalic| "-BoldOblique") -(|MrEd:PostScriptBoldSlant| "-BoldOblique") - -(|MrEd:PostScript___| "${PostScript$[family],$[weight],$[style]}") - -(|MrEd:PostScriptSystem__| "${PostScriptTimes,$[weight],$[style]}") -(|MrEd:PostScriptRoman__| "${PostScriptTimes,$[weight],$[style]}") -(|MrEd:PostScriptDecorative__| "${PostScriptTimes,$[weight],$[style]}") -(|MrEd:PostScriptScript__| "ZapfChancery-MediumItalic") - -(|MrEd:PostScriptTimesMedium| "") -(|MrEd:PostScriptTimesLight| "") -(|MrEd:PostScriptTimesBold| "Bold") - -(|MrEd:PostScriptTimes__| "Times${PostScript$[weight]$[style]}") -(|MrEd:PostScriptTimesMediumStraight| "Times-Roman") -(|MrEd:PostScriptTimesLightStraight| "Times-Roman") -(|MrEd:PostScriptTimes_Slant| - "Times-${PostScriptTimes$[weight]}Italic") -(|MrEd:PostScriptTimes_Italic| - "Times-${PostScriptTimes$[weight]}Italic") - -(|MrEd:PostScriptDefault__| "Helvetica${PostScript$[weight]$[style]}") -(|MrEd:PostScriptSwiss__| "Helvetica${PostScript$[weight]$[style]}") -(|MrEd:PostScriptModern__| "Courier${PostScript$[weight]$[style]}") -(|MrEd:PostScriptSymbol__| "Symbol") -] - -Internal preferences for X with fontconfig/Xft/RENDER only: - -@schemeblock[ -(|MrEd:ScreenSystem__| " Sans") -(|MrEd:ScreenDefault__| " Sans") -(|MrEd:ScreenRoman__| " Serif") -(|MrEd:ScreenDecorative__| " Nimbus Sans L") -(|MrEd:ScreenModern__| " Monospace") -(|MrEd:ScreenSwiss__| " Nimbus Sans L") -(|MrEd:ScreenScript__| " URW Chancery L") -(|MrEd:ScreenSymbolBase| " Standard Symbols L,Nimbus Sans L") -] - -Internal preferences for X only (except those overridden for fontconfig/Xft/RENDER): - -@schemeblock[ -(|MrEd:ScreenMedium| "medium") -(|MrEd:ScreenBold| "bold") -(|MrEd:ScreenLight| "light") -(|MrEd:ScreenStraight| "r") -(|MrEd:ScreenItalic| "i") -(|MrEd:ScreenSlant| "o") - -(|MrEd:ScreenSystemBase| "*-lucida") -(|MrEd:ScreenDefaultBase| "*-lucida") -(|MrEd:ScreenRomanBase| "*-times") -(|MrEd:ScreenDecorativeBase| "*-helvetica") -(|MrEd:ScreenModernBase| "*-courier") -(|MrEd:ScreenSwissBase| "*-lucida") -(|MrEd:ScreenScriptBase| "*-zapfchancery") -(|MrEd:ScreenSymbolBase| "*-symbol") - -(|MrEd:ScreenStdSuffix| - "-${Screen$[weight]}-${Screen$[style]}-normal-*-*-%d-*-*-*-*-*-*") - -(|MrEd:ScreenSystem__| "+-${ScreenSystemBase}${ScreenStdSuffix}") -(|MrEd:ScreenDefault__| "+-${ScreenDefaultBase}${ScreenStdSuffix}") -(|MrEd:ScreenRoman__| "+-${ScreenRomanBase}${ScreenStdSuffix}") -(|MrEd:ScreenDecorative__| - "+-${ScreenDecorativeBase}${ScreenStdSuffix}") -(|MrEd:ScreenModern__| "+-${ScreenModernBase}${ScreenStdSuffix}") -(|MrEd:ScreenSwiss__| "+-${ScreenSwissBase}${ScreenStdSuffix}") -(|MrEd:ScreenScript__| "+-${ScreenScriptBase}${ScreenStdSuffix}") -(|MrEd:ScreenSymbol__| - "+-${ScreenSymbolBase}-medium-r-normal-*-*-%d-*-*-*-*-*-*") -] - -Internal preferences for Windows only: - -@schemeblock[ -(|MrEd:ScreenSystem__| "MS Sans Serif") -(|MrEd:ScreenDefault__| "MS Sans Serif") -(|MrEd:ScreenRoman__| "Times New Roman") -(|MrEd:ScreenDecorative__| "Arial") -(|MrEd:ScreenModern__| "Courier New") -(|MrEd:ScreenSwiss__| "Arial") -(|MrEd:ScreenScript__| "Arial") -(|MrEd:ScreenSymbol__| "Symbol") -] - -Internal preferences for Mac OS X only: - -@schemeblock[ -(|MrEd:ScreenDefault__| "Lucida Grande") -(|MrEd:ScreenSystem__| "Lucida Grande") -(|MrEd:ScreenRoman__| "Times") -(|MrEd:ScreenDecorative__| "Arial") -(|MrEd:ScreenModern__| "Courier New") -(|MrEd:ScreenSwiss__| "Helvetica") -(|MrEd:ScreenScript__| "Apple Chancery") -(|MrEd:ScreenSymbol__| "Symbol") -] - -@; ------------------------------------------------------------------------ - -@section[#:tag "postscriptfonts"]{PostScript Fonts} - -@section-index["fonts" "PostScript"] -@section-index["PostScript fonts"] -@section-index["AFM"] -@section-index["CID"] -@section-index["CMap"] - -To generate PostScript output, GRacket must be able to find an @|AFM| - (AFM) file corresponding to the PostScript font. An AFM file - typically uses the suffix @indexed-file{.afm}, and several AFM files - are distributed with GRacket in the @filepath{afm} collection. - -GRacket finds an AFM file by adding a @filepath{.afm} suffix to the - PostScript name of the font, and checking all directories specified - by the @scheme[current-ps-afm-file-paths] parameter. The initial - value of this parameter is determined by the - @indexed-envvar{PLTAFMPATHS} environment variable; the environment - variable's setting is parsed with - @scheme[path-list-string->path-list] using @scheme[(list - (collection-path "afm"))] as the default list. - -Depending on whether the font is CID-based (typically for the Chinese, - Japanese, Korean, and Vietnamese language families, and as indicated - in the AFM file), GRacket must find additional files: - - @itemize[ - - @item{@italic{Non-CID:} In addition to an AFM file - @filepath{@nonterm{x}.afm}, GRacket looks for a - @filepath{@nonterm{x}-glyphlist.txt} file (in the same directory as the - AFM file) to map glyph names in the AFM file to Unicode character - values. In addition to this font-specific file, GRacket looks for a - @indexed-file{glyphlist.txt} file to supply a mapping for Adobe's - standard glyph names, and this mapping is used when a font-specific - mapping is not supplied, or when the mapping does not cover a name - found in the AFM file. GRacket looks for @filepath{glyphlist.txt} in the - same place as AFM files. Since @filepath{glyphlist.txt} is large, if a - @indexed-file{glyphshortlist.txt} file is available, it is read first, - and then @filepath{glyphlist.txt} is read only if a character name must - be resolved that is not in @filepath{glyphshortlist.txt}.} - - @item{@italic{CID:} In addition to an AFM file, GRacket must find and - read CMap files to convert glyph IDs for the font to Unicode - characters. The character set name is used as the name of the CMap - file to load, and GRacket checks all directories specified by the - @scheme[current-ps-cmap-file-paths] parameter. The initial value of - this parameter is determined by the @indexed-envvar{PLTCMAPPATHS} - environment variable; the environment variable's setting is parsed - with @scheme[path-list-string->path-list] using @scheme[(list - (collection-path "afm" "CMap"))] as the default list. In addition to - a CMap file for the font's character set, GRacket must find a - @indexed-file{UniCNS-UTF32-H} CMap file to complete the mapping to - Unicode. GRacket automatically adds the font's character set to the font - name when producing PostScript with a CID-based font.} - - ] - -When drawing or measuring text using a particular PostScript font, if - the font does not contain a glyph for a character (or if a relevant - AFM file cannot be found for the font), then GRacket attempts to - substitute another PostScript font. A substitute font is selected by - checking all @filepath{.afm} files in the directories specified - by @scheme[current-ps-afm-file-paths] (in order), and choosing the - first discovered match. diff --git a/collects/scribblings/gui/font-funcs.scrbl b/collects/scribblings/gui/font-funcs.scrbl index 74923e896b..3eef2d2db0 100644 --- a/collects/scribblings/gui/font-funcs.scrbl +++ b/collects/scribblings/gui/font-funcs.scrbl @@ -3,28 +3,6 @@ @title{Fonts} - -@defproc[(get-face-list [family (one-of/c 'mono 'all) 'all]) - (listof string?)]{ - -Returns a list of font face names available on the current system. If - @scheme['mono] is provided as the argument, then only faces that are - known to correspond to monospace fonts are included in the list. - -} - -@defproc[(get-family-builtin-face [family (one-of/c 'default 'decorative 'roman 'script - 'swiss 'modern 'symbol 'system)]) - string?]{ - -Returns the built-in default face mapping for a particular font - family. The built-in default can be overridden via preferences, as - described in @secref["fontresources"]. - -See @scheme[font%] for information about @scheme[family]. - -} - @defthing[menu-control-font (is-a?/c font%)]{ This font is the default for @scheme[popup-menu%] objects. diff --git a/collects/scribblings/gui/gui.scrbl b/collects/scribblings/gui/gui.scrbl index 3fced25bbe..31cdac7af2 100644 --- a/collects/scribblings/gui/gui.scrbl +++ b/collects/scribblings/gui/gui.scrbl @@ -1,7 +1,7 @@ #lang scribble/doc @(require "common.ss") -@title{@bold{GUI}: Racket Graphics Toolkit} +@title{@bold{GUI}: Racket Graphical Interface Toolkit} @author["Matthew Flatt" "Robert Bruce Findler" "John Clements"] @@ -9,12 +9,13 @@ @defmodule*/no-declare[(racket/gui/base)]{The @racketmodname[racket/gui/base] library provides all of the class, -interface, and procedure bindings defined in this manual.} +interface, and procedure bindings defined in this manual, in addition +to the bindings of @racketmodname[racket/draw].} @defmodulelang*/no-declare[(racket/gui)]{The @racketmodname[racket/gui] language combines all bindings of the @racketmodname[racket] language and the -@racketmodname[racket/gui/base] modules.} +@racketmodname[racket/gui/base] and @racketmodname[racket/draw] modules.} @table-of-contents[] @@ -23,23 +24,9 @@ interface, and procedure bindings defined in this manual.} @include-section["guide.scrbl"] @include-section["reference.scrbl"] -@include-section["config.scrbl"] +@include-section["prefs.scrbl"] @include-section["dynamic.scrbl"] - -@;------------------------------------------------------------------------ - -@(bibliography - - (bib-entry #:key "Adobe99" - #:author "Adobe Systems Incorporated" - #:title "PostScript Language Reference, third edition" - #:is-book? #t - #:url "http://partners.adobe.com/public/developer/en/ps/PLRM.pdf" - #:date "1999") - - ) - @;------------------------------------------------------------------------ @index-section[] diff --git a/collects/scribblings/gui/guide.scrbl b/collects/scribblings/gui/guide.scrbl index 451958a3a9..3b4058e5c8 100644 --- a/collects/scribblings/gui/guide.scrbl +++ b/collects/scribblings/gui/guide.scrbl @@ -4,7 +4,7 @@ @title[#:style '(toc reveal)]{Overview} For documentation purposes, the graphics toolbox is organized into - three parts: + two parts: @itemize[ @@ -13,11 +13,6 @@ For documentation purposes, the graphics toolbox is organized into text fields, and events. The windowing toolbox is described in @secref["windowing-overview"].} - @item{The @deftech{drawing toolbox}, for drawing pictures or - implementing dynamic GUI programs (such as a video game) using - drawing canvases, pens, and brushes. The drawing toolbox is - described in @secref["drawing-overview"].} - @item{The @deftech{editor toolbox}, for developing traditional text editors, editors that mix text and graphics, or free-form layout editors (such as a word processor, HTML editor, or icon-based file @@ -26,11 +21,8 @@ For documentation purposes, the graphics toolbox is organized into ] -These three parts roughly represent layers of increasing - sophistication. Simple GUI programs access only the windowing toolbox - directly, more complex programs use both the windowing and drawing - toolboxes, and large-scale applications rely on all three - toolboxes. +Simple GUI programs access only the windowing toolbox directly, while + large-scale applications tend to use the editor toolbox as well. @local-table-of-contents[] @@ -40,8 +32,4 @@ These three parts roughly represent layers of increasing @;------------------------------------------------------------------------ -@include-section["draw-overview.scrbl"] - -@;------------------------------------------------------------------------ - @include-section["editor-overview.scrbl"] diff --git a/collects/scribblings/gui/post-script-funcs.scrbl b/collects/scribblings/gui/post-script-funcs.scrbl deleted file mode 100644 index 90c5eb5dde..0000000000 --- a/collects/scribblings/gui/post-script-funcs.scrbl +++ /dev/null @@ -1,25 +0,0 @@ -#lang scribble/doc -@(require "common.ss") - -@title{PostScript} - -@defparam[current-ps-afm-file-paths paths (listof path?)]{ - -A parameter determines the list of paths that is used to find AFM - files. See @secref["postscriptfonts"] for more information. - -} - -@defparam[current-ps-cmap-file-paths paths (listof path?)]{ - -A parameter that determines the list of paths that is used to find - CMap files. See @secref["postscriptfonts"] for more information. - -} - -@defparam[current-ps-setup pss (is-a?/c ps-setup%)]{ - -A parameter that determines the current PostScript configuration - settings. See @scheme[post-script-dc%] and @scheme[printer-dc%]. - -} diff --git a/collects/scribblings/gui/prefs.scrbl b/collects/scribblings/gui/prefs.scrbl index 0bc678659a..ae69442625 100644 --- a/collects/scribblings/gui/prefs.scrbl +++ b/collects/scribblings/gui/prefs.scrbl @@ -20,11 +20,6 @@ The following are the (case-sensitive) preference names used by GRacket: the basic style in a style list, and thus the default font size for an editor.} - @item{@ResourceFirst{controlFontSize} --- sets the font size for - control and menu labels (Windows, X); the font is the @scheme['system] - font, which can be configured as described in - @secref["fontresources"].} - @item{@ResourceFirst{defaultMenuPrefix} --- sets the prefix used by default for menu item shortcuts under X, one of @scheme['ctl], @scheme['meta], or @scheme['alt]. The default is @@ -32,25 +27,10 @@ The following are the (case-sensitive) preference names used by GRacket: @scheme['alt], underlined mnemonics (introduced by @litchar{&} in menu labels) are suppressed.} - @item{@ResourceFirst{altUpSelectsMenu} --- a true value makes - pressing and releasing the Alt key select the first menu in the menu - bar under X.} - @item{@ResourceFirst{emacsUndo} --- a true value makes undo in editors work as in Emacs (i.e., undo operations are themselves kept in the undo stack).} - @item{@ResourceFirst{hiliteColor} --- a string to sets the color for - highlighting text, menus, and other GUI elements under X; the - preference string should contain six hexadecimal digits, two for each - component of the color. For example, set @Resource{hiliteColor} to - @scheme["0000A0"] and set @Resource{hiliteMenuBorder} to @scheme[#t] - for a Bluecurve-like look.} - - @item{@ResourceFirst{hiliteMenuBorder} --- a true value causes a menu - selection to be highlighted with a border (in addition to a color) under - X.} - @item{@ResourceFirst{wheelStep} --- sets the default mouse-wheel step size of @scheme[editor-canvas%] objects.} @@ -61,26 +41,8 @@ The following are the (case-sensitive) preference names used by GRacket: @item{@ResourceFirst{playcmd} --- used to format a sound-playing command; see @scheme[play-sound] for details.} - @item{@ResourceFirst{forceFocus} --- a true value enables extra - effort in GRacket to move the focus to a top-level window that is shown - or raised.} - @item{@ResourceFirst{doubleClickTime} --- overrides the platform-specific default interval (in milliseconds) for double-click events.} - @item{@ResourceFirst{gamma} --- sets the gamma value used in - gamma-correcting PNG files.} - - @item{@ResourceFirst{selectionAsClipboard} --- under X, a true value - causes @scheme[the-clipboard] to be an alias to - @scheme[the-x-selection-clipboard], which means that cut and paste - operations use the X selection instead of the X clipboard. See also - @scheme[clipboard<%>].} - - ] - -In addition, preference names built from font face names can provide - or override default entries for the @scheme[font-name-directory<%>]; - see @secref["fontresources"] for information. diff --git a/collects/scribblings/gui/printer-dc-class.scrbl b/collects/scribblings/gui/printer-dc-class.scrbl index e6078bfd7e..f75220bdac 100644 --- a/collects/scribblings/gui/printer-dc-class.scrbl +++ b/collects/scribblings/gui/printer-dc-class.scrbl @@ -3,13 +3,10 @@ @defclass/title[printer-dc% object% (dc<%>)]{ -A @scheme[printer-dc%] object is a Windows or Mac OS X printer - device context. The class cannot be instantiated under X (an - @scheme[exn:misc:unsupported] exception is raised). - -Under Mac OS X, a newly created @scheme[printer-dc%] object obtains - orientation (portrait versus landscape) and scaling information from - the current @scheme[ps-setup%] object, as determined by the +A @scheme[printer-dc%] object is a printer device context. A newly + created @scheme[printer-dc%] object obtains orientation (portrait + versus landscape) and scaling information from the current + @scheme[ps-setup%] object, as determined by the @scheme[current-ps-setup] parameter. This information can be configured by the user through a dialog shown by @scheme[get-page-setup-from-user]. diff --git a/collects/scribblings/gui/reference.scrbl b/collects/scribblings/gui/reference.scrbl index a6cf354ab0..707a646f8c 100644 --- a/collects/scribblings/gui/reference.scrbl +++ b/collects/scribblings/gui/reference.scrbl @@ -7,8 +7,6 @@ @include-section["win-classes.scrbl"] @include-section["win-funcs.scrbl"] -@include-section["draw-classes.scrbl"] -@include-section["draw-funcs.scrbl"] @include-section["editor-classes.scrbl"] @include-section["editor-funcs.scrbl"] @include-section["wxme.scrbl"] diff --git a/collects/scribblings/gui/win-classes.scrbl b/collects/scribblings/gui/win-classes.scrbl index ee89b35258..afa5b9edeb 100644 --- a/collects/scribblings/gui/win-classes.scrbl +++ b/collects/scribblings/gui/win-classes.scrbl @@ -57,6 +57,7 @@ Alphabetical: @include-section["pane-class.scrbl"] @include-section["panel-class.scrbl"] @include-section["popup-menu-class.scrbl"] +@include-section["printer-dc-class.scrbl"] @include-section["radio-box-class.scrbl"] @include-section["selectable-menu-item-intf.scrbl"] @include-section["separator-menu-item-class.scrbl"] diff --git a/collects/scribblings/gui/win-funcs.scrbl b/collects/scribblings/gui/win-funcs.scrbl index 248d79bbe1..70bb4e7253 100644 --- a/collects/scribblings/gui/win-funcs.scrbl +++ b/collects/scribblings/gui/win-funcs.scrbl @@ -8,4 +8,6 @@ @include-section["dialog-funcs.scrbl"] @include-section["eventspace-funcs.scrbl"] @include-section["system-menu-funcs.scrbl"] +@include-section["global-draw-funcs.scrbl"] +@include-section["font-funcs.scrbl"] @include-section["miscwin-funcs.scrbl"] diff --git a/doc/release-notes/racket/Draw_and_GUI_5_1.txt b/doc/release-notes/racket/Draw_and_GUI_5_1.txt index 26a023904f..ddc76d856f 100644 --- a/doc/release-notes/racket/Draw_and_GUI_5_1.txt +++ b/doc/release-notes/racket/Draw_and_GUI_5_1.txt @@ -137,3 +137,7 @@ Removed Functions The `write-resource, `get-reource', and `send-event' functions have been removed from `racket/gui/base'. If there is any demand for the removed functionality, it will be implemented in a new library. + +The `current-ps-afm-file-paths' and `current-ps-cmap-file-paths' +functions have been removed, because they no longer apply. PostScript +font information is obtained through Pango.