Pict Abbrevs (original) (raw)

8.15

Changed in version 0.3 of package pict-abbrevs: The pict-abbrevs module no longer reprovidespict-abbrevs/slideshow, and consequently no longer depends on racket/gui/base.

1 Pict Utilities🔗ℹ

If the name revolution is too long, then do (require (rename-in pict-abbrevs [revolution turn])).

Examples:

Contract for "real percent". Same as (between/c 0 1).

Same as (>=/c 0).

Examples:

> (nonnegative-real? 0)
#t
> (nonnegative-real? 2.77)
#t
> (nonnegative-real? 9001)
#t
> (nonnegative-real? -1)
#f
> (nonnegative-real? 'X)
#f

Flat contract for the kinds of values that pict functions can usually interpret as colors.

Creates a color% object. If pc and default are #false, returns (string->color% "white").

Examples:

> (pict-color->color% "blue")
(object:color% ...)
> (pict-color->color% #f)
(object:color% ...)

Flat contract for an RGB triplet. See also: Plot Utilities.

Converts an RGB triplet to a color object.

Converts a Hex Code RGB to a color object. Expects inputs between #x000000 and #xffffff.

Example:

image

Returns a list of picts with identical width and height. The new picts may be old picts superimposed upon a blank background.

Example:

Similar to max but expects a list of numbers. Raises an exn:fail:contract? error when given an empty list.

Example:

Similar to min but expects a list of numbers. Raises an exn:fail:contract? error when given an empty list.

Example:

Compute the midpoint of the interval [x0, x1].

Example:

Returns a filled-rectangle with the given width, height, and color.

Examples:

> (rule 20 2)
image
> (rule 1 10)
image
> (rule 8 8)
image

Converts a string to a color object.

Exports the given pict to the file ps, using kind to determine the output format.

Changed in version 0.8 of package pict-abbrevs: Added support for 'pdf, 'ps, 'eps. Thanks toracket/pict/issues/74.

Added in version 0.8 of package pict-abbrevs.

(add-rectangle-background pp [#:radius radius #:color color #:draw-border? draw-border? #:x-margin x-margin #:y-margin y-margin]) → pict?
pp : pict?
radius : real? = 10
color : pict-color/c = "white"
draw-border? : boolean? = #false
x-margin : real? = 0
y-margin : real? = 0

Add a rectangle behind a pict.

Example:

(add-rounded-border pp [#:radius radius #:background-color bg-color #:frame-width frame-width #:frame-color frame-color #:x-margin x-margin #:y-margin y-margin]) → pict?
pp : pict?
radius : real? = 10
bg-color : pict-color/c = "white"
frame-width : real? = 1
frame-color : pict-color/c = "black"
x-margin : real? = 0
y-margin : real? = 0

Add a bordered rectangle behind a pict.

Example:

(add-spotlight-background pp [#:blur blur #:border-color border-color #:color color #:border-width border-width #:x-margin x-margin #:y-margin y-margin]) → pict?
pp : pict?
blur : (or/c #f real?) = 15
border-color : pict-color/c = "plum"
color : pict-color/c = border-color
border-width : real? = 10
x-margin : real? = 40
y-margin : real? = 40

Superimposes the given pict on a blurred ellipse.

Examples:

(bbox pp [#:color color #:frame-color frame-color #:frame-width frame-width #:x-margin x-margin #:y-margin y-margin]) → pict?
pp : pict?
color : pict-color/c = "white"
frame-color : (or/c #f pict-color/c) = (bbox-frame-color)
frame-width : (or/c #f real?) = (bbox-frame-width)
x-margin : (or/c #f real?) = (bbox-x-margin)
y-margin : (or/c #f real?) = (bbox-y-margin)

A standard big box, or basic box. Most importantly, the name bbox is easy to type.

Comes with reasonable defaults and parameters for fine-tuning.

Example:

Draws a small box around a pict. The name is easy to type.

Example:

Default values for bbox and sbox picts.

Create a new tag (symbol) from a sequence of values. Equivalent to:

Examples:

> (tag-append 'N 'W)
'N-W
> (tag-append "-" 1)
'--1

Add four blank picts to the sides of the base pict. These blank "hubs" are useful targets for lines and/or arrows; see the examples below.

Non-Example:

image

Clips a pict to a box with the given width and height (positioned at the center of the pict).

Example:

1.1 Pict Constructors🔗ℹ

Draw a blank pict with the same width and height as the given pict.

Example:

image

The pict function ghost is similar, but preserves tags and other metadata.

Draw a blank pict with the given width and zero height. Same as (blank width 0).

Added in version 0.7 of package pict-abbrevs.

Draw a blank pict with the given height and zero width. Same as (blank 0 height).

Added in version 0.7 of package pict-abbrevs.

Wrapper for the pict table function. Accepts either a flat list of picts or a list of equal-length lists.

Examples:

> (ptable pairs)
image

Added in version 0.8 of package pict-abbrevs.

(make-envelope-pict w h [#:color color #:line-width line-width #:line-color line-color]) → pict?
w : nonnegative-real?
h : nonnegative-real?
color : pict-color/c = "mint cream"
line-width : nonnegative-real? = 2
line-color : pict-color/c = "black"

Draw an envelope.

Examples:

> (make-envelope-pict 28 20)
image
> (make-envelope-pict 50 24 #:color "rosy brown" #:line-color "powder blue" #:line-width 4)
image

Added in version 0.8 of package pict-abbrevs.

(make-check-pict n [#:color color #:line-width line-width #:line-color line-color]) → pict? n : nonnegative-real? color : pict-color/c = #f line-width : nonnegative-real? = #f line-color : pict-color/c = #f
(make-cross-pict n [#:color color #:line-width line-width #:line-color line-color]) → pict? n : nonnegative-real? color : pict-color/c = #f line-width : nonnegative-real? = #f line-color : pict-color/c = #f

Draw a check mark, draw an X mark.

Example:

image

Added in version 0.8 of package pict-abbrevs.

(make-compass-pict side-len [#:color color]) → pict?
side-len : nonnegative-real?
color : pict-color/c = "black"

Draw a 4-pointed star that fits in a square with side length side-len.

Examples:

(make-mouse-cursor-pict w h [#:color color]) → pict?
w : nonnegative-real?
h : nonnegative-real?
color : pict-color/c = "black"

Draw a simple mouse cursor.

Example:

(make-simple-flag base [#:flag-background-color flag-background-color #:flag-border-color flag-border-color #:flag-border-width flag-border-width #:flag-brush-style flag-brush-style #:flag-x-margin flag-x-margin #:flag-y-margin flag-y-margin #:pole-width pole-width #:pole-height pole-height #:pole-color pole-color #:pole-border-color pole-border-color])
→ pict?
base : pict?
flag-background-color : (or/c (is-a?/c color%) #f) = #f
flag-border-color : (or/c (is-a?/c color%) #f) = #f
flag-border-width : (or/c nonnegative-real? #f) = #f
flag-brush-style : (or/c brush-style/c #f) = #f
flag-x-margin : (or/c nonnegative-real? #f) = #f
flag-y-margin : (or/c nonnegative-real? #f) = #f
pole-width : (or/c nonnegative-real? #f) = #f
pole-height : (or/c nonnegative-real? #f) = #f
pole-color : (or/c (is-a?/c color%) #f) = #f
pole-border-color : (or/c (is-a?/c color%) #f) = #f

Draw a simple flag with base superimposed on the fabric.

Increase flag-x-margin and flag-y-margin to add space between the base pict and the edge of the flag.

Example:

Standard lightbulb. By Phil McGrath. License Apache-2.0.

Example:

Added in version 0.11 of package pict-abbrevs.

Draw the given string using all fonts returned by (get-face-list), or the first n fonts if a limit is supplied.

Example:

> (make-font-table-pict "Racket" #:limit 6)
image

2 Slideshow Abbrevs🔗ℹ

(slide-assembler/background base-assembler #:color background-color [#:draw-border? draw-border? #:border-color border-color #:border-width border-width])
→ slide-assembler/c
base-assembler : slide-assembler/c
background-color : pict-color/c
draw-border? : boolean? = #false
border-color : pict-color/c = #false
border-width : (or/c #f real?) = #false

Returns a slide assembler that: (1) uses the given base-assembler to create a pict, and (2) superimposes the pict onto a filled-rectanglethat covers the screen. The optional arguments set the style of the background rectangle.

(pixels->w% x) → real%
x : nonnegative-real?

Converts a pixel distance to a percentage of the max screen width, i.e., (+ (* 2 margin) client-w). Raise an exn:fail:contract? exception if the given distance exceeds the max width.

(pixels->h% x) → real%
x : nonnegative-real?

Converts a pixel distance to a percentage of the max screen height, i.e., (+ (* 2 margin) client-h). Raise an exn:fail:contract? exception if the given distance exceeds the max height.

(w%->pixels w) → nonnegative-real?
w : real%

Converts a percent to the number of pixels required to cover that percent of client-w.

(h%->pixels w) → nonnegative-real?
w : real%

Converts a percent to the number of pixels required to cover that percent of client-h.

Draws colored text.

Returns a placer that places picts to a reference point relative to an existing pict within the base. For at-underline the reference point is the bottom-left. For at-leftline the reference point is the top-left. If given, abs-x and abs-y shift the reference point. See also at-find-pict.

Draw a horizontal line wide enough to underline the given pict.

#lang racket/base
(require pict-abbrevs/slideshow ppict/2)
(let ((word (text "Word")))
(ppict-do
(file-icon 50 40 "bisque")
#:go (coord 1/2 1/2 'cc)
word
#:go (at-underline word)
(make-underline word)))

Draw a vertical line that is equally high as the given pict.

#lang racket/base
(require pict-abbrevs/slideshow ppict/2)
(let ((word (text "Word")))
(ppict-do
(file-icon 100 80 "bisque")
#:go (coord 1/2 1/2 'cc)
word
#:go (at-leftline word)
(make-leftline word #:width 10)))

Add a background of the given color to all picts tagged (in the sense oftag-pict?) with tag in the scene pp.

#lang racket/base
(require pict-abbrevs/slideshow ppict/2)
(ppict-do
(blank 80 40)
#:set (for/fold ((acc ppict-do-state))
((i (in-range 8)))
(ppict-do
acc
#:go (coord (/ (* i 10) 80) 9/10)
(if (even? i)
(tag-pict (text "X") 'X)
(tag-pict (text "O") 'O))))
#:set (make-highlight* ppict-do-state 'X))

highlight-pen-color : pict-color/c

Default color for underlines, etc.

highlight-brush-color : pict-color/c

Default color for highlights.

3 PPict Abbrevs🔗ℹ

Animation helper for ppicts.

(pplay gen [#:steps steps #:delay delay-secs #:skip-first? skip-first? #:title title #:name name #:aspect aspect #:layout layout] #:gap-size real? #:inset slide-inset?) → void?
gen : (-> ppict? (real-in 0.0 1.0) pict?)
steps : exact-positive-integer? = (current-play-steps)
delay-secs : real? = 0.05
skip-first? : any/c = #f
title : (or/c string? #f) = #f
name : (or/c string? #f) = title
aspect : aspect? = #f
layout : (or/c 'auto 'center 'top 'tall) = 'auto
real? : (current-gap-size)
slide-inset? : no-inset

Generates steps+1 pslides by calling gen on a base ppict (created by pslide) and equally-spaced values from 0.0(inclusive) to 1.0 (exclusive). Except for the first slide (which may be skipped), each slide has a timeout ofdelay-secs, so that the next slide appears automatically.

The #:steps, #:delay, and #:skip-first?options are interpreted the same as for the playprocedure. The remaining options are interpreted the same as forpslide.

Example:

Added in version 0.8 of package pict-abbrevs.

4 raco pict🔗ℹ

To vertically append image files and/or Racket modules:

raco pict vl-append ARG ...

If an ARG is an image file, then raco pict parses it via thebitmap function.

If an ARG is a #lang module, then it must contain a submodule named raco-pictthat provides an identifier named raco-pict. For example:

Other pict functions may work.

Other arguments may work as expected. Certainly raco pict vl-append 20 a.png b.png vertically appends two image files with "20 space" in between.