56 lines
98 KiB
HTML
56 lines
98 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html><head><meta http-equiv="content-type" content="text-html; charset=utf-8" /><title>Picturing Programs Teachpack</title><link rel="stylesheet" type="text/css" href="scribble.css" title="default" /><link rel="stylesheet" type="text/css" href="racket.css" title="default" /><link rel="stylesheet" type="text/css" href="scribble-style.css" title="default" /><script type="text/javascript" src="scribble-common.js"></script></head><body id="scribble-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist" style="margin-bottom: 1em;"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_0");">►</a></td><td></td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html" class="tocviewselflink" pltdoc="x">Picturing Programs Teachpack</a></td></tr></table></div><div class="tocviewsublistonly" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.About_.This_.Teachpack)" class="tocviewlink" pltdoc="x">About This Teachpack</a></td></tr><tr><td align="right">2 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.Installation)" class="tocviewlink" pltdoc="x">Installation</a></td></tr><tr><td align="right">3 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.Functions_from_image_rkt_and_universe_rkt)" class="tocviewlink" pltdoc="x">Functions from image.rkt and universe.rkt</a></td></tr><tr><td align="right">4 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.New_image_functions)" class="tocviewlink" pltdoc="x">New image functions</a></td></tr><tr><td align="right">5 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.Pixel_functions)" class="tocviewlink" pltdoc="x">Pixel functions</a></td></tr><tr><td align="right">6 </td><td><a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(part._.Input_and_.Output)" class="tocviewlink" pltdoc="x">Input and Output</a></td></tr></table></div></div></div><div class="tocsub"><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">1<tt> </tt></span><a href="#(part._.About_.This_.Teachpack)" class="tocsubseclink" pltdoc="x">About This Teachpack</a></td></tr><tr><td><span class="tocsublinknumber">2<tt> </tt></span><a href="#(part._.Installation)" class="tocsubseclink" pltdoc="x">Installation</a></td></tr><tr><td><span class="tocsublinknumber">3<tt> </tt></span><a href="#(part._.Functions_from_image_rkt_and_universe_rkt)" class="tocsubseclink" pltdoc="x">Functions from image.rkt and universe.rkt</a></td></tr><tr><td><span class="tocsublinknumber">4<tt> </tt></span><a href="#(part._.New_image_functions)" class="tocsubseclink" pltdoc="x">New image functions</a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-cw))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-<wbr></wbr>cw</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-ccw))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-<wbr></wbr>ccw</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-180))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-<wbr></wbr>180</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-top))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-<wbr></wbr>top</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-bottom))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-<wbr></wbr>bottom</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-left))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-<wbr></wbr>left</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-right))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-<wbr></wbr>right</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._show-it))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">show-<wbr></wbr>it</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-vert))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">reflect-<wbr></wbr>vert</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-horiz))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">reflect-<wbr></wbr>horiz</span></span></span></span></a></td></tr><tr><td><span class="tocsublinknumber">5<tt> </tt></span><a href="#(part._.Pixel_functions)" class="tocsubseclink" pltdoc="x">Pixel functions</a></td></tr><tr><td><span class="tocsublinknumber">5.1<tt> </tt></span><a href="#(part._.Colors_and_pixels)" class="tocsubseclink" pltdoc="x">Colors and pixels</a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._name-~3ecolor))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">name-<wbr></wbr>>color</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._get-pixel-color))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">get-<wbr></wbr>pixel-<wbr></wbr>color</span></span></span></span></a></td></tr><tr><td><span class="tocsublinknumber">5.2<tt> </tt></span><a href="#(part._.Specifying_the_color_of_each_pixel_of_an_image)" class="tocsubseclink" pltdoc="x">Specifying the color of each pixel of an image</a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-image))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">map-<wbr></wbr>image</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-image))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">build-<wbr></wbr>image</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._change-to-color))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">change-<wbr></wbr>to-<wbr></wbr>color</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._real-~3eint))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">real-<wbr></wbr>>int</span></span></span></span></a></td></tr><tr><td><span class="tocsublinknumber">5.3<tt> </tt></span><a href="#(part._.Transparency)" class="tocsubseclink" pltdoc="x">Transparency</a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._pixel-visible~3f))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">pixel-<wbr></wbr>visible?</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._maybe-color~3f))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">maybe-<wbr></wbr>color?</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-masked-image))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">map-<wbr></wbr>masked-<wbr></wbr>image</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-masked-image))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">build-<wbr></wbr>masked-<wbr></wbr>image</span></span></span></span></a></td></tr><tr><td><span class="tocsublinknumber">6<tt> </tt></span><a href="#(part._.Input_and_.Output)" class="tocsubseclink" pltdoc="x">Input and Output</a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-string))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="RktValLink">with-<wbr></wbr>input-<wbr></wbr>from-<wbr></wbr>string</span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-string))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="RktValLink">with-<wbr></wbr>output-<wbr></wbr>to-<wbr></wbr>string</span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-file))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="RktValLink">with-<wbr></wbr>input-<wbr></wbr>from-<wbr></wbr>file</span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-file))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="RktValLink">with-<wbr></wbr>output-<wbr></wbr>to-<wbr></wbr>file</span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-url))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">with-<wbr></wbr>input-<wbr></wbr>from-<wbr></wbr>url</span></span></span></span></a></td></tr><tr><td><a href="#(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-io-strings))" class="tocsubnonseclink" pltdoc="x"><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">with-<wbr></wbr>io-<wbr></wbr>strings</span></span></span></span></a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="versionNoNav">Version: 5.0.0.6</span></div><h2><a name="(part._.Picturing_.Programs_.Teachpack)"></a><a name="(mod-path._(planet._sbloch/picturing-programs))"></a>Picturing Programs Teachpack</h2><div class="SAuthorListBox"><span class="SAuthorList"><p class="author">Stephen Bloch</p></span></div><p><table cellspacing="0" class="defmodule"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/require.html#(form._((lib._racket/private/base..rkt)._require))" class="RktStxLink" pltdoc="x">require</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/require.html#(form._((lib._racket/private/base..rkt)._planet))" class="RktStxLink" pltdoc="x">planet</a></span><span class="stt"> </span><span class="RktSym">sbloch/picturing-programs</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></p><h3>1<tt> </tt><a name="(part._.About_.This_.Teachpack)"></a>About This Teachpack</h3><p>Provides a variety of functions for combining and manipulating images
|
|
and running interactive animations.
|
|
It’s intended to be used with the textbook
|
|
<a href="http://www.picturingprograms.com">Picturing Programs</a>.</p><h3>2<tt> </tt><a name="(part._.Installation)"></a>Installation</h3><p><div class="SIntrapara">If you’re reading this, you’ve probably already installed the teachpack successfully,
|
|
but if you need to install it on a different machine, ...
|
|
</div><div class="SIntrapara"><ol><li><p>start DrScheme</p></li><li><p>switch languages to “Use the language declared in the
|
|
source” and click “Run”</p></li><li><p><div class="SIntrapara">in the Interactions pane, type
|
|
</div><div class="SIntrapara"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/require.html#(form._((lib._racket/private/base..rkt)._require))" class="RktStxLink" pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/require.html#(form._((lib._racket/private/base..rkt)._planet))" class="RktStxLink" pltdoc="x">planet</a></span><span class="hspace"> </span><span class="RktSym">sbloch/picturing-programs:2</span><span class="RktPn">)</span><span class="RktPn">)</span></div></p></li><li><p>after a few seconds, you should see the message</p><p><span class="RktOut">Wrote file “picturing-programs.rkt” to installed-teachpacks directory.</span></p></li><li><p>switch languages back to one of the HtDP languages, like Beginning Student</p></li><li><p><div class="SIntrapara">either
|
|
</div><div class="SIntrapara"><ul><li><p><div class="SIntrapara">in the Definitions pane, type
|
|
</div><div class="SIntrapara"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/require.html#(form._((lib._racket/private/base..rkt)._require))" class="RktStxLink" pltdoc="x">require</a></span><span class="hspace"> </span><span class="RktSym">installed-teachpacks/picturing-programs</span><span class="RktPn">)</span></div><div class="SIntrapara">or</div></p></li><li><p>from the Language menu, choose "Add
|
|
Teachpack..." and select "picturing-programs.rkt"</p></li></ul></div></p></li><li><p>click "Run"</p></li></ol></div></p><h3>3<tt> </tt><a name="(part._.Functions_from_image_rkt_and_universe_rkt)"></a>Functions from image.rkt and universe.rkt</h3><p>This package includes all of
|
|
<a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html" class="RktModLink" pltdoc="x">the image teachpack</a> and
|
|
and
|
|
<a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpuniverse.html" class="RktModLink" pltdoc="x">the universe teachpack</a>,
|
|
so if you’re using this teachpack, <span style="font-style: italic">don’t</span> also load either of those.
|
|
See the above links for how to use those teachpacks.</p><p>It also supersedes the older <span class="RktSym">tiles</span> and <span class="RktSym">sb-world</span> teachpacks,
|
|
so if you have those, don’t load them either; use this instead.</p><p>This package also provides the following additional functions:</p><h3>4<tt> </tt><a name="(part._.New_image_functions)"></a>New image functions</h3><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-cw))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-cw))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-cw</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Rotates an image 90 degrees clockwise.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-ccw))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-ccw))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-ccw</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Rotates an image 90 degrees counterclockwise.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-180))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._rotate-180))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">rotate-180</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Rotates an image 180 degrees around its center.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-top))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-top))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-top</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span><span class="RktVar">pixels</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pixels</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr></table></div><div class="SIntrapara">Chops off the specified number of pixels from the top of the image.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-bottom))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-bottom))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-bottom</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span><span class="RktVar">pixels</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pixels</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr></table></div><div class="SIntrapara">Chops off the specified number of pixels from the bottom of the image.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-left))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-left))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-left</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span><span class="RktVar">pixels</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pixels</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr></table></div><div class="SIntrapara">Chops off the specified number of pixels from the left side of the image.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-right))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._crop-right))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">crop-right</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span><span class="RktVar">pixels</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pixels</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr></table></div><div class="SIntrapara">Chops off the specified number of pixels from the right side of the image.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._show-it))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._show-it))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">show-it</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Returns the given image unaltered. Useful as a draw handler for animations whose model is an image.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-vert))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-vert))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">reflect-vert</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">The same as <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._flip-vertical))" class="RktValLink" pltdoc="x">flip-vertical</a></span>; retained for compatibility.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-horiz))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._reflect-horiz))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">reflect-horiz</span></span></span></span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">The same as <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._flip-horizontal))" class="RktValLink" pltdoc="x">flip-horizontal</a></span>; retained for compatibility.</div></p><h3>5<tt> </tt><a name="(part._.Pixel_functions)"></a>Pixel functions</h3><p>The above functions allow you to operate on a picture as a whole, but sometimes
|
|
you want to manipulate a picture pixel-by-pixel.</p><h4>5.1<tt> </tt><a name="(part._.Colors_and_pixels)"></a>Colors and pixels</h4><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._name-~3ecolor))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._name-~3ecolor))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">name->color</span></span></span></span><span class="hspace"> </span><span class="RktVar">name</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._or/c))" class="RktValLink" pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._false/c))" class="RktValLink" pltdoc="x">false/c</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">name</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr></table></div><div class="SIntrapara">Given a color name like "red", "turquoise", "forest green", <span style="font-style: italic">etc.</span>, returns the corresponding
|
|
color struct, showing the red, green, and blue components. If the name isn’t
|
|
recognized, returns <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span>.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._get-pixel-color))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._get-pixel-color))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">get-pixel-color</span></span></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span><span class="RktVar">y</span><span class="hspace"> </span><span class="RktVar">pic</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">y</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pic</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Gets the color of a specified pixel in the given image. If x and/or y are outside the
|
|
bounds of the image, returns black.</div></p><h4>5.2<tt> </tt><a name="(part._.Specifying_the_color_of_each_pixel_of_an_image)"></a>Specifying the color of each pixel of an image</h4><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-image))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-image))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span></span><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span><span class="RktVar">img</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">img</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Applies the given function to each pixel in a given image, producing a new image the same
|
|
size and shape. For example,
|
|
</div><div class="SIntrapara"><table cellspacing="0" class="RktBlk"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">lose-red</span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktSym">y</span><span class="hspace"> </span><span class="RktSym">old-color</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="hspace"> </span><span class="RktVal">0</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color-green))" class="RktValLink" pltdoc="x">color-green</a></span><span class="hspace"> </span><span class="RktSym">old-color</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color-blue))" class="RktValLink" pltdoc="x">color-blue</a></span><span class="hspace"> </span><span class="RktSym">old-color</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span><span class="hspace"> </span><span class="RktSym">lose-red</span><span class="hspace"> </span><span class="RktSym">my-picture</span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">produces a copy of <span class="RktSym">my-picture</span> with all the red leached out,
|
|
leaving only the blue and green components.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="RktBlk"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">apply-gradient</span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktSym">y</span><span class="hspace"> </span><span class="RktSym">old-color</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._min))" class="RktValLink" pltdoc="x">min</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">3</span><span class="hspace"> </span><span class="RktSym">x</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">255</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">0</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._min))" class="RktValLink" pltdoc="x">min</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">3</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">255</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span><span class="hspace"> </span><span class="RktSym">apply-gradient</span><span class="hspace"> </span><span class="RktSym">my-picture</span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">produces a picture the same size and shape as <span class="RktSym">my-picture</span>,
|
|
but with a smooth color gradient with red increasing from left to
|
|
right and blue increasing from top to bottom.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-image))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-image))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span></span><span class="hspace"> </span><span class="RktVar">width</span><span class="hspace"> </span><span class="RktVar">height</span><span class="hspace"> </span><span class="RktVar">f</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">width</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">height</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Builds an image of the specified size and shape by calling the specified function
|
|
on the coordinates of each pixel. For example,
|
|
</div><div class="SIntrapara"><table cellspacing="0" class="RktBlk"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">fuzz</span><span class="hspace"> </span><span class="RktSym">pic</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/local.html#(form._((lib._racket/local..rkt)._local))" class="RktStxLink" pltdoc="x">local</a></span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">near-pixel</span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">get-pixel-color</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._+))" class="RktValLink" pltdoc="x">+</a></span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktVal">-3</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._random))" class="RktValLink" pltdoc="x">random</a></span><span class="hspace"> </span><span class="RktVal">7</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._+))" class="RktValLink" pltdoc="x">+</a></span><span class="hspace"> </span><span class="RktSym">y</span><span class="hspace"> </span><span class="RktVal">-3</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._random))" class="RktValLink" pltdoc="x">random</a></span><span class="hspace"> </span><span class="RktVal">7</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktSym">pic</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image-width))" class="RktValLink" pltdoc="x">image-width</a></span><span class="hspace"> </span><span class="RktSym">pic</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image-height))" class="RktValLink" pltdoc="x">image-height</a></span><span class="hspace"> </span><span class="RktSym">pic</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktSym">near-pixel</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">produces a fuzzy version of the given picture by replacing each pixel with a
|
|
randomly chosen pixel near it.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._change-to-color))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._change-to-color))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">change-to-color</span></span></span></span><span class="hspace"> </span><span class="RktVar">new-color</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e*))" class="RktStxLink" pltdoc="x">->*</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">new-color</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._or/c))" class="RktValLink" pltdoc="x">or/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color~3f))" class="RktValLink" pltdoc="x">color?</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Returns a constant-valued function suitable for use in <span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span> or <span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span>.
|
|
The input to <span class="RktSym"><span class="badlink"><span class="RktValLink">change-to-color</span></span></span> may be either a <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._color))" class="RktValLink" pltdoc="x">color</a></span> struct or a color name from
|
|
the standard color-name database. For example,
|
|
</div><div class="SIntrapara"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">change-to-color</span></span></span><span class="hspace"> </span><span class="RktVal">"turquoise"</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktSym">my-picture</span><span class="RktPn">)</span></div><div class="SIntrapara">returns a picture with the same size, shape, and mask as <span class="RktSym">my-picture</span>, but all turquoise, while
|
|
</div><div class="SIntrapara"><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span><span class="hspace"> </span><span class="RktVal">50</span><span class="hspace"> </span><span class="RktVal">30</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">change-to-color</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="hspace"> </span><span class="RktVal">0</span><span class="hspace"> </span><span class="RktVal">100</span><span class="hspace"> </span><span class="RktVal">200</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></div><div class="SIntrapara">is equivalent to <span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._rectangle))" class="RktValLink" pltdoc="x">rectangle</a></span><span class="stt"> </span><span class="RktVal">50</span><span class="stt"> </span><span class="RktVal">30</span><span class="stt"> </span><span class="RktVal">"solid"</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="stt"> </span><span class="RktVal">0</span><span class="stt"> </span><span class="RktVal">100</span><span class="stt"> </span><span class="RktVal">200</span><span class="RktPn">)</span><span class="RktPn">)</span></div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._real-~3eint))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._real-~3eint))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">real->int</span></span></span></span><span class="hspace"> </span><span class="RktVar">num</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._integer~3f))" class="RktValLink" pltdoc="x">integer?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">num</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._real~3f))" class="RktValLink" pltdoc="x">real?</a></span></td></tr></table></div><div class="SIntrapara">Not specific to colors, but useful if you’re building colors by arithmetic.
|
|
For example,
|
|
</div><div class="SIntrapara"><table cellspacing="0" class="RktBlk"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">bad-gradient</span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">2.5</span><span class="hspace"> </span><span class="RktSym">x</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">1.6</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">0</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span><span class="hspace"> </span><span class="RktVal">50</span><span class="hspace"> </span><span class="RktVal">30</span><span class="hspace"> </span><span class="RktSym">bad-gradient</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">good-gradient</span><span class="hspace"> </span><span class="RktSym">x</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._make-color))" class="RktValLink" pltdoc="x">make-color</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">real->int</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">2.5</span><span class="hspace"> </span><span class="RktSym">x</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">real->int</span></span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/numbers.html#(def._((quote._~23~25kernel)._*))" class="RktValLink" pltdoc="x">*</a></span><span class="hspace"> </span><span class="RktVal">1.6</span><span class="hspace"> </span><span class="RktSym">y</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="hspace"> </span><span class="RktVal">0</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span><span class="hspace"> </span><span class="RktVal">50</span><span class="hspace"> </span><span class="RktVal">30</span><span class="hspace"> </span><span class="RktSym">good-gradient</span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">The version using <span class="RktSym">bad-gradient</span> crashes because color components must be exact integers.
|
|
The version using <span class="RktSym">good-gradient</span> works.</div></p><h4>5.3<tt> </tt><a name="(part._.Transparency)"></a>Transparency</h4><p>Some image formats support <span style="font-style: italic">transparency</span>, meaning that part of the image is
|
|
ignored when layering it with other images.</p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._pixel-visible~3f))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._pixel-visible~3f))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">pixel-visible?</span></span></span></span><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span><span class="RktVar">y</span><span class="hspace"> </span><span class="RktVar">pic</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((quote._~23~25kernel)._boolean~3f))" class="RktValLink" pltdoc="x">boolean?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">x</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">y</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pic</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Checks transparency: returns <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span> if the specified pixel in the image is transparent,
|
|
<span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._true))" class="RktValLink" pltdoc="x">true</a></span> if not.</div></p><p>A <a name="(tech._maybe._color)"></a><span style="font-style: italic">maybe-color</span> is either a color or <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span>, which is treated as transparent.</p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._maybe-color~3f))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._maybe-color~3f))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">maybe-color?</span></span></span></span><span class="hspace"> </span><span class="RktVar">thing</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((quote._~23~25kernel)._boolean~3f))" class="RktValLink" pltdoc="x">boolean?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thing</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span></td></tr></table></div><div class="SIntrapara">Tests whether the argument is a <a href="file:///Users/teeb/programming/teachpacks/racket/pp/package/doc.html#(tech._maybe._color)" class="techoutside" pltdoc="x"><span class="techinside">maybe-color</span></a>.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-masked-image))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._map-masked-image))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">map-masked-image</span></span></span></span><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span><span class="RktVar">pic</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><span class="badlink"><span class="RktValLink">maybe-color?</span></span></span><span class="hspace"> </span><span class="RktSym"><span class="badlink"><span class="RktValLink">maybe-color?</span></span></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">pic</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr></table></div><div class="SIntrapara">Like <span class="RktSym"><span class="badlink"><span class="RktValLink">map-image</span></span></span>, but the function will receive <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span> for any transparent pixel, and
|
|
any place that it returns <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span> will be treated as a transparent pixel.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-masked-image))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._build-masked-image))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">build-masked-image</span></span></span></span><span class="hspace"> </span><span class="RktVar">width</span><span class="hspace"> </span><span class="RktVar">height</span><span class="hspace"> </span><span class="RktVar">f</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpimage.html#(def._((lib._2htdp/image..rkt)._image~3f))" class="RktValLink" pltdoc="x">image?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">width</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">height</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">f</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/misc..rkt)._natural-number/c))" class="RktValLink" pltdoc="x">natural-number/c</a></span><span class="hspace"> </span><span class="RktSym"><span class="badlink"><span class="RktValLink">maybe-color?</span></span></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Like <span class="RktSym"><span class="badlink"><span class="RktValLink">build-image</span></span></span>, but any place that the function returns <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/booleans.html#(def._((lib._racket/bool..rkt)._false))" class="RktValLink" pltdoc="x">false</a></span> will be treated
|
|
as a transparent pixel.</div></p><h3>6<tt> </tt><a name="(part._.Input_and_.Output)"></a>Input and Output</h3><p>This teachpack also provides several functions to help in testing
|
|
I/O functions (in Advanced Student language; ignore this section if
|
|
you’re in a Beginner or Intermediate language):</p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-string))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-string))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/port-lib.html#(def._((lib._racket/port..rkt)._with-input-from-string))" class="RktValLink" pltdoc="x">with-input-from-string</a></span></span><span class="hspace"> </span><span class="RktVar">input</span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">input</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Calls <span class="stt">thunk</span>, which presumably uses <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span>,
|
|
in such a way that <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span> reads from <span class="stt">input</span> rather than from
|
|
the keyboard.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-string))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-string))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/port-lib.html#(def._((lib._racket/port..rkt)._with-output-to-string))" class="RktValLink" pltdoc="x">with-output-to-string</a></span></span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Calls <span class="stt">thunk</span>, which presumably uses <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._display))" class="RktValLink" pltdoc="x">display</a></span>, <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._print))" class="RktValLink" pltdoc="x">print</a></span>,
|
|
<span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._write))" class="RktValLink" pltdoc="x">write</a></span>, and/or <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._printf))" class="RktValLink" pltdoc="x">printf</a></span>, in such a way that its output is
|
|
accumlated into a string, which is then returned.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-file))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-file))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/file-ports.html#(def._((lib._racket/private/base..rkt)._with-input-from-file))" class="RktValLink" pltdoc="x">with-input-from-file</a></span></span><span class="hspace"> </span><span class="RktVar">filename</span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">filename</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Calls <span class="stt">thunk</span>, which presumably uses <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span>,
|
|
in such a way that <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span> reads from the specified file
|
|
rather than from the keyboard.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-file))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-output-to-file))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/file-ports.html#(def._((lib._racket/private/base..rkt)._with-output-to-file))" class="RktValLink" pltdoc="x">with-output-to-file</a></span></span><span class="hspace"> </span><span class="RktVar">filename</span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">filename</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Calls <span class="stt">thunk</span>, which presumably uses <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._display))" class="RktValLink" pltdoc="x">display</a></span>, <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._print))" class="RktValLink" pltdoc="x">print</a></span>,
|
|
<span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._write))" class="RktValLink" pltdoc="x">write</a></span>, and/or <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._printf))" class="RktValLink" pltdoc="x">printf</a></span>, in such a way that its output is
|
|
redirected into the specified file.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-url))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-input-from-url))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">with-input-from-url</span></span></span></span><span class="hspace"> </span><span class="RktVar">url</span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">url</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Calls <span class="stt">thunk</span>, which presumably uses <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span>,
|
|
in such a way that <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span> reads from the HTML source of the
|
|
Web page at the specified URL rather than from the keyboard.</div></p><p><div class="SIntrapara"><table cellspacing="0" class="boxed"><tr><td><span class="RktPn">(</span><a name="(dep._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-io-strings))"></a><a name="(def._((planet._main..rkt._(sbloch._picturing-programs..plt._2._3))._with-io-strings))"></a><span title="Provided from: (planet sbloch/picturing-programs)"><span class="RktSym"><span class="badlink"><span class="RktValLink">with-io-strings</span></span></span></span><span class="hspace"> </span><span class="RktVar">input</span><span class="hspace"> </span><span class="RktVar">thunk</span><span class="RktPn">)</span><span class="hspace"> </span>→<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">input</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/strings.html#(def._((quote._~23~25kernel)._string~3f))" class="RktValLink" pltdoc="x">string?</a></span></td></tr><tr><td><span class="hspace"> </span><span class="RktVar">thunk</span><span class="hspace"> </span>:<span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Function_Contracts.html#(form._((lib._racket/contract..rkt)._-~3e))" class="RktStxLink" pltdoc="x">-></a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Data-structure_Contracts.html#(def._((lib._racket/contract/private/guts..rkt)._any/c))" class="RktValLink" pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></div><div class="SIntrapara">Combines <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/port-lib.html#(def._((lib._racket/port..rkt)._with-input-from-string))" class="RktValLink" pltdoc="x">with-input-from-string</a></span> and <span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/port-lib.html#(def._((lib._racket/port..rkt)._with-output-to-string))" class="RktValLink" pltdoc="x">with-output-to-string</a></span>:
|
|
calls <span class="stt">thunk</span> with its input coming from <span class="stt">input</span> and accumulates
|
|
its output into a string, which is returned. Especially useful for testing:
|
|
</div><div class="SIntrapara"><table cellspacing="0" class="RktBlk"><tr><td><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">ask</span><span class="hspace"> </span><span class="RktSym">question</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/begin.html#(form._((quote._~23~25kernel)._begin))" class="RktStxLink" pltdoc="x">begin</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._display))" class="RktValLink" pltdoc="x">display</a></span><span class="hspace"> </span><span class="RktSym">question</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Reading.html#(def._((quote._~23~25kernel)._read))" class="RktValLink" pltdoc="x">read</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">greet</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/local.html#(form._((lib._racket/local..rkt)._local))" class="RktStxLink" pltdoc="x">local</a></span><span class="hspace"> </span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/define.html#(form._((lib._racket/private/base..rkt)._define))" class="RktStxLink" pltdoc="x">define</a></span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpuniverse.html#(form._((lib._2htdp/universe..rkt)._name))" class="RktStxLink" pltdoc="x">name</a></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym">ask</span><span class="hspace"> </span><span class="RktVal">"What is your name?"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/reference/Writing.html#(def._((quote._~23~25kernel)._printf))" class="RktValLink" pltdoc="x">printf</a></span><span class="hspace"> </span><span class="RktVal">"Hello, ~a!"</span><span class="hspace"> </span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/teachpack/2htdpuniverse.html#(form._((lib._2htdp/universe..rkt)._name))" class="RktStxLink" pltdoc="x">name</a></span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="RktPn">(</span><span class="RktSym"><a href="file:///Applications/Racket%20v5.0.0.6/doc/htdp-langs/Test_Cases.html#(form._((lib._lang/htdp-beginner..rkt)._check-expect))" class="RktStxLink" pltdoc="x">check-expect</a></span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktPn">(</span><span class="RktSym"><span class="badlink"><span class="RktValLink">with-io-strings</span></span></span><span class="hspace"> </span><span class="RktVal">"Steve"</span><span class="hspace"> </span><span class="RktSym">greet</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPlain"><span class="hspace"> </span></span><span class="hspace"> </span><span class="RktVal">"What is your name?Hello, Steve!"</span><span class="RktPn">)</span></td></tr></table></div></p></div></div><div id="contextindicator"> </div></body></html> |