<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Instructions for using the program named SVGDraw01</title>
<meta name="generator" content="Amaya, see http://www.w3.org/Amaya/" />
<style type="text/css">
.style1 {
color: #FF0000;
}
</style>
</head>
<body style="font-family: Arial,Helvetica,sans-serif;font-size: 10pt"
bgcolor="#FEFFF0" link="#0000ff" vlink="#cc00cc" alink="#ff0000">
<h1>Instructions for using the program named SVGDraw01</h1>
<p>Version 0.0.16 20111016</p>
<p>This document is designed to be read from inside the program named SVGDraw01,
but it can also be read using a conventional web browser.</p>
<p>At any time while viewing the document from within SVGDraw01, you can tab down to the button labeled "Return to Home Base," press that button to quit viewing this document, and
return to Home Base. If you press Esc while viewing this document, you will land
back where you were when you opened the document. </p>
<h2>Table of contents</h2>
<ul>
<li><a href="#Whats_new_in_this_version">What's new in this version?</a></li>
<li><a href="#Whats_new_in_recent_versions">What's new in recent versions?</a></li>
<li><a href="#Viewing_the_drawing_onscreen">Viewing the drawing onscreen</a></li>
<li><a href="#Printing_or_embossing">Printing and embossing</a><ul>
<li><a href="#A_note_about_page_size">A note about page size</a></li>
</ul>
</li>
<li><a href="#Purpose">Purpose</a><ul>
<li><a href="#A_robust_graphics_standardSVG">A robust graphics standard - SVG</a></li>
<li><a href="#An_accessible_and_userfriendly_drawing_program">An accessible and user-friendly drawing program
SVGDraw01</a></li>
<li>
<a href="#High-quality,_economical,_and_readilyavailable_graphics_embossing_equipment">High-quality, economical, and readily-available graphics embossing equipment</a></li>
</ul>
</li>
<li><a href="#Overview">Overview</a><ul>
<li><a href="#The_menu_system">The menu system</a><ul>
<li><a href="#The_File_menu_">The File menu (Alt+F)</a></li>
<li><a href="#The_Draw_menu">The Draw menu (Alt+D)</a></li>
<li><a href="#The_Mod_menu">The Mod menu (Alt+M)</a></li>
<li><a href="#The_Advanced_menu">The Advanced menu (Alt+A)</a></li>
<li><a href="#The_Help_menu">The Help menu (Alt+H)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Program_startup">Program startup</a></li>
<li><a href="#User_instructions">General user instructions</a><ul>
<li><a href="#Selecting_action_items">Selecting actions from the menus</a></li>
<li><a href="#Performing_the_action">Performing the action</a></li>
<li><a href="#Pressing_the_Esc_key">Pressing the Esc key</a></li>
<li><a href="#Text_field_objects">Text field objects</a></li>
<li><a href="#Checkbox_objects">Checkbox objects</a></li>
<li><a href="#Button_objects">Button objects</a></li>
<li><a href="#Message_box_objects">Message box objects</a></li>
<li><a href="#Polylines_and_polygons">Polylines, polygons, and paths</a></li>
<li><a href="#The_name_and_path_of_the_output_file">The name and path of the output file</a></li>
<li><a href="#Rotation_translation_and_scaling">Rotation, translation, and
scaling</a></li>
<li><a href="#Reviewing,_marking,_and_unmarking_shapes">Reviewing, marking, and unmarking shapes</a></li>
</ul>
</li>
<li><a href="#Specific_user_instructions" name="actionItemListInToc">Action
items</a><ul>
<li><a href="#Start_a_new_drawing">Start a New Drawing (Ctrl+N)</a></li>
<li><a href="#Open_existing_drawing">Open SVGdraw File (Ctrl+O)</a></li>
<li><a href="#Import_Existing_Drawing">Import SVGdraw File (Ctrl+M)</a></li>
<li><a href="#Import_Other_SVG_File">Import Other SVG File (Ctrl+H)</a></li>
<li><a href="#Write_drawing_file">Save Normal (Ctrl+S)</a></li>
<li><a href="#Save_Flipped">Save Flipped (Ctrl+F)</a></li>
<li><a href="#Save_As">Save As...</a></li>
<li><a href="#Stop_program">Exit (Ctrl+X)</a></li>
<li><a href="#Draw_a_line">Line (Ctrl+L)</a></li>
<li><a href="#Draw_a_rectangle">Rectangle (Ctrl+R)</a></li>
<li><a href="#Draw_a_circle">Circle (Ctrl+C)</a></li>
<li><a href="#Draw_an_ellipse">Ellipse (Ctrl+E)</a></li>
<li><a href="#Draw_a_polyline,_a_polygon,_or_a_path">Polyline, polygon,
or path (Ctrl+P)</a><ul>
<li><a href="#A_csv_file">A csv file</a></li>
<li><a href="#A_path_file">A path file</a></li>
<li><a href="#Sample_csv_files">Sample files</a></li>
</ul>
</li>
<li><a href="#Draw_line_of_text">Text (Ctrl+T)</a></li>
<li><a href="#Review_shapes">Review (without modification) (Alt+V)</a></li>
<li><a href="#Rotate_shapes">Rotate (Alt+R)</a></li>
<li><a href="#Translate_shapes">Translate (Alt+T)</a></li>
<li><a href="#Scale_shapes">Scale (Alt+S)</a></li>
<li><a href="#Move_Shapes">Move (Alt+O)</a></li>
<li><a href="#Clip">Clip (Alt+C)</a></li>
<li><a href="#Delete_shapes">Delete (Alt+Delete)</a></li>
<li><a href="#Remove_Attributes">Remove Common Attributes (Alt+Shift+R)</a></li>
<li><a href="#Set_Attributes">Set Common Attributes (Alt+Shift+S)</a></li>
<li><a href="#Set_Shape-Specific_Attributes">Set Shape-Specific Attributes (Alt+Shift+P)</a></li>
<li><a href="#userInstructions2">Instruction (F1)</a></li>
</ul>
</li>
<li><a href="#Please_provide_feedback">Please provide feedback</a></li>
</ul>
<h2><a name="Whats_new_in_this_version">What's new in this version</a>?</h2>
<h3> Editing shape-specific attributes</h3>
<p> Previous versions of the program have allowed you to create and/or edit the
values of the following attributes that are common to all shapes:</p>
<ul>
<li>stroke (color)</li>
<li>stroke-width</li>
<li>stroke-opacity</li>
<li>fill (color)</li>
<li>fill-opacity</li>
<li>clip-path (ID)</li>
<li>transform</li>
<li>any attribute name (common or otherwise)</li>
</ul>
<p> That capability is accessed from the Advanced menu, or by pressing
<a href="#Set_Attributes">Alt+Shift+S</a>.</p>
<p> This version adds the capability to edit shape-specific attributes for
existing lines, rectangles, circles, and ellipses. Shape-specific attributes
include:</p>
<ul>
<li>coordinates</li>
<li>radii</li>
<li>width</li>
<li>height</li>
</ul>
<p> This capability is accessed from the Acvanced menu, or by pressing
<a href="#Set_Shape-Specific_Attributes">Alt+Shift+P</a>.</p>
<p> Assume, for example, that you want to create a grid. Using this capability,
you could create and save a drawing of a line. Then you could import multiple
copies of that line drawing into a new drawing and edit the coordinates of the
end points of each line to place the lines in the shape of a grid.</p>
<h3> Mark all, then selectively unmark</h3>
<p> Previous versions have allowed you to check a checkbox to cause all of the
shapes in the drawing to be marked for rotation, translation, scaling, or
deletion. The program was updated in this version to allow you to selectively
un-mark shapes that were previously marked in that fashion.</p>
<p> For example, if you want to view, emboss, or sonify a subset of the total
set of shapes in the drawing, you can mark them all, un-mark the subset, scale
the remaining shapes by 0.0, save the drawing in a new file, and view, emboss,
or sonify the contents of that output file.</p>
<h3> Smaller download file</h3>
<p> The size of the downloadable zip file was reduced to about 75% of its
previous size.</p>
<h2><a name="Whats_new_in_recent_versions">What's new in recent versions</a>?</h2>
<p>The contents of this section consist of text taken from previous versions of
this document. Therefore, when the text in this section refers to "this
version," it is actually speaking to the earlier version in which the new
capability was implemented.</p>
<h3>Leaner and meaner</h3>
<p>Numerous changes were made in this version to reduce the verbosity of the
audio screen reader. By this, I mean that prompts were reduced to the bare
minimum necessary to tell you what you need to do next. All of the long in-line
explanations were removed. In doing this, I am assuming that you will be willing
to press the F1 key and consult the Help document when you encounter a prompt
that you don't understand.</p>
<p>In addition, many information message boxes that previously required you to
press the OK button to continue were replaced by an audible beep. In those
cases, the information that was previously displayed in the message box was
routed to the standard output device (typically the command-line window) in case
you need that information.</p>
<p>User feedback has identified the requirement for several superfluous keyboard
actions in earlier versions. Those keyboard actions have been eliminated.</p>
<h3>Reviewing, marking, and unmarking shapes</h3>
<p>The procedure for reviewing, marking, and unmarking shapes was completely
redesigned for this version as described in the section titled
<a href="#Reviewing,_marking,_and_unmarking_shapes">Reviewing, marking, and
unmarking shapes</a>.</p>
<h3>Flipped output file</h3>
<p>I have added the capability to write output files with the origin at the lower-left
corner of the drawing, positive Y going up the page, and positive X going to the
right (with some limitations). A new menu item, Ctrl+F, has been added to the File menu to support this
feature.
See the details in <a href="#Save_Flipped">Save Flipped (Ctrl+F)</a>.</p>
<h3>More streamlined process for saving files</h3>
<p>I have added a <a href="#Save_As">Save As...</a> action on the File menu and
streamlined the process for saving output files. See more information in
<a href="#Save_As">Save As...</a> below. The File menu also contains new
<a href="#Write_drawing_file">Save Normal (Ctrl+S)</a> and
<a href="#Save_Flipped">Save Flipped (Ctrl+F)</a> actions in support of the new
<a href="#Save_As">Save As...</a> action.</p>
<h3>Fixed the double extension problem</h3>
<p>Without getting into the details, earlier versions made
it easy to inadvertently create output files with double .svg extensions. While
not a technical issue, this could cause some confusion when trying to find the
most current output file. That
problem has been fixed. With this fix, the output file will always have a single
.svg extension whether you specify it or not when you enter the file name.</p>
<h3>Suggestions for improved usability and accessibility</h3>
<p>I have received numerous suggestions for improved usability and
accessibility, and many of those suggestions are not implemented in this version. I'm not ignoring
those suggestions. Instead, I have prioritized the suggestions and have been
working on issues in order of priority. I will be incorporating more of those
suggestions in future versions.</p>
<h3>The Advanced menu</h3>
<p>An "Advanced" menu
was added containing two advanced actions. These actions are intended for advanced users
only. They require a solid knowledge of SVG to be useful.</p>
<h3>Import shape objects from existing drawings</h3>
<p>This new capability allows you to create a library of drawings that you can
later import and combine to produce larger overall drawings. If you have drawn
it once and saved the SVG file, you should never need to draw it again. Just
import the old drawing into a new drawing and edit as appropriate.</p>
<h3>Move shape objects up and down in the stack of shape objects</h3>
<p>You can think of an SVG drawing as a stack of individual shape objects. By
default, the shape object that you create first is at the bottom of the stack
and the shape object that you create last is at the top of the stack. If you
look down on the stack from above, those objects on or near the top of the stack
may cover and hide those objects further down the stack. Sometimes this is
important, and sometimes it is not.</p>
<p>For example, with the ViewPlus IVEO software, if you draw a circle in the
center of the page and then draw a rectangle that is the same size as the page.
the rectangle will hide the circle and prevent the IVEO software from providing
audio information about the circle even if the rectangle is completely
transparent.</p>
<p>This new feature allows you to adjust the relative positions of shape objects
in the stack without having to redraw the shapes.</p>
<h3>Addition of clipping capability</h3>
<p>The Mod menu now contains a "Clip" action. This action allows you to use one
shape to determine what portion of a second shape actually gets drawn. The
capability is useful for a variety of purposes, one of the most important of
which is to draw circular and elliptical arcs.</p>
<h3>New packaging</h3>
<p>Beginning with this version, I am also trying out a new packaging scheme. If
this scheme is successful, anyone having access to a computer with a Windows
operating system, version XP or later, 32-bit or 64-bit hardware, can run the
SVGDraw01 program from a USB flash drive with no requirement to install any
software on the computer.</p>
<h3><a name="Conversion_to_a_menu_system">Conversion to a menu system</a></h3>
<p>If you are a user of earlier versions of this program and found yourself
wishing for a conventional menu system, take heart. This version provides those
menus.</p>
<p>Previous versions used a long list of actions that had to be scrolled in
order to perform an action, such as drawing a rectangle or rotating a shape
object. That list of actions has now been replaced by a menu system that uses a
full suite of accelerator and mnemonic keys.</p>
<p>For example, pressing Alt+D will open the Draw menu that provides access to
all of the drawing capabilities of the program. For even more convenience,
pressing Ctrl+R will bypass the Draw menu and land you on a page where you can
draw a new rectangle. Pressing Alt+M will open the Mod menu that provides
actions that you can perform to review or modify existing shape objects.
Pressing Alt+R will bypass the Mod menu and land you on a page where you can
rotate any existing shape object.</p>
<h3><a name="Other_enhancements">Other enhancements</a></h3>
<p>In addition to the new menu system, this version includes a number of
enhancements including:</p>
<ul>
<li>Ability to select and view the attributes of any existing shape object
without modifying the object.</li>
<li>Ability to maintain original stroke width when scaling shape objects.</li>
<li>A checkbox for selecting all existing shape objects for rotation,
translation, scaling, and deletion.</li>
<li>Creation of a "Home Base" concept. Each time you complete an action, you
now return to the Home Base from which you can initiate other actions.</li>
<li>Many other improvements in convenience and accessibility that are too
numerous to mention here.</li>
</ul>
<h2><a name="Viewing_the_drawing_onscreen">Viewing the drawing onscreen</a></h2>
<p>Some sighted users may need to view the drawing onscreen. This includes
teachers of blind students and other sighted persons who may find the use of
this drawing program advantageous. Here are the steps for doing that:</p>
<ol>
<li>Press Ctrl+N or Ctrl+O to create a drawing in memory.</li>
<li>Press Ctrl+S or Ctrl+F to save the drawing in one output file with an
extension of .svg, a second output file with an extension of .flipped.svg or
both.</li>
<li>Open one or both output files in Firefox, Google Chrome, or IE9 (IE8 and
earlier versions won't work).</li>
</ol>
<p>After that, whenever you want to see an updated version of the drawing, press
Ctrl+S or Ctrl+F to save the updated drawing(s) and then refresh the browser
window(s).</p>
<h2><a name="Printing_or_embossing">Printing and embossing</a></h2>
<p>You will need to use another program to print or emboss your drawing. One of the
easiest ways to do this is to open the SVG output file in Firefox, Chrome, or
IE9 (IE8 won't work). Use the browser size controls to adjust the size of your
drawing as necessary and then send it to the printer or the embosser. In most
browsers, pressing Ctrl+0 will set the browser's zoom feature to the default
one-to-one value. If your drawing size is 8.5x11 inches, that default setting
should cause your drawing to fit on 8.5x11 inch paper.</p>
<p>Another alternative is to download the free IVEO viewer from the ViewPlus
website. Open the SVG output file in the viewer program and print or emboss from
there.</p>
<h3><a name="A_note_about_page_size">A note about page size</a></h3>
<p>Your printer may not be capable of printing from the extreme left edge to
the extreme right edge, or from the extreme top edge to the extreme bottom edge
of the largest paper size that it is advertised to accommodate. For example my
HP DeskJet 6940 printer advertises "Borderless Printing up to 8.5 x 24 in."
However, the largest rectangle that it will actually print on a single sheet of
8.5x11 inch paper is 8.14 x 10.63
inches.
Therefore, you should probably allow for some loss of print width and print
height on the right side and the bottom of the page.</p>
<p>If you plan to emboss your drawing on a graphics embosser, you may also need to
purposely leave a margin on both sides of your drawing to accommodate the width
of the mechanical embossing mechanism. Check the specifications of the embosser
that you plan to use to determine what those margins need to be.</p>
<h2><a name="Purpose">Purpose</a></h2>
<p>Select <a href="#Overview">Overview</a> to skip
this section and go directly to the next major section.</p>
<p>I believe that making it possible for blind and visually impaired people, and
particularly students in Science, Technology, Engineering, and Mathematics
(STEM) <a name="to_communicate">to communicate</a> using accurate printed and tactile graphics will
improve the quality of life and improve the likelihood of academic success for those people. The purpose of this program is to make it possible for blind
and visually impaired people to create such graphics in an accessible and
user-friendly way.</p>
<p>As a side effect of designing the program so that it can be used by blind
people, the program can also be useful for sighted people who are capable of
using a computer keyboard, but who are incapable of using a mouse. The program
can be operated directly from the keyboard with no requirement for the use of a
mouse. All actions that the program performs can be initiated using menus,
accelerator keys, and mnemonic keys. All locations and dimensions on a drawing
are entered from the keyboard in numeric form.</p>
<p>Three components are necessary to accomplish the communications
<a href="#to_communicate">goal</a>
described above:</p>
<ul>
<li>Availability of a robust and universally accepted
<a href="#A_robust_graphics_standardSVG">graphics standard</a>.</li>
<li>Availability of an accessible and user-friendly
<a href="#An_accessible_and_userfriendly_drawing_program">drawing program</a> that
allows blind people to take advantage of that standard.</li>
<li>Availability of high-quality, economical, and readily available graphics
<a href="#High-quality,_economical,_and_readilyavailable_graphics_embossing_equipment">embossing equipment</a>.</li>
</ul>
<p>Of course, sighted users don't need an embosser. A typical ink-squirt printer
works just fine.</p>
<h3><a name="A_robust_graphics_standardSVG">A robust graphics standard - SVG</a></h3>
<p>A robust and universally accepted graphics standard is already available in
the form of Scalable Vector Graphics (SVG). See
<a href="http://www.w3.org/TR/SVG/">Scalable Vector Graphics (SVG) 1.1 (Second
Edition)</a></p>
<h3><a name="An_accessible_and_userfriendly_drawing_program">An accessible and
user-friendly drawing program - SVGDraw01</a></h3>
<p>This first-ever program is my attempt to provide,
free of charge, a drawing program that makes it possible for blind and visually
impaired
people to take advantage of many of the capabilities of SVG. Even though the
program is still under development, it already makes it
possible for STEM students to create graphics that mirror many of the figures
and diagrams typically found in STEM textbooks.</p>
<h4>A graph board on steroids</h4>
<p>If you are a teacher of blind and visually impaired students, you might think
of this program as bringing the old-fashioned graph board (pushpins and rubber bands) into the
computer age. Students and others using this program can create both printed and
tactile graphics using much the same thought processes that they would use when
constructing a "drawing" on a graph board using pushpins, rubber bands, a
protractor, and a measuring stick.</p>
<p>For example, one person might use this program to create and send an SVG file
to a friend with the message "Take a look at the cool floor plan of my new
apartment."</p>
<p>Another person might use this program to create and send an SVG file to a
college professor with the message "This is a free body diagram showing the
magnitude and directions of forces F21 and F23 caused by the interactions among
charges q1, q2, and q3."</p>
<h4>Getting an immediate visual output</h4>
<p>I will be adding new capabilities over time. So far, I haven't added any
capabilities that would not be useful for blind users. (However, I may change my
mind about that if I learn that the program is being used by sighted users
also.) For example, the program
does not, by default, produce a visual output. But, if you are sighted, or if you are
a blind user using the vOICe sonification software to view the progress of your drawing, you can
use the procedure described in <a href="#Viewing_the_drawing_onscreen">Viewing
the drawing onscreen</a> to create an immediate visual output and to view the
progress of your drawing as you create it.</p>
<h3>
<a name="High-quality,_economical,_and_readilyavailable_graphics_embossing_equipment">High-quality, economical, and readily-available graphics embossing equipment</a></h3>
<p>This is the area where we fall short relative to achieving the
<a href="#to_communicate">communications goal</a> mentioned earlier. Although high-quality embossing equipment is
available, it is not yet economical or readily available for the majority of
blind people. </p>
<p>I view this as something of a supply and demand problem.
Prior to the release of this program, to the
best of my knowledge, there have been no free and readily-available tools that make it
possible for blind people to create accurate drawings for use with a
high-quality embosser. Thus, the demand for such equipment has been very
limited. My hope is that by making it possible for all blind people to create
accurate drawings, the demand for such equipment will go up and the costs for
the equipment will come down.</p>
<p>Even today, however, many schools, colleges, and other organizations own
high-quality graphics embossing equipment that they can make available to their
clients on some basis. In those cases, there is no reason for blind people to
hold back from learning to communicate using accurate graphics.</p>
<h2><a name="Overview">Overview</a></h2>
<p>This section provides a brief overview of the program structure. More
detailed information is provided in later sections.</p>
<h3><a name="The_menu_system">The menu system</a></h3>
<p>The program is organized around the following menus:</p>
<ul>
<li>File (Alt+F)</li>
<li>Draw (Alt+D)</li>
<li>Mod (Alt+M)</li>
<li>Advanced (Alt+A)</li>
<li>Help (Alt+H)</li>
</ul>
<h4><a name="The_File_menu_">The File menu </a>(Alt+F)</h4>
<p>The File menu provides the following actions:</p>
<ul>
<li>Start a New Drawing (Ctrl+N)</li>
<li>Open SVGdraw File (Ctrl+O)</li>
<li>Import SVGdraw File (Ctrl+M)</li>
<li>Import Other SVG File (Ctrl+H)</li>
<li>Save Normal (Ctrl+S)</li>
<li>Save Flipped (Ctrl+F)</li>
<li>Save As...</li>
<li>Exit (Ctrl+X)</li>
</ul>
<p>For the most part, you should be able to infer the action associated with
each menu item on the basis of its name. However, more detailed information will
be provided for some of the items later.</p>
<h4><a name="The_Draw_menu">The Draw menu</a> (Alt+D)</h4>
<p>The items in the Draw menu make it possible for you to draw the following
shapes:</p>
<ul>
<li>Line (Ctrl+L)</li>
<li>Rectangle (Ctrl+R)</li>
<li>Circle (Ctrl+C)</li>
<li>Ellipse (Ctrl+E)</li>
<li>Polyline, polygon, or path (Ctrl+P)</li>
<li>Text (Ctrl+T)</li>
</ul>
<p>More detailed information about drawing each of these shapes will be provided
later.</p>
<h4><a name="The_Mod_menu">The Mod menu</a> (Alt+M)</h4>
<p>The Mod menu makes it possible for you to modify existing shape objects in
the following ways:</p>
<ul>
<li>Review (without modification) (Alt+V)</li>
<li>Rotate (Alt+R)</li>
<li>Translate (Alt+T)</li>
<li>Scale (Alt+S)</li>
<li>Move (Alt+O)</li>
<li>Clip (Alt+C)</li>
<li>Delete (Alt+Delete)</li>
</ul>
<p>More detailed information about making these modifications will be provided
later.</p>
<h3><a name="The_Advanced_menu">The Advanced menu</a> (Alt+A)</h3>
<ul>
<li>Remove Common Attributes (Alt+Shift+R)</li>
<li>Set Common Attributes (Alt+Shift+S)</li>
<li>Set Shape-Specific Attributes (Alt+Shift+P)</li>
</ul>
<p>The actions on this menu require a solid knowledge of SVG for
understanding. They should only be selected by advanced users.</p>
<h4><a name="The_Help_menu">The Help menu</a> (Alt+H)</h4>
<p>The Help menu provides access to the following information:</p>
<ul>
<li>Instructions (F1)</li>
<li>About</li>
</ul>
<h2><a name="Program_startup">Program startup</a></h2>
<p>When the program starts, you will land on Home Base from which you can select the
following actions:</p>
<ul>
<li><a href="#Start_a_new_drawing">Start a New Drawing</a> - starts fresh and creates a new drawing.</li>
<li><a href="#Open_existing_drawing">Open SVGdraw File</a> - opens a drawing file that was previously created
and saved using SVGDraw01.</li>
<li><a href="#Import_Existing_Drawing">Import SVGdraw File</a> - imports
the shapes in an existing drawing file and adds them to the current drawing.</li>
<li><a href="#Import_Other_SVG_File">Import Other SVG File</a> -
attempt to open and extract shape objects from an SVG file written by
another program.</li>
<li><a href="#Write_drawing_file">Save Normal</a> - write the current drawing into
the current SVG output file.</li>
<li><a href="#Save_Flipped">Save Flipped</a> - write the current drawing
into the current (flipped) SVG output file with the y-axis flipped to
conform with most STEM textbooks.</li>
<li><a href="#Save_As">Save As...</a> - Establish a path and file name and
write the current drawing into that file.</li>
<li><a href="#Stop_program">Exit</a> - just what it says. Be sure to select
<a href="#Write_drawing_file">Save</a>
and write your drawing into an
output file before selecting this action.</li>
<li><a href="#Draw_a_line">Line </a>- draw a straight line segment between two specified points.</li>
<li><a href="#Draw_a_rectangle">Rectangle</a> - draw a rectangle at a specified location with a
specified width and height.</li>
<li><a href="#Draw_a_circle">Circle</a> - draw a circle at a specified location with a specified
radius.</li>
<li><a href="#Draw_an_ellipse">Ellipse</a> - draw an ellipse at a specified location with specified
width and height.</li>
<li><a href="#Draw_a_polyline,_a_polygon,_or_a_path">Polyline, polygon, or
path</a> - draw a polyline, a polygon, or a path based on imported csv or path data.</li>
<li><a href="#Draw_line_of_text">Text</a> - draw a line of text at a specified location with a
specified point size and other parameters.</li>
<li><a href="#Review_shapes">Review (without modification)</a> - review the name,
description, ID, and attributes of the shapes in the current drawing.</li>
<li><a href="#Rotate_shapes">Rotate</a> - rotate one or more shapes by a specified angle in
degrees clockwise around a specified center of rotation. See
<a href="#Rotation_translation_and_scaling">Rotation, translation, and
scaling</a> for cautions regarding the use of this action.</li>
<li><a href="#Translate_shapes">Translate</a> - translate one or more shapes by specified
distances along the X-axis and the Y-axis. See
<a href="#Rotation_translation_and_scaling">Rotation, translation, and
scaling</a>.</li>
<li><a href="#Scale_shapes">Scale</a> - Multiply the coordinate values that make up one or more
shapes by scale factors along the X-axis and the Y-axis to enlarge or shrink the shapes. See
<a href="#Rotation_translation_and_scaling">Rotation, translation, and
scaling</a>.</li>
<li><a href="#Move_Shapes">Move</a> - move shape objects up and down the
shape stack or the Z-axis.</li>
<li><a href="#Clip">Clip</a> - Requires two overlapping shapes. One shape determines what
portion of the other shape will be drawn.</li>
<li><a href="#Delete_shapes">Delete</a> - delete one or more shapes from the current drawing.</li>
<li><a href="#Remove_Attributes">Remove Common Attributes</a> - For
advanced users only. Can be used to remove attributes that are common to all
shapes (and other attributes as well).</li>
<li><a href="#Set_Attributes">Set Common Attributes</a> - For advanced users
only. Can be used to set attribute values that are common to all shapes (and
other attributes as well).</li>
<li><a href="#Set_Shape-Specific_Attributes">Set Shape-Specific Attributes</a>
- Can be used to set attribute values that are specific to shapes such as
coordinate values, width, height, and radii.</li>
<li><a href="#userInstructions2">Instructions</a> - opens this HTML
instruction file in a
browser window.</li>
<li>About - general information about the program such as copyright, etc.</li>
</ul>
<p>The first action that you select should be <a href="#userInstructions2">Instructions
(F1)</a>, <a href="#Open_existing_drawing">Open SVGDraw File (Ctrl+O)</a>, or
<a href="#Start_a_new_drawing">Start a New Drawing (Ctrl+N)</a>. </p>
<p>You should always select either <a href="#Open_existing_drawing">Open SVGDraw File
(Ctrl+O)</a> or <a href="#Start_a_new_drawing">Start a New Drawing (Ctrl+N)</a> and provide the requested information
before selecting any of the other actions with the exceptions
of <a href="#userInstructions2">Instructions (F1)</a> and
<a href="#Stop_program">Exit (Ctrl+X)</a>.</p>
<h2><a name="User_instructions">General user instructions</a></h2>
<p>If you are reading this document from inside the program, you must have
already opened this HTML document in an SWT
browser widget. If so, keep reading. This information is for you.</p>
<p>On the other hand, you may have opened this document in a
standard browser without running the SVGDraw01 program. If so, keep reading.
This information is also for you.</p>
<h3><a name="Selecting_action_items">Selecting actions from the Menus</a></h3>
<p>With the exception of the actions labeled "Exit", "Instructions", and
"About", when you select an action from a menu, an Action Page (or
perhaps a dialog box) will open containing labels, text fields,
check boxes, radio buttons, push buttons, and other Graphical User Input (GUI)
components. That Action Page will enable you to provide the
information needed to execute the selected action.</p>
<p>While on the Action Page, you can navigate down through the GUI components with the
tab key. You can navigate up through the GUI components with the shift-tab key combination.</p>
<p>You can navigate through radio buttons and through the items in lists using the
arrow keys. Press the tab key to escape from a set of radio buttons or from a
list without making a selection. (Note that when you use the arrow keys to
navigate through a set of radio buttons, each press of an arrow key will
automatically select the next radio button in the set.)</p>
<h3><a name="Performing_the_action">Performing the action</a></h3>
<p>Most of the Action pages contain a button that you must press to cause the action to
be performed. If you tab past that button and return to Home Base, the selected action will not have been performed
and the data that you have entered for that action will be lost.</p>
<p>If you select "Exit", you must confirm that you really do want to stop the
program before that action will be performed.</p>
<p>If you select "Instructions" or "About", the specified action happens
immediately with no requirement for further confirmation.</p>
<p>In some cases, when you press the action key or perform other actions within
a page, a message window will pop up asking you to confirm the action. In most
cases, there will be no popup window. In some cases, there will be a sound
confirming that you performed the action. Also in some cases, text will appear
in the command-line window describing the action that you just performed in case
you need that information.</p>
<h3><a name="Pressing_the_Esc_key">Pressing the Esc key</a></h3>
<p>In all cases other than while reading the instructions in the browser window, if you press the Esc key,
either:</p>
<ul>
<li>nothing will happen, or </li>
<li>the current action will be abandoned and you will
land back on Home Base.</li>
</ul>
<p>If you press the Esc key while reading the instructions in the browser window,
you will land back where you were when you pressed F1 to open the
instructions. That allows you to get information about a particular action while
you are in the process of performing that action.</p>
<h3><a name="Text_field_objects">Text field objects</a></h3>
<p>Press the tab key to accept the default value in a text field. To change the
value in the field, type the new value and press the tab key. Normally, it
should not be necessary for you to delete the current contents of a text field in
order to change it. Just type over the current contents. However, you may find situations where it is necessary to delete the current contents so be on the lookout for those situations.</p>
<p>Many of the text fields will accept only numeric data. If you attempt to enter
non-numeric data into those text fields, your keystrokes will simply be ignored.</p>
<h3><a name="Checkbox_objects">Checkbox objects</a></h3>
<p>You must press the space bar to check or uncheck a check box. (The Enter key
won't do the job.)
</p>
<h3><a name="Button_objects">Button objects</a></h3>
<p>You can press either the space bar or the Enter key to activate a button when it
has the focus.</p>
<h3><a name="Message_box_objects">Message box objects</a></h3>
<p>A message box will appear to announce the completion of those actions where
completion is not obvious such as writing the output file, for example.</p>
<p>Most errors will also result in the appearance of a message box. In most cases,
you can press either the space bar or the Enter key to dismiss a message box.
However, in some cases you must select one of two buttons labeled Yes and No.</p>
<p>If you discover errors that do not result in a message box, please let me know.</p>
<h3><a name="Polylines_and_polygons">Polylines, polygons</a>, and paths</h3>
<p>The polyline, the polygon, and the path are by far the most versatile shapes that you can
draw with this program. For example, if you need to plot a function such as y = x^2, the polyline
shape or the path shape are probably your best choices.</p>
<p>I will explain how to draw these three types of shapes in more detail
<a href="#Draw_a_polyline,_a_polygon,_or_a_path">later</a>.</p>
<h3><a name="The_name_and_path_of_the_output_file">The name and path of the output file</a></h3>
<p>The first time you select "Save" in the File menu, you will be prompted
to enter a file name for the output file. You should enter both a path and a
file name to make certain that you can find the output file on your disk. After
that, whenever you select "Save," your new output file will overwrite the
previous one.</p>
<p>If you need to save with a different path and file name, select "Save As..."
in the File menu.</p>
<h3><a name="Rotation_translation_and_scaling">Rotation, translation, and scaling</a></h3>
<p>These three features, which fall in the general category of SVG transforms, are
relatively easy to use as long as you don't combine them on a single shape. However, once you
combine them, the topic of SVG transforms becomes an advanced topic and will
probably require outside study on your part for proper use.</p>
<p>Among other things, when you apply a
combination of rotation, translation, and scaling transforms, the order in
which you perform the transforms is critically important to the outcome. A good understanding of the use of transforms in SVG is needed in order to
understand those outcomes for combined transforms.</p>
<h3><a name="Reviewing,_marking,_and_unmarking_shapes">Reviewing, marking, and unmarking shapes</a></h3>
<p>Many of the actions on the Mod menu and the Advanced menu allow you to mark
one or more shapes on which to perform the selected action. Having selected an
action from the Mod or Advanced menu, you can tab to a list that contains all of the shapes in your
drawing and scroll up and down that list using the arrow keys.</p>
<p>Along the way, you can also check a checkbox that causes all of the shapes in
the list to be marked for the action.</p>
<p>The list of
shapes displays the title and description that were assigned to each shape when
it was created.</p>
<p>Once you scroll to a particular shape, you can press any of the following
three keys:</p>
<ul>
<li>'v' - review the shape with no resulting action</li>
<li>'m' - mark the shape for action</li>
<li>'u' - unmark the shape</li>
</ul>
<h4>Review the shape</h4>
<p>When you press the v-key, a message box will pop up containing everything
there is to know about the shape. However, no action will occur as a result of
reviewing a shape.</p>
<h4>Mark the shape</h4>
<p>When you press the m-key, the shape will be marked in such a way that the
specified action will be performed on the shape when you press the action button
later. In addition, the word "marked" will be appended to the description in the list of shapes to let you know that this shape has been
marked for action.</p>
<h4>Unmark the shape</h4>
<p>When you press the u-key, the shape will be returned to an unmarked state.
The word "marked" will be removed from the description in the list and the shape
will not be affected when the action button is pressed later.</p>
<h4>Marking all and selectively un-marking some shapes</h4>
<p>One procedure that is sometimes useful is to mark all of the shapes by
checking the checkbox and then selectively un-marking shapes by scrolling
through the list of shapes and pressing the u-key. For example, if you have
created a drawing with a large number of shapes and you want to rotate all but a
few of the shapes, the most efficient way to do this might be to mark all of the
shapes for rotation and then to un-mark the few that you don't want to rotate.</p>
<h2><a name="Specific_user_instructions">Action items</a></h2>
<p>As mentioned earlier, when you first start the program you will land on Home
Base, from which you can select and
perform more than one dozen different actions. When you first start using the
program, you will probably need to select the appropriate menu from which you
can select the desired action. However, if you pay attention to the accelerator
keys for each action, such as Ctrl+L to draw a line, for example, you will soon learn to bypass
the menus and perform the actions directly from Home Base (or from just about
anywhere else for that matter).</p>
<p>I will discuss
each of the available actions in this section.</p>
<h3><a name="Start_a_new_drawing">Start a New Drawing</a> (Ctrl+N)</h3>
<p>As the name of the action implies, you should select this action to start a new drawing. When you select this action, you will land on a page from which you can provide the
information required for a new drawing.</p>
<p>The first two text fields allow you to enter a title and a description for your
new drawing. If you simply tab past those two fields, a default title and a
default description will be assigned to your new drawing.</p>
<p>You will be asked to enter the width and height in inches of your new drawing in
the next two text fields. If you simply tab past those two fields, default
values will be assigned for width and height.</p>
<h4>A very important point</h4>
<p>This is where I need to explain a very important point. You specify the width
and height of your new drawing in inches, such as 8.5 inches and 11 inches.
Just enter the numbers. Don't enter the units. The units of inches are understood by the
program.</p>
<p>After you establish the width and height of your new drawing in inches by
executing this action, you
will frequently be asked, while executing other actions later, to provide coordinate and/or dimensional information. In those cases, you
must provide the information in units of 0.01 inch,
or 100 units per inch. For example, if you later decide to draw a rectangle that
is 8.0 inches wide and 10.5 inches high, you must specify the width as 800 and
you must specify the height as 1050. (Multiply the dimension in inches by 100 to
get the required data-entry value.)</p>
<h4>The Action button</h4>
<p>Like most other Action pages, this page has an Action button near the end
that is labeled "Start drawing." When you press that button, a sound will be
emitted to indicate that you successfully started your new drawing.</p>
<h3><a name="Open_existing_drawing">Open SVGdraw File</a> (Ctrl+O)</h3>
<p>Selecting this action will land you on a
page from which you can open a previously-saved drawing file that was created
using this program.</p>
<p>(Unless you have a good reason to do so, you probably will not want to open the
flipped version of the drawing that contains the word "flipped" in the file
name.
Instead you will probably want to open the normal version that does not contain
the word "flipped" in the file name.)</p>
<p>(SVG drawing files created using other program may or may not work, so don't be
surprised if you open a drawing file that was created using a different program
and you experience errors.)</p>
<p>Be aware that when you select this action, any
work that you may have been doing on another drawing will be lost unless you
first save
that work by selecting <a href="#Write_drawing_file">Save (Ctrl+S)</a>
before executing this action.</p>
<p>The Action page for this Action is relatively simple. You will be presented with
a text field and asked for the "Name and path of drawing file to open."
If the existing drawing file was written by this program, it will have an extension
of .svg, which you will need to enter as part of the file name. Once you have entered the
requested information, press the tab key and you will land on a button labeled
"Open drawing file." </p>
<p>Pressing that button will cause a Message Box to pop up containing information
about the search for the existing drawing file. Press the OK button on that
Message Box and the search will begin.</p>
<h4>Patience is the watchword here</h4>
<p>You may have to be very patient at this
point. Sometimes it takes quite a while on my computer for the program to find, open,
and process the existing
drawing file even if it is a small drawing.</p>
<p>If the file is not found, a Message Box will pop up with that information. Press
OK to dismiss the Message Box and focus will return to Home Base.</p>
<p>If the file is found and opened, a Message Box will pop up with that information
as well. When you press the OK button on that Message Box, focus will return to Home Base.</p>
<p class="style1"><strong>Editor's note: As of 10/16/11, there is a bug in the
program that sometimes causes the program to terminate when it can't find the
specified file.</strong></p>
<h3><a name="Import_Existing_Drawing">Import SVGdraw File</a> (Ctrl+M)</h3>
<p>This capability allows you to create a library of drawings that you can
later import and combine to produce larger overall drawings. If you have drawn
it once and saved the SVG file, you should never need to draw it again. Just import
the old drawing into a new drawing and edit as appropriate.</p>
<p>Selecting this action will land you on a
page from which you can import the shapes from a previously-saved drawing file
and add them to the current drawing.</p>
<p>(SVG drawing files created using other program may or may not work, so don't be
surprised if you import a drawing file that was created using a different program
and you experience errors.)</p>
<p>The procedure for importing an existing drawing is very similar to the procedure
for <a href="#Open_existing_drawing">opening</a> an existing drawing. The
difference is that when you open an existing drawing, it becomes the current
drawing, overwriting any work that you might have been doing on another drawing.
When you import an existing drawing, only the shapes are imported, and they are
added to the current drawing.</p>
<p>The Action page for this Action is relatively simple. You will be presented with
a text field and asked for the "Name and path of drawing file to open."
If the existing drawing file was written by this program, it will have an extension
of .svg, which you will need to enter as part of the file name. Once you have entered the
requested information, press the tab key and you will land on a button labeled
"Open drawing file." </p>
<p>Pressing that button will cause a Message Box to pop up containing information
about the search for the existing drawing file. Press the OK button on that
Message Box and the search will begin.</p>
<h4>Once again, patience is the watchword here</h4>
<p>As when opening a drawing file, you may have to be very patient at this
point. Sometimes it takes quite a while on my computer for the program to find, open,
and process the existing
drawing file even if it is a small drawing.</p>
<p>If the file is not found, a Message Box will pop up with that information. Press
OK to dismiss the Message Box and focus will return to Home Base.</p>
<p>If the file is found and opened, a Message Box will pop up with that information
as well. When you press the OK button on that Message Box, focus will return to Home Base.</p>
<h3><a name="Import_Other_SVG_File">Import Other SVG File</a> (Ctrl+H)</h3>
<p>Whereas the action named <a href="#Import_Existing_Drawing">Import SVGDraw File</a>
allows you to import a drawing file previously created using Baldwin's SVGDraw
program, this action attempts to import SVG drawing files created by other
programs. I say attempts because the result may or may not be what you want,
depending on the structure of the SVG file that you are trying to import.</p>
<p>SVG is a complex graphics standard and there are many ways to write the SVG code
for a given drawing. Simply reading an SVG file is easy. This program will
probably read most SVG files and pass them through to the output file. The
challenge comes in reading the file and capturing the shape objects in such a
way that you can use the capabilities of this program to edit them, add to them,
etc.</p>
<p>The only way to know if this program will successfully import a drawing file
produced by a different program is to try it. First you must select either
<a href="#Start_a_new_drawing">Start a New Drawing</a> or
<a href="#Open_existing_drawing">Open SVGDraw File</a>. Then select this action
(Import Other SVG File (Ctrl+H)) and provide the path and file name of the file
that you want to import.</p>
<h4>Be patient</h4>
<p>As with the other actions that involve opening an SVG file, you will need to be
patient. It may take quite a long time for the program to find, open, and
process the file.</p>
<p>When you receive the notification that the file has been opened, select
<a href="#Review_shapes">Review (without modification)</a>. Examine the list of
shapes to see if that list contains what you expected it to contain.</p>
<p>I have tested this action using SVG files from
<a href="http://www.fooplot.com/">http://www.fooplot.com/</a> and it seems to work well for those files.</p>
<h4>A word of caution</h4>
<p>There is one word of caution, however. Elsewhere in this document I explain how
the vertical axis on drawings created using this program are upside down.
SVG files created at <a href="http://www.fooplot.com/">http://www.fooplot.com/</a> have been corrected so that the images are right
side up. If you merge drawing files from that source with shape objects created
using this program, you will need to take that into account.</p>
<h4>Procedure</h4>
<p>The procedure for importing an SVG file is very similar to the procedure
for <a href="#Open_existing_drawing">opening</a> an existing drawing.
The Action page for this Action is relatively simple. You will be presented with
a text field and asked to "Name and path of drawing file to open."
Once you have entered the
requested information, press the tab key and you will land on a button labeled
"Open drawing file." </p>
<p>Pressing that button will cause a Message Box to pop up containing information
about the search for the existing drawing file. Press the OK button on that
Message Box and the search will begin.</p>
<h3><a name="Write_drawing_file">Save</a> Normal (Ctrl+S)</h3>
<p>If you have not previously saved your drawing in a file with a specified path
and file name, selecting this action will automatically invoke the
<a href="#Save_As">Save As...</a> action described below.</p>
<p>If you have previously saved your drawing, selecting this action will cause the current state of your drawing to be
saved in the same file with no further action required on your part. A
sound will be emitted as confirmation that you performed the action.</p>
<p>It might be a good idea to perform this action
frequently while creating a drawing so that if you make a mistake (or you have a
power failure), you can re-open the most recently-saved version of the drawing file.
In that case, simply press Ctrl+O and specify the path and file name to open the most recently saved file.</p>
<h3><a name="Save_Flipped">Save Flipped</a> (Ctrl+F)</h3>
<h4>A conflict between SVG and STEM textbooks</h4>
<p>Some of you are aware of a conflict that exists between the way that SVG (and
many other computer graphics systems) treat the graphics space and the way that textbooks
in many STEM courses treat that same graphics space. In particular, with SVG,
the 0,0 origin is at the upper-left corner of the drawing. Positive X is to the
right and positive Y goes down the drawing. In many STEM textbooks, however, the
0,0 origin is at the lower-left corner of the drawing, positive X is to the
right, and positive Y goes up the drawing.</p>
<p>While this might seem like a trivial problem to solve through proper
programming, it is a very difficult programming problem for graphics programs
that use standard libraries to draw text on the drawing. Without getting into
the details, when you simply flip the Y-axis, you turn the text upside down.
That upside-down text is not something that is easy to correct.</p>
<h4>Pressing Ctrl+F before selecting Save As...</h4>
<p>As before, if you have not previously saved your drawing in a file with a
specified path and file name, pressing Ctrl+F will automatically invoke the
<a href="#Save_As">Save As...</a> action described below. You must save your
drawing as a "normal" drawing file at least once before you can save it in the
"flipped" format described below.</p>
<h4>Two output files are produced</h4>
<p>After saving your drawing at least once as a normal SVG file,
pressing Ctrl+F produces two output files. One file, with an extension of .svg,
contains the "normal" SVG drawing file. The other file, with an extension of .flipped.svg,
contains a drawing with the vertical axis flipped, the origin at the lower-left
corner of the drawing, and positive Y going up the drawing.</p>
<h4>Limitations of the flipped format</h4>
<p>There is one limitation, however, that applies only to the flipped output
format. Any text that you may have placed on the drawing will not be properly
handled if you attempt to rotate, translate, or scale that text. (Unfortunately,
this precludes the possibility of drawing text along a vertical axis for the
flipped output format.)</p>
<p>Otherwise, everything in the drawing should be a correctly flipped version of
the contents of the "normal" SVG file even if rotation, translation, or scaling
have been applied to shapes other than text.</p>
<p>Therefore, if you use this option, you should plan on using
horizontally-oriented text only. You should also plan on placing and sizing that
text without any requirement to rotate, translate, or scale the text.</p>
<p>None of the limitations described above apply to the drawing in the normal SVG
output drawing file without the word "flipped" in the file name.</p>
<h4>Save early and often</h4>
<p>As before, it might be a good idea to perform this action frequently while creating a drawing so that if you make a mistake (or you have a
power failure), you can re-open the most recent good version of the "normal" drawing file.
In that case, simply press Ctrl+O to open the most recently saved normal drawing
file.</p>
<h4>Be carful which file you open</h4>
<p>Unless you have a good reason to do so, you probably will not want to open the
flipped version of the drawing, but instead will want open the normal version
that does not contain the word "flipped" in the file name. One case
where you might want to open the flipped version is if you intend to import
other SVG files that are also flipped, such as files from
<a href="http://www.fooplot.com/">http://www.fooplot.com/</a>. Having done that,
you might want to flip the files again to get everything back to the normal SVG
orientation.</p>
<h3><a name="Save_As">Save As</a>...</h3>
<p>Selecting this action will land you on a
page from which you can save your drawing with a specific path and file name.
The extension .svg will be automatically appended, once and only once, to the
file name that you specify regardless of whether you include it in your file
name.</p>
<p>Each time you perform this action, the current state of your drawing will be
saved in the specified file.</p>
<p>This action can be executed by opening the File menu and pressing the "a" key.
That is what you will need to do if you need to change the output file name in
the middle of a run. Frequently, however, you will execute this action by
pressing either Ctrl+S or Ctrl+F before having established an output path and
file name. In those cases, control will automatically be transferred to this
action. </p>
<h3><a name="Stop_program">Exit</a> (Ctrl+X)</h3>
<p>As the name implies, selecting the "Exit" action will cause the program to be terminated. Make sure that you have
performed the <a href="#Write_drawing_file">Save</a> action before
performing this action if you want to save your drawing.</p>
<h3><a name="Draw_a_line">Line</a> (Ctrl+L)</h3>
<p>Selecting this action will land you on a
page from which you can draw a line segment between any two points in your
drawing.</p>
<h4>The title and description fields</h4>
<p>On this page, as on may other pages, the first
two fields allow you to enter a title and description for the line shape object. If
you tab through these two fields, a default title and a default description will
be assigned to the object. Because this is essentially the same on all pages, I
won't mention it with respect to Action pages that I discuss in the
remaining sections of this document.</p>
<h4>Coordinate-value fields</h4>
<p>You will be asked to enter the X and Y coordinate values for one end of the line
in the next two fields. The fields already contain default values that
you can accept by simply tabbing through the fields.</p>
<p>You will then be asked to enter the X and Y coordinate values for the other end of
the line in the next two fields.</p>
<p>Recall that you need to enter these values in units of 0.01 inch. Multiply the
desired coordinate values in inches by 100 and enter the product in the text
fields.</p>
<h4>Stroke width and opacity</h4>
<p>You will be asked to enter the stroke width and opacity in the next two fields.
You will encounter these same two fields on many Action Pages and the
meaning will always be the same. Therefore, I will explain the meaning of these
fields here and
then ignore them for the remainder of this document.</p>
<h5>The stroke width</h5>
<p>The stroke width is the width or thickness of the line that will be drawn. If
you are planning to emboss the drawing, the stroke width might need to be at
least as wide as the distance between two dots on the embosser. Thus, if the embosser
supports 20 dots per inch, you might need to make the stroke width at least 5, which
represents 0.05 inch or the distance between the dots on a 20 dot per inch embosser.</p>
<p>If the
embosser supports 16 dots per inch, you might need to make the stroke width at least
6.25, which represents 0.0625 inch or the distance between the dots at 16 dots
per inch.</p>
<p>This is an area where you should experiment with your embosser to find the
stroke width that works best for you.</p>
<h5>The opacity</h5>
<p>If we were talking about color, opacity would be a complicated topic. However,
since we are only talking about white, black, and shades of gray, the concept of opacity is fairly simple.</p>
<p>You will be asked to enter a value between 0 and 1 for the stroke opacity. The
line will be drawn pure black for a value of 1.</p>
<p>The line will essentially not be drawn and therefore will be invisible for a value of 0.</p>
<p>The line will be drawn with a shade of gray that is half way
between <span lang="en-us"></span>white and black for a value of 0.5. Other values result in
shades of gray that are proportional to the value. </p>
<p>(Another way to draw with shades of gray is to specify a value of 1.0 for
opacity and then specify a color of gray for the stroke using the Set Common
Attributes action on the Advanced menu. You can use that action to cause the
stroke to be other colors as well.)</p>
<p>The greater the opacity
value, the darker will be the line. The smaller the opacity value, the
lighter will be the line.</p>
<p>On an embosser with variable dot height, a value of 1
will produce dots with the maximum height. For lower stroke opacity values, the height of the dots
will be lower. If your embosser doesn't provide variable dot height, you should
probably always enter a value of 1 for the stroke opacity.</p>
<p>(Also see <a href="#The_fill_checkbox_and_fill_opacity">The fill checkbox and fill opacity</a> later.)</p>
<h3><a name="Draw_a_rectangle">Rectangle</a> (Ctrl+R)</h3>
<p>Selecting this action will land you on a
page from which you can draw a rectangle whose sides are parallel to the
horizontal and vertical axes. If you need a rectangle whose sides are not
parallel to the horizontal and vertical axes, you can draw it with this action
and then <a href="#Rotate_shapes">rotate</a> it later or draw it as a
<a href="#Draw_a_polyline,_a_polygon,_or_a_path">polygon</a> or as a
<a href="#Draw_a_polyline,_a_polygon,_or_a_path">path</a>.</p>
<p>Using this action, you specify the X and Y coordinates of the upper-left
corner of the rectangle and the width and the height of the rectangle. If you
write the output file in the flipped format described elsewhere in this
document, that upper-left corner of the rectangle will become the lower-left
corner of the flipped rectangle.</p>
<p>As before,
you also specify the stroke width and the stroke opacity.</p>
<h4><a name="The_fill_checkbox_and_fill_opacity">The fill checkbox and fill opacity</a></h4>
<p>This action, along with several of the other actions to be discussed later,
introduces a new parameter. This new parameter is named "fill.". I will explain it here and then ignore it
when discussing actions in subsequent sections.</p>
<p>Because this is a closed geometric shape, you can cause it to be filled with a
color ranging from black through gray to white.</p>
<p>(As mentioned elsewhere, you can also use the Set Common Attribute action on
the Advanced menu to cause the fill to be many other colors as well.)</p>
<p>Before you reach the Action Button while navigating down this Action Page, you will
encounter a checkbox labeled "Check this box for black fill." You can check (and
uncheck) the box by pressing the space bar while the checkbox has the focus.</p>
<p>If you check the box, a new text field will be exposed between the checkbox
and the Action Button. You will be asked for the "Value between 0 and 1 for fill
opacity." Opacity has the same meaning here that it has for stroke opacity
discussed earlier, except that this time it doesn't simply apply to a line. Rather,
it applies to an entire area defined by a surrounding line.</p>
<h4>A word of caution</h4>
<p>A word of caution is in order here. I have been told that if you plan to emboss
your graphic using an embosser with variable dot height, you should avoid
filling areas with large (dark) opacity values. I have been told that this can
cause undesirable paper buckling when the embosser attempts to emboss a large
area with high dots. It was suggested that low opacity values (light gray) should be used
when filling to avoid this issue.</p>
<p>If you are using an embosser that doesn't provide variable height, you may need
to avoid filling areas altogether. You should experiment with your embosser to
determine what works best for you.</p>
<p>Actually, a similar issue applies to ink-squirt printers. My experience is that
printing filled dark areas not only causes the ink on the paper to dry slowly, it also
uses a lot of ink causing more frequent replacement of expensive ink cartridges.</p>
<h4>The Action button for the rectangle</h4>
<p>You will find an Action Button labeled "Draw rectangle" near
the end of the page.
As usual, pressing the button will cause the rectangle object to become a part
of your drawing and you will land on Home Base.</p>
<h3><a name="Draw_a_circle">Circle</a> (Ctrl+C)</h3>
<p>Selecting this action will land you on a
page from which you can draw a circle at a given location with a given radius.</p>
<p>You won't find anything new on this page. You will be asked to enter the X and Y
coordinates for the center of the circle along with the radius of the circle.</p>
<h3><a name="Draw_an_ellipse">Ellipse</a> (Ctrl+E)</h3>
<p>Selecting this action will land you on a
page from which you can draw an ellipse at a given location with a given radius
along the horizontal axis and a different radius along the vertical axis. As
with the rectangle, you may need to <a href="#Rotate_shapes">rotate</a> the
shape later if the default orientation is not what you need.</p>
<p>In case you aren't familiar with this shape, an ellipse is like a
squashed circle. It is a smooth closed shape, but its radius may be larger along
one axis than it is along the other axis.</p>
<p>Once again, you won't find anything new on this Action Page. This page is much like the page for
drawing a circle except that on this page, you will be asked to provide both a
horizontal radius and a vertical radius. If you enter the same value for
both of the radii, you will end up with a circle.</p>
<h3><a name="Draw_a_polyline,_a_polygon,_or_a_path">Polyline, polygon, or path</a>
(Ctrl+P)</h3>
<p>Selecting this action will land you on a
page from which you can draw a polyline, a polygon, or a path.</p>
<h4>Polyline and polygon</h4>
<p>For either a polyline or a polygon, you provide the X and Y coordinate values
for a set of points. (I will provide an example later.) The points are connected by straight line segments in the
order that you define the points. The only difference between the polyline and
the polygon is that
when you draw a polygon, the last point is automatically connected to the first
point creating a closed shape.</p>
<h4>A path</h4>
<p>A path is completely different from either a polyline or a polygon. It can be used to draw
something as simple as a straight line segment, or something as complex as a cubic Bezier curve or an elliptical arc.</p>
<p>To use this
feature of the program, you will probably need to first study SVG paths. The
best material that I have found on the topic is a tutorial located at
<a href="https://developer.mozilla.org/en/SVG/Tutorial/Paths">https://developer.mozilla.org/en/SVG/Tutorial/Paths</a>. Hopefully, it will be
sufficiently accessible that you can read it.</p>
<p>To draw a path, you provide a string of characters consisting of both SVG path
commands and coordinate information. I will provide an example later.</p>
<h4>The Action Page</h4>
<p>The Action Page for this action is relatively straightforward. The first new
thing on the page is a set of three radio buttons by which you specify that you
want to draw one of the following three shapes:</p>
<ul>
<li>Polyline</li>
<li>Polygon</li>
<li>Path</li>
</ul>
<p>After working your way past the text fields for title and description, you are asked to provide the name and path of a file to import that
contains the information from which the shape will be drawn. (Don't confuse the
word path as it applies to the location of a file on your disk with a shape of
type path that you can draw with this program.) When you enter
that information and press the tab key, you land on a button labeled "Import data file."</p>
<p>If you selected either the Polyline or the Polygon radio button,
you will need to provide a <a href="#A_csv_file">csv</a> file containing the
data. This file must have an extension of .csv or it will be rejected.</p>
<p>If you selected the Path radio button, you will need to provide a
<a href="#A_path_file">path</a> file containing the data. This file must have an
extension of .pth or it will be rejected.</p>
<h4><a name="A_csv_file">A csv file</a></h4>
<p>A csv file is a simple text file containing X,Y coordinate value pairs with no
spaces and with the values separated by commas. You can put one or more values
on each line so long as you are careful to separate them with commas. You
can omit the comma at the end of the line if you wish. As mentioned above, the file
must
have an extension of .csv or it will be rejected.</p>
<p>Here are the contents of a simple csv file that can be used to draw either a
polyline or a polygon</p>
<pre>200,200
600,200
400,400</pre>
<p>If you were to use this data to draw a polyline, the program would draw two
sides of a triangle. If you were to use it to draw a polygon, the program would
draw all three sides of the same triangle.</p>
<h4><a name="A_path_file">A path file</a></h4>
<p>A path file contains the SVG code for the path that you want to draw in addition
to coordinate values. For
example, a file containing the following characters will cause a cubic Bezier
curve to be drawn:</p>
<pre>M130 110 C 120 140, 180 140, 170 110</pre>
<p>You will find an explanation of this SVG code in the section on Bezier curves at
<a href="https://developer.mozilla.org/en/SVG/Tutorial/Paths">https://developer.mozilla.org/en/SVG/Tutorial/Paths</a>.
</p>
<h4><a name="Sample_csv_files">Sample files</a></h4>
<p>The executable jar file containing this program contains some sample csv files
and some sample path files in a folder named Samples. You can extract those
files using a program like WinZip and use them to experiment with the data
import feature for drawing polylines, polygons, and paths. </p>
<p>Many programs, including Microsoft Excel, produce csv files as a standard
output format. You can also create your own csv files using a text editor.</p>
<p>I have never seen a program that produces path files as a standard output
format. Therefore, if you import path files, you will probably need to create them using
a text editor. Although that may sound like a daunting task, you may find it worth your while because you can squeeze a lot of graphic information
into a path file once you understand SVG paths.</p>
<p>For example, assume that you frequently need to draw curves in a Cartesian
coordinate system with an X-axis, a Y-axis, and tic marks along each axis, or
maybe you need to draw grid lines instead of tic marks. You could create a path
file for that basic structure. Then whenever you need to draw a graph, you could
begin by importing the path file for the axes and then draw your data points
within those axes.</p>
<h3><a name="Draw_line_of_text">Text</a> (Ctrl+T)</h3>
<p>Selecting this action will land you on a
page from which you can draw a single line of text at a given location with a
given font face (such as Arial) and a given point size. You have three choices
for the font style (normal, italic, or oblique). You also have four choices for
the font weight (normal, bold, bolder, or lighter).</p>
<p>If you have worked through the discussions of the Action Pages in the previous
sections of this document, you shouldn't find anything new on this Action Page.</p>
<p>The starting X and Y coordinate values specify the location of the lower-left
corner of a rectangle that fully encloses the first character in the line of
text. Despite the fact that the coordinate system is upside down, text that you
draw using this action will appear right side up when you print or emboss the
drawing.</p>
<p>A point size of 72 will probably produce an upper-case "T" that is approximately
one-half inch from top to bottom on your printer. Other point sizes produce text
that is proportionally larger or smaller.</p>
<h3><a name="Review_shapes">Review (without modification)</a> (Alt+V)</h3>
<p>The first few actions
discussed above
deal with</p>
<ul>
<li>starting a new drawing,</li>
<li>opening an existing drawing,</li>
<li>saving your drawing, or</li>
<li>exiting the program.</li>
</ul>
<p>After that, the next several actions discussed above deal with drawing specific
shapes such as lines, rectangles, circles, paths, etc.</p>
<p>Beginning with this section, the next several actions that I will discuss deal with actions that you
can perform on shapes that you have already drawn. The first of these actions is the "Review
(without modification)" action.</p>
<p>Selecting the "Review (without modification)" action will land you on a
page from which you can mark any shape from a list of shapes in the current
drawing and get information about that shape's name, description, ID, and
attributes. The shapes in the drawing are not modified by this action.</p>
<p>(Note that the ID attribute contains a long numeric value that serves an a
unique identifier for each shape. You probably won't normally be interested in
it but it is presented in case you are interested. For example, you might find
it useful if you decide to edit the output SVG file using a text editor.)</p>
<h4>The Action Page</h4>
<p>The Action Page for this action is straightforward. When you enter the page,
it will contain a list showing all of the shapes in the drawing. </p>
<p>Each shape in the list is identified as follows:</p>
<pre>Title {Description}</pre>
<p>The first two items in the identifying information are the title and description that you assigned to
the
shape when you created it, or a default title and description that was created
by the program if you didn't
enter a title or description.</p>
<h4>Embedded instructions</h4>
<p>Instructions are embedded among the GUI components on many of the Action
Pages. You will find the following instructions on this page immediately before
you tab into the list of shapes:</p>
<p><em>"Tab, select a shape, and press 'v' to mark the shape for review."</em></p>
<p>After using the arrow keys and the 'v' key to review all of the shapes of
interest, you can press the tab key and press a button labeled "Return to
home base" to return focus to the
<a href="#Selecting_action_items">Home Base</a>
where you can select another action.</p>
<h3><a name="Rotate_shapes">Rotate</a> (Alt+R)</h3>
<p>Selecting the "Rotate" action will land you on a
page from which you can mark one or more existing shapes and cause them to be
rotated about a common point by a common angle in degrees clockwise.
(Negative angles rotate counter-clockwise.)</p>
<h4>The Action Page</h4>
<p>The Action Page for this action is relatively straightforward. When you enter
the page, it will contain a
list with identifying information about each shape that you have thus
far created in your drawing. </p>
<p>Before you get to that list, you will see a checkbox that gives you the opportunity to mark all of the
shapes in the list for rotation. If you check that box, the word "marked" is
appended to the description for each of the shapes in the list.</p>
<p>Pressing the tab key at that point causes the focus to move to a set of
instructions regarding the use of the list. Those instructions explain how you can review shapes,
mark shapes, and/or un-mark shapes.</p>
<p>For example, if this were an explanation of the Scale action on the Mod menu,
I would explain that you can view, emboss, or sonify a subset of the total
set of shapes, by marking them all, un-marking the shapes in the subset, scaling
the remaining shapes by 0.0, saving the drawing in a new file, and viewing,
embossing,
or sonifying the contents of that output file.</p>
<p>If you change your mind after checking the checkbox and clear the checkbox, the list of shapes marked for
rotation will also be cleared just as though you never checked the box in the first
place.</p>
<p>If you tab past that checkbox, meaning that you don't want to mark all of the
shapes in the drawing for rotation, focus moves to the instructions described
above and ultimately to the list of shapes. You can navigate up and down that list using the
arrow keys. You can review the shapes in the list by pressing the v-key. You can
mark a shape for rotation by pressing the m-key, and you can un-mark a shape by
pressing the u-key.</p>
<h4>Embedded instructions</h4>
<p>On this page, when you tab past the checkbox, you will see the following
instructions:</p>
<p><em>"Tab, select5 a shape, and press 'v', 'm', or 'u' to review, mark, or
unmark the shape."</em></p>
<p>After using the arrow keys and the 'm' key to mark all of the shapes that you
want to rotate around a common point, you can press the tab key, enter the coordinates of the common rotation point, and
enter the rotation angle in
degrees clockwise.</p>
<p>Finally, you can press a button labeled "Rotate shapes" to cause the
rotation to be performed on all of the marked shapes. This is the point where your drawing is actually
modified. If you tab past this button and return the focus to the Home
Base,
your drawing will not be modified.</p>
<p>Before using the rotation feature, you should read the cautions in the
<a href="#Rotation_translation_and_scaling">Rotation, translation, and scaling</a> section.</p>
<h3><a name="Translate_shapes">Translate</a> (Alt+T)</h3>
<p>Selecting the "Translate" action will land you on a page from
which you can mark one, some, or all existing shapes and cause them to be translated
(moved) by specific distances along the horizontal and vertical axes.</p>
<p>The procedure for performing this action is essentially the same as the
procedure for rotating shapes. The main difference is that in this case, you specify translation distances instead of the rotation
point and rotation angle required by the Rotate action.</p>
<p>If you understand how to rotate shapes, you should have no problem using this
action to translate shapes.</p>
<p>Once again, however, before using the translation feature, you should read the cautions in the
<a href="#Rotation_translation_and_scaling">Rotation, translation, and scaling</a>
section.</p>
<h3><a name="Scale_shapes">Scale</a> (Alt+S)</h3>
<p>Selecting the "Scale" action will land you on a page from
which you can mark one, more, or all existing shapes and cause them to be scaled
(made larger or smaller) by applying specific multiplicative scale factors along the horizontal and vertical axes.</p>
<p>The procedure for performing this action is essentially the same as the
procedure for rotating shapes with one major exception as described below. In this case, you specify multiplicative scale factors instead of the rotation
point and rotation angle required by rotation.</p>
<p>The exception has to do with the width of the lines after scaling takes place.
In some cases, you might want your shapes to become larger or smaller and to
have the widths of the lines change in a proportional manner. In other cases,
you might want your shapes to become larger or smaller and to have the widths of
the lines remain relatively unchanged.</p>
<p>A checkbox is included on the Action Page that allows you to choose between the
two alternatives. If you check the box, the line widths after scaling will be
approximately the same as the line widths before scaling. If you leave the
checkbox unchecked, the line widths will change in proportion to the scale
factors applied along the X and Y axes.</p>
<p>I say approximately because if you apply different scale factors to the X and Y
directions, there is no exact solution to the problem of keeping the line widths
the same. In this case, a line-width correction is made on the basis of the
average of the X and Y scale factors so that the average line widths will remain
approximately the same as before.</p>
<p>If you understand how to rotate shapes, you should have no problem using this
action to scale shapes.</p>
<p>Before using the scaling feature, you should read the cautions in the
<a href="#Rotation_translation_and_scaling">Rotation, translation, and scaling</a>
section.</p>
<h3><a name="Move_Shapes">Move</a> (Alt+O)</h3>
<p>Don't confuse the Move action with the <a href="#Translate_shapes">Translate</a>
action. The Translate action allows you to change the position of a shape object
relative to where it appears on the two-dimensional view of the drawing - right,
left, up, and down. The Move action allows you to change the position of a shape
object relative to where it appears in a three-dimensional view of the drawing -
front to back. Sometimes the two-dimensional view is described in the literature by X and Y
coordinates and the front to back or three-dimensional view is described in the
literature by the
Z axis. In other words, the (imaginary) Z axis protrudes out of the front of your
computer screen and pokes you in the eye.</p>
<p>You can think of an SVG drawing as a stack of individual shape objects. By
default, the shape object that you create first is at the bottom of the stack
and the shape object that you create last is at the top of the stack. If you
look down on the stack from above, those objects on or near the top may cover
and hide those further down the stack. Sometimes this is important, and
sometimes it is not important.</p>
<p>For example, with the ViewPlus IVEO software, if you draw a circle in the center
of the page and then you draw a rectangle that is the same size as the page. the
rectangle will hide the circle from the IVEO software even if the rectangle is
completely transparent. By this I mean that if you look at the drawing, you will
be able to see the circle behind the transparent rectangle but the IVEO program
won't be able to see the circle for purposes of generating audio.</p>
<p>One of the main features of the IVEO system has to do with the use of audio to
supplement tactile information. If a properly designed embossed image is placed
on the IVEO touchpad, and then explored with the fingers, audio information is
generated as the fingers touch different parts of the image.</p>
<p>In the case mentioned above involving the rectangle and the circle, when the
rectangle is on top, touching the circle will not cause audio to be generated
that pertains to the circle. Instead, the audio that is generated will probably
pertain to the rectangle. In order to support IVEO and for other reasons as
well, we need a way to change the position of the shapes in the stack without
having to redraw the shapes. That is the purpose of the "Move" action on the
"Mod" menu.</p>
<p>Selecting the "Move" action will land you on a page from
which you can mark an existing shape and cause it to be moved by one step, up
or down the stack, by pressing the "u" key for up or the "d" key for down.</p>
<p>Each time you do that, you can press a button to refresh the list of shapes showing each shape in its new position, and do it again. Thus, for the case
of the rectangle and the circle discussed above, you could either move the
rectangle down or move the circle up to cause the circle to be higher than the
rectangle in the stack. Then when you touch the circle in IVEO, the audio that
is generated will pertain to the circle and not to the rectangle.</p>
<h4>The Action Page</h4>
<p>The Action Page for the "Move" action looks much like the action pages for
rotate, scale, translate, etc., Therefore, no instructions beyond those given
above should be needed.</p>
<h3><a name="Clip">Clip</a> (Alt+C)</h3>
<p>Selecting the "Clip" action will land you on a page from
which you can mark two shapes. The first shape that you mark will
clip the second shape that you mark that when the SVG file is rendered onto a
printer or an embosser. The first shape
that you mark will not be drawn. Only
those portions of the second marked shape that overlap the first marked shape will be drawn.</p>
<p>Given the ability to mark and unmark shapes, knowing which shape will be
clipped by another shape can be complicated. Only two shapes will survive the
mark/unmark process. The last shape that you mark will be clipped by the other
surviving shape.</p>
<p>The best explanation of clipping in SVG that I have found is available at
<a href="https://developer.mozilla.org/en/SVG/Tutorial/Clipping_and_masking">https://developer.mozilla.org/en/SVG/Tutorial/Clipping_and_masking</a></p>
<p>The procedure for performing this action is very similar to the procedure for
rotating shapes except that in this case, you can only mark (without unmarking) two shapes.</p>
<p>This capability has a variety of different uses. One of the most important uses is
drawing circular or elliptical arcs. While you can also draw circular and
elliptical arcs using a <a href="#Draw_a_polyline,_a_polygon,_or_a_path">path</a>,
in many cases it will be easier to do using clipping.</p>
<h3><a name="Delete_shapes">Delete</a> (Alt+Delete)</h3>
<p>Selecting the "Delete" action will land you on a page from
which you can mark one or more existing shapes and cause them to be deleted
from your drawing.</p>
<p>The procedure for deleting shapes is similar to but simpler than the
procedure for rotating shapes. The main difference is:</p>
<ul>
<li>In this case, there are no coordinate values to be provided. Instead,
you simply mark the shapes that are to be deleted and press the button
labeled "Delete shapes."</li>
</ul>
<p>If you understand how to rotate shapes, you should have no problem using this
action to delete shapes.</p>
<h3><a name="Remove_Attributes">Remove Common Attributes</a> (Alt+Shift+R)</h3>
<p>This action, which is intended only for advanced users, can be used to remove
attributes from the shapes in your drawing. If you are the advanced user for which this action
is intended, you shouldn't need instructions on how to use it. A solid
understanding of SVG will be required to understand the use of this action.</p>
<h3><a name="Set_Attributes">Set Common Attributes</a> (Alt+Shift+S)</h3>
<p>This action, which is intended only for advanced users, can be used to set new
values into the attributes in your drawing. It is primarily intended to allow
you to set the attribute values for attributes that are common to all shapes.
However, it also allows you to set the attribute value for any attribute for
which you know the name, or to create new attributes with new names. If you are the advanced user for
which this action is intended, you shouldn't need instructions on how to use it.
A solid understanding of SVG will be required to understand the use of this
action.</p>
<p>For example, you can use this action to change the stroke color and fill
color to any of the colors listed at
<a href="http://www.december.com/html/spec/colorsvg.html">
http://www.december.com/html/spec/colorsvg.html</a>.</p>
<h3><a name="Set_Shape-Specific_Attributes">Set Shape-Specific Attributes</a> (Alt+Shift+P)</h3>
<p>This action, can be used to set new
values into the shape-specific attributes in your drawing, such as coordinates,
width, height, and radii.</p>
<p>Assume, for example, that you want to create a grid. Using this capability,
you could create and save a drawing of a line. Then you could import multiple
copies of that drawing into a new drawing and edit the coordinates of the
end points of each line to place the lines in the shape of a grid.</p>
<h3><a name="userInstructions2">Instructions</a> (F1)</h3>
<p>If you select "Instructions" in the Help menu, this HTML document will open in a separate browser window.
Note that the browser window is an SWT Widget, and may appear different in
some respects from your standard browser. However, you should still be able to navigate and read the
document just like you would read any other HTML document in a browser window.</p>
<p>When you get to the end of the document, pressing the tab key will land you on a button labeled "Return to
Home Base." As the name implies, pressing the button will cause the browser
window to close and focus will return to Home Base, from which you can make another
selection.</p>
<p>If you press the Esc key while reading the instructions in the browser window,
you will land back where you were when you pressed F1 to open the
instructions. That allows you to get information about a particular action from
the instructions while you are in the process of performing that action.</p>
<h2><a name="Please_provide_feedback">Please provide feedback</a></h2>
<p>Please let me know if you find errors in these instructions, or you find areas
that deserve a more thorough explanation.</p>
<p>I would also like to hear about it if there are features that you would like to
see added to this program.</p>
<p>Dick Baldwin<br/>
baldwin@dickbaldwin.com</p>