typos in image

svn: r3750
This commit is contained in:
Matthias Felleisen 2006-07-18 14:39:50 +00:00
parent 86d08f4197
commit 0ead709016

View File

@ -1,64 +1,69 @@
{ (define LIBNAME "Images")
(include "head.tinc") }
This teachpack provides primitives for constructing and manipulating
<p>This teachpack provides primitives for constructing and manipulating
images. Basic images are created as outlines or solid shapes. Additional
primitives allow for the composition of images.
primitives allow for the composition of images. </p>
Data definition:
<br>Data definition:
<pre>
<code>
;; <em>Mode</em> is one of the following two symbols or strings:
;; <em>{(idx Mode)}</em> is one of the following two symbols or strings:
;; -- 'solid
;; -- 'outline
;; -- "solid"
;; -- "outline"
</code>
</pre>
Interpretation: <code>'solid</code> is used for creating solid basic
shapes; <code>'outline</code> is used for creating outlines of basic
shapes. Strings are used in an analogous manner.
;; Interpretation: <code>'solid</code> is used for creating solid basic
;; shapes; <code>'outline</code> is used for creating outlines of basic
;; shapes. Strings are used in an analogous manner.
</code></pre>
Data definition:
<pre>
<code>
;; <em>Color</em> is one of:
(define-struct color (red blue green))
;; A CS is a structure: (make-color N N N)
;; where N is between 0 and 255.
;; <em>{(idx Color)}</em> is one of:
;; -- a color symbol, e.g., 'blue
;; -- a color string, e.g., "blue"
;; -- a color struct, e.g., (make-color 0 0 255), which also denotes blue.
;; -- a CS, e.g., (make-color 0 0 255), which also denotes blue.
;; Interpretation: <code>Color</code> arguments are used to paint the shapes
;; or their outlines. See below for more information about color structs.
</code>
</pre>
Interpretation: <code>Color</code> arguments are used to paint the shapes
or their outlines. See below for more information about color structs.
The following predicate precisely specifies what a valid image color is:
<menu>
<li><code>{(idx image-color?)}</code> : anything -> boolean <br>
<li><code>{(idx image-color?)} : anything -> boolean </code><br>
to determine if the input is a valid image color
</menu>
The following functions create basic shapes (<code>Image</code>):
The first group of functions creates basic shapes (<code>Image</code>):
<menu>
<li><code>{(idx rectangle)}</code> : Int Int Mode Color -> Image <br>
<li><code>{(idx rectangle)} : Int Int Mode Color -> Image </code><br>
to create a rectangle using the given width, height, mode, and color
<li><code>{(idx circle)}</code> : Int Mode Color -> Image<br>
<li><code>{(idx circle)} : Int Mode Color -> Image</code><br>
to create a circle using the given radius, mode, and color
<li><code>{(idx ellipse)}</code> : Int Int Mode Color -> Image <br>
<li><code>{(idx ellipse)} : Int Int Mode Color -> Image </code><br>
to create an ellipse using the given width, height, and color
<li><code>{(idx triangle)}</code> : Int Mode Color -> Image<br>
<li><code>{(idx triangle)} : Int Mode Color -> Image</code><br>
to create an upward pointing equilateral triangle using the given edge size and color
<li><code>{(idx line)}</code> : Int Int Color -> Image <br> to create an
<li><code>{(idx line)} : Int Int Color -> Image </code><br> to create an
image with a colored line from (0,0) to the point with the given
coordinates
<li><code>{(idx add-line)}</code> : Image Int Int Int Int Color -> Image <br>
<li><code>{(idx add-line)} : Image Int Int Int Int Color -> Image </code><br>
to add a line to an existing image, drawn between the two given points
<li><code>{(idx text)}</code> : String Size Color -> Image <br>
<li><code>{(idx text)} : String Size Color -> Image </code><br>
to create an image of the text in the given string, with the point size,
and color specified by the last two arguments
</menu>
@ -71,30 +76,30 @@ created from <code>line</code> and <code>text</code>, which have pinholes
at the top left. When in doubt you can always find out where the pinhole is
and even place it somewhere else:
<menu>
<li><code>{(idx pinhole-x)}</code> : Image -> Int <br>
<li><code>{(idx pinhole-x)}</code> : Image -> Int </code><br>
to determine the x coordinate of the pinhole, measuring from
the left of the image
<li><code>{(idx pinhole-y)}</code> : Image -> Int <br>
<li><code>{(idx pinhole-y)} : Image -> Int </code><br>
to determine the y coordinate of the pinhole, measuring down from
the left of the image
the top of the image
<li><code>{(idx put-pinhole)}</code> : Image Int Int -> Image <br>
<li><code>{(idx put-pinhole)} : Image Int Int -> Image </code><br>
to put the pinhole in the location specified by the arguments, counting
from the left and down from the top, respectively.
<li><code>{(idx move-pinhole)}</code> : Image Int Int -> Image <br>
<li><code>{(idx move-pinhole)} : Image Int Int -> Image </code><br>
to move the pinhole down and to the right (by the specified amounts) of
its current location. Use negative numbers to move it up or to the left.
</menu>
The next group of functions build images from images:
<menu>
<li><code>{(idx overlay)}</code> : Image Image Image ... -> Image <br>
<li><code>{(idx overlay)} : Image Image Image ... -> Image </code><br>
to add the pixels of the second Image onto the first image. The operation
lines up the images via their pinholes.
<li><code>{(idx overlay/xy)}</code> : Image Int Int Image -> Image <br> to
<li><code>{(idx overlay/xy)} : Image Int Int Image -> Image </code><br> to
add the pixels of the second image onto the first image. Instead of lining
up on the pinhole, the second image's pinhole is lined up with an offset
from the first image's pinhole. The two coordinates specify how far down
@ -105,7 +110,7 @@ The next group of functions build images from images:
For composite images, it is always possible to determine whether one occurs
in the other and where:
<menu>
<li><code>{(idx image-inside?)}</code> : Image Image -> Boolean <br>
<li><code>{(idx image-inside?)} : Image Image -> Boolean </code><br>
to determine whether the pixels of the second image appear in the first.
<p>Be careful when using this function with jpeg images. If you use an
@ -115,7 +120,7 @@ standard compression applied to JPEG images. </p>
<p>Use PNG images instead whenever possible. </p>
<li><code>{(idx find-image)}</code> : Image Image -> Posn <br>
<li><code>{(idx find-image)}</code> : Image Image -> Posn </code><br>
to determine where the pixels of the second image appear in the first, with
respect to the pinhole of the first image.
</menu>
@ -123,94 +128,92 @@ standard compression applied to JPEG images. </p>
Two more properties of images are useful for image manipulations: their
width and height. The two functions for extracting these properties are:
<menu>
<li><code>{(idx image-width)}</code> : Image -> Int <br>
<li><code>{(idx image-width)} : Image -> Int </code><br>
to obtain an Image's width in pixels
<li><code>{(idx image-height)}</code> : Image -> Int <br>
<li><code>{(idx image-height)} : Image -> Int </code><br>
to obtain an image's height in pixels
</menu>
Data definition:
<pre>
<code>
;; <em>List-of-color</em> is one of:
;; -- empty
;; -- (cons Color List-of-color)
</code>
</pre>
Interpretation: represents a sequence of colors
It is possible to extract an image's colors and pixels and to create images
from a list of colors:
<menu>
<li><code>{(idx image->color-list)} : Image -> List-of-color </code><br>
to convert an image to a list of colors
<li><code>{(idx color-list->image)} : List-of-color Nat Nat Nat Nat -> Image </code><br>
to convert a list of colors to an image with the given
width and height, and pinhole coordinates (the pinhole
coordinates are with respect to the top-left of the image).
</menu>
The shrink functions trim an image by eliminating extraneous pixels.
<menu>
<li><code>{(idx shrink-tl)}</code> : Image Int Int -> Image <br>
<li><code>{(idx shrink-tl)} : Image Int Int -> Image </code><br>
to shrink the image, starting from the top-left corner. The
two numbers indicate how many pixels to save.
The pinhole of the resulting image is in the middle of the image.
</li>
<li><code>{(idx shrink-tr)}</code> : Image Int Int -> Image <br>
<li><code>{(idx shrink-tr)} : Image Int Int -> Image </code><br>
to shrink the image, starting from the top-right corner. The
two numbers indicate how many pixels to save.
The pinhole of the resulting image is in the middle of the image.
</li>
<li><code>{(idx shrink-bl)}</code> : Image Int Int -> Image <br>
<li><code>{(idx shrink-bl)} : Image Int Int -> Image </code><br>
to shrink the image, starting from the bottom-left corner. The
two numbers indicate how many pixels to save.
The pinhole of the resulting image is in the middle of the image.
</li>
<li><code>{(idx shrink-br)}</code> : Image Int Int -> Image <br>
<li><code>{(idx shrink-br)} : Image Int Int -> Image </code><br>
to shrink the image, starting from the bottom-right corner. The
two numbers indicate how many pixels to save.
The pinhole of the resulting image is in the middle of the image.
</li>
<li><code>{(idx shrink)}</code> : Image Int Int Int Int -> Image <br>
<li><code>{(idx shrink)} : Image Int Int Int Int -> Image </code><br>
to shrink an image around its pinhole. The numbers are the
pixels to save to left, above, to the right, and below the
pinhole, respectively. The pixel directly on the pinhole is
always saved.
</li>
</menu>
The next functions separate an image into its consitiuent colors and
combine pixels together to build an image.
<menu>
<li><code>{(idx image->color-list)}</code> : image -> list-of-color <br>
to convert an image to a list of colors
<li><code>{(idx color-list->image)}</code> : list-of-color int int int int -> image <br>
to convert a list of colors to an image with the given
width and height, and pinhole coordinates (the pinhole
coordinates are with respect to the top-left of the image).
<li><code>{(idx make-color)}</code> : int int int -> color <br>
to construct a color
<li><code>{(idx color?)}</code> : anything -> boolean <br>
to determine if its input is a color
<li><code>{(idx color-red)}</code> : color -> int <br>
to extract the red component of a color
<li><code>{(idx color-green)}</code> : color -> int <br>
to extract the green component of a color
<li><code>{(idx color-blue)}</code> : color -> int <br>
to extract the blue component of a color
</menu>
Like the last group of functions, these functions separate
an image into its consitiuent colors and combine pixels
together to build an image, but these provide alpha-channel
information as well. Alpha channels are a measure of
transparency; 0 indicates fully opaque and 255 indicates
fully transparent.
The last group of functions extracts the consitiuent colors from an image
and combine colors into an image, but the functions provide alpha-channel
information as well. Alpha channels are a measure of transparency; 0
indicates fully opaque and 255 indicates fully transparent.
<menu>
<li><code>{(idx image->alpha-color-list)}</code> : image -> list-of-alpha-color <br>
<li><code>{(idx image->alpha-color-list)} : image -> list-of-alpha-color </code><br>
to convert an image to a list of alpha colors
<li><code>{(idx alpha-color-list->image)}</code> : list-of-alpha-color int int int int -> image <br>
<li><code>{(idx alpha-color-list->image)} : list-of-alpha-color int int int int -> image </code><br>
to convert a list of alpha colors to an image with the given
width and height, and pinhole coordinates (the pinhole
coordinates are with respect to the top-left of the image).
<li><code>{(idx make-alpha-color)}</code> : int int int int -> color <br>
<li><code>{(idx make-alpha-color)} : int int int int -> color </code><br>
to construct an alpha color
<li><code>{(idx alpha-color?)}</code> : anything -> boolean <br>
<li><code>{(idx alpha-color?)} : anything -> boolean </code><br>
to determine if its input is a color
<li><code>{(idx alpha-color-alpha)}</code> : color -> int <br>
<li><code>{(idx alpha-color-alpha)} : color -> int </code><br>
to extract the alpha value of a color
<li><code>{(idx alpha-color-red)}</code> : color -> int <br>
<li><code>{(idx alpha-color-red)} : color -> int </code><br>
to extract the red component of a color
<li><code>{(idx alpha-color-green)}</code> : color -> int <br>
<li><code>{(idx alpha-color-green)} : color -> int </code><br>
to extract the green component of a color
<li><code>{(idx alpha-color-blue)}</code> : color -> int <br>
<li><code>{(idx alpha-color-blue)} : color -> int </code><br>
to extract the blue component of a color"
</menu>