1 Basic Commands
2 Position Operations
3 Color Operations
4 Draw, Clear, and Flip Operations
5 World Operations
6 Miscellaneous Operations
7 An Example
8 A More Complicated Example
9 Protecting Graphics Operations
10 Mouse Operations
11 Keyboard Operations
12 Flushing
13 Graphics Library as a Unit
On this page:
4.1 Viewports
draw-viewport
clear-viewport
flip-viewport
copy-viewport
4.2 Pixels
draw-pixel
clear-pixel
flip-pixel
4.3 Lines
draw-line
clear-line
flip-line
4.4 Rectangles
draw-rectangle
clear-rectangle
flip-rectangle
draw-solid-rectangle
clear-solid-rectangle
flip-solid-rectangle
4.5 Ellipses
draw-ellipse
clear-ellipse
flip-ellipse
draw-solid-ellipse
clear-solid-ellipse
flip-solid-ellipse
4.6 Polygons
draw-polygon
clear-polygon
flip-polygon
draw-solid-polygon
clear-solid-polygon
flip-solid-polygon
4.7 Strings
draw-string
clear-string
flip-string
4.8 Pixmaps
draw-pixmap-posn
draw-pixmap
save-pixmap
Version: 4.0.2

 

4 Draw, Clear, and Flip Operations

The following are the basic graphics operations for drawing to a viewport. Each function takes a viewport as its argument and returns a function operating within that viewport. Further arguments, if any, are curried. For example, (draw-line viewport) returns a function, that can then be applied to the proper arguments to draw a line in the viewport corresponding to viewport descriptor viewport.

In general, draw- functions make pixels black or colored, clear- functions make them white, and flip- commands invert pixels (which makes black white, white black, and is otherwise ill-defined).

4.1 Viewports

((draw-viewport viewport) [color])  void?

  viewport : viewport?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Colors the entire contents of viewport with color.

((clear-viewport viewport))  void?

  viewport : viewport?

Whitens the entire contents of viewport.

((flip-viewport viewport))  void?

  viewport : viewport?

Inverts the entire contents of viewport.

(copy-viewport source dest)  void?

  source : viewport?

  dest : viewport?

Copies the content of source into dest.

4.2 Pixels

((draw-pixel viewport) p [color])  void?

  viewport : viewport?

  p : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Colors the pixel in viewport at p.

((clear-pixel viewport) p)  void?

  viewport : viewport?

  p : posn?

Whitens the pixel in viewport at p.

((flip-pixel viewport) p)  void?

  viewport : viewport?

  p : posn?

Inverts the pixel in viewport at p.

4.3 Lines

((draw-line viewport) p1 p2 [color])  void?

  viewport : viewport?

  p1 : posn?

  p2 : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a line in viewport connecting positions p1 and p2.

((clear-line viewport) p1 p2)  void?

  viewport : viewport?

  p1 : posn?

  p2 : posn?

Whitens a line in viewport connecting positions p1 and p2.

((flip-line viewport) p1 p2)  void?

  viewport : viewport?

  p1 : posn?

  p2 : posn?

Inverts a line in viewport connecting positions p1 and p2.

4.4 Rectangles

((draw-rectangle

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height

 

 

 

 

 

 [

color])

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a rectangle border in the viewport with the top-left of the rectangle at the position p and with sides width across and height tall.

((clear-rectangle viewport) p width height)  void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Whitens a rectangle border in the viewport, analogous to draw-rectangle.

((flip-rectangle viewport) p width height)  void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Inverts a rectangle border in the viewport, analogous to draw-rectangle.

((draw-solid-rectangle

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height

 

 

 

 

 

 [

color])

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a solid rectangle in the viewport with the top-left of the rectangle at the position p and with sides width across and height tall.

((clear-solid-rectangle

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height)

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Whitens a rectangle border in the viewport, analogous to draw-solid-rectangle.

((flip-solid-rectangle

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height)

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Inverts a rectangle border in the viewport, analogous to draw-solid-rectangle.

4.5 Ellipses

((draw-ellipse viewport) p width height [color])  void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a ellipse border in the viewport. The ellipse is inscribed with a rectangle whose top-left is at position p and with sides width across and height tall.

((clear-ellipse viewport) p width height)  void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Whitens a ellipse border in the viewport, analogous to draw-ellipse.

((flip-ellipse viewport) p width height)  void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Inverts a ellipse border in the viewport, analogous to draw-ellipse.

((draw-solid-ellipse

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height

 

 

 

 

 

 [

color])

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a solid ellipse in the viewport. The ellipse is inscribed with a rectangle whose top-left is at position p and with sides width across and height tall.

((clear-solid-ellipse

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height)

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Whitens a ellipse border in the viewport, analogous to draw-solid-ellipse.

((flip-solid-ellipse

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 

width

 

 

 

 

 

 

height)

 

 

void?

  viewport : viewport?

  p : posn?

  width : (and/c real? (not/c negative?))

  height : (and/c real? (not/c negative?))

Inverts a ellipse border in the viewport, analogous to draw-solid-ellipse.

4.6 Polygons

((draw-polygon viewport) points offset [color])  void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a polygon border in viewport using points for the polygon vertices and offset as an offset added to all points.

((clear-polygon viewport) points offset)  void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

Whitens a polygon border in viewport, analogous to draw-polygon.

((flip-polygon viewport) points offset)  void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

Inverts a polygon border in viewport, analogous to draw-polygon.

((draw-solid-polygon

 

viewport)

 

 

 

 

 

 

points

 

 

 

 

 

 

offset

 

 

 

 

 

 [

color])

 

 

void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a solid polygon in viewport using points for the polygon vertices and offset as an offset added to all points.

((clear-solid-polygon

 

viewport)

 

 

 

 

 

 

points

 

 

 

 

 

 

offset)

 

 

void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

Whitens a polygon border in viewport, analogous to draw-solid-polygon.

((flip-solid-polygon

 

viewport)

 

 

 

 

 

 

points

 

 

 

 

 

 

offset)

 

 

void?

  viewport : viewport?

  points : (listof posn?)

  offset : posn?

Inverts a polygon border in viewport, analogous to draw-solid-polygon.

4.7 Strings

((draw-string viewport) p str [color])  void?

  viewport : viewport?

  p : posn?

  str : string?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a string at a specified location in the viewport. The lower left of the string begins at p.

((clear-string viewport) p str)  void?

  viewport : viewport?

  p : posn?

  str : string?

Whitens a string at a specified location in the viewport. The lower left of the string begins at p.

((flip-string viewport) p str)  void?

  viewport : viewport?

  p : posn?

  str : string?

Inverts a string at a specified location in the viewport. The lower left of the string begins at p.

4.8 Pixmaps

(((draw-pixmap-posn

 

file

 

 

 

 

 

 [

type]))

 

 

 

 

 

 

viewport)

 

 

 

 

 

 

p

 

 

 

 

 

 [

color])

 

 

void?

  file : path-string?

  

type

 

:

 

(one-of/c 'unknown 'unknown/mask

          'gif 'gif/mask 'jpeg 'png 'png/mask

          'xbm 'xpm 'bmp 'pict)

 

 

 

=

 

'unknown/mask

  viewport : viewport?

  p : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Draws a pixmap into viewport with its upper left corner at position p. If type is 'unknown or 'unknown/mask, then the content of the file is examined to determine the type. All formats are supported on all platforms, except 'pict which is only supported under Mac OS X. The 'gif/mask, 'png/mask, and 'unknown/mask types draw the bitmap with a transparent background if filename refers to a GIF/PNG file with a transparent background.

The argument color is only used when the loaded pixmap is monochrome. In that case, the color is used instead of black in the drawn image.

((draw-pixmap viewport) file p [color])  void?

  viewport : viewport?

  file : path-string?

  p : posn?

  

color

 

:

 

(or/c (integer-in 0 299)

      string?

      rgb?)

 

=

 

"black"

Equivalent to (((draw-pixmap-posn file) viewport) p color).

((save-pixmap viewport) file [type])  void?

  viewport : viewport?

  file : path-string?

  type : (one-of/c 'gif 'jpeg 'png 'xbm 'xpm 'bmp) = 'xpm

Saves the current content of viewport to file. The type argument determines the kind of file that is written.