home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Magazin: Amiga-CD 1996 July
/
AMIGA_1996_7.BIN
/
ausgabe_7_96
/
pd-programmierung
/
ace_prgs.lha
/
gfx
/
SpiroDraw04.lha
/
SpiroDraw04.doc
< prev
next >
Wrap
Text File
|
1994-05-25
|
22KB
|
396 lines
User Document for SpiroDraw04 94-05-25
Lines marked with "|" are additions or changes in this document
from the SpiroDraw03 documentation.
I. What is this program and who wrote the thing?
------------------------------------------------
SpiroDraw is a program that simulates the spiral drawing
child's toy. It is almost as rewarding to watch the design being
drawn by the computer as I remember it being to actually draw
the design yourself, using the pins, and wheels and everything.
It is certainly more accurate since the computer does not have
to worry about holding all the wheels and guides perfectly still
while winding the drawing wheel around inside or outside the
guide wheel. If you have ever used this toy then I am sure
you know what I mean!
| This program is an update from Rev 03 (Left-Mouse-Button-Click has
| been added for "user-break" of lengthy and "boring" designs). The
| "CTRL-C" key combination was added in Rev 03 of the program. Also,
| the little spinning "activity" animation in the center of the screen
| has been replaced with a running "percent-done" in the upper left
| corner of the drawing screen. A file extension of ".spd" is now
| also automatically added to the filename upon a "Load" if it is
| not specified by the user.
| SpiroDraw04 has been compiled with ACE (c)David Benn
| on an Amiga A2000HD (running OS 2.1).
If you get any enjoyment or productive use from this program,
| drop me a line. I'd like to hear from you (if you REALLY like
| it, stick a little $ (how about $5.00 US) in the envelope - please!).
| Thanks go to Bill Hagan who was the first send some $ my way.
| He has restored my faith in the "shareware" concept!
Charles E. Kenney, II
4 Burbank Circle
Framingham, MA 01701
USA
phone: (508) 877-5959
or: (508) 877-4771
If you send me a disk and a stamped self-addressed disk mailer,
I will also send you the latest version of 'SpiroDraw' and the
source code along with any other little ditties I come up with.
This program may be freely distributed as long as this document
accompanies the program AND no more than a _small_ fee is charged
for copying and or distribution.
Thanks.
-ck.
P.S. Thanks again to David Benn for his wonderful compiler, "ACE".
II. Program Set-up and Menu Descriptions
----------------------------------------
| 'SpiroDraw' starts with 8 default settings (See "Last" gadget below)
for SpiroDraw designs so you can see immediately what 'SpiroDraw'
can do. Following are decriptions of the various menus and the
resultant actions:
The "Project" menu contains the "standard" Load and Save functions:
| Load - The user may load data for a previously saved design.
| Data files for SpiroDraw always have a ".spd" extension.
| If the user does not include a ".spd" file extension,
| 'SpiroDraw' adds it automatically.
| The current data is "backed-up" before the data is
| loaded (See "Last" gadget above).
Save - The user may save data for a design if desired.
| If the user does not include a ".spd" file extension,
'SpiroDraw' adds it automatically.
Draw - Draws the SpiroDraw design for the data and other
parameters currently in effect for 'SpiroDraw'.
| The drawing of the design may be interrupted with the
| famous 'CTRL-C' keys or by clicking the Left Mouse Button.
| About - A little message about SpiroDraw and its author.
Quit - Well... This is how to exit 'SpiroDraw'!
The "Design" menu contains all the functions
the user needs to set the design parameters:
Set Data... - Invokes a screen which allows the user to specify
the three "size" parameters for the SpiroDraw
| design: Guide Ring, Drawing Wheel and Pen-Hole
(see "A few words about 'SpiroDraw'" below for a
description of these).
| Clicking on the "In/Out" gadget cycles the placement
| of the Drawing Wheel to inside-only, outside-only or
| both on the Guide Ring.
| Clicking on the "Last" gadget "recalls" the last
| data from the "design buffer". The design buffer
| is capable of holding 8 sets of design data -
| (Guide Ring, Drawing Wheel and Pen-Hole parameters).
| When the user clcks on this gadget, the previous
| data in use before the current data is placed into
| the current data and the other 7 sets of data are
| "bubbled-up", with the current data being "sent down"
| to the 8th set of data. Note that any time the user
| modifies the current data by loading new data from
| disk, by exiting the "Set Data..." window after
| making changes, or by selecting the "Random" gadget,
| (see below), the current data is "backed-up" to the
| "1st" buffer, the "1st" to the "2nd", the "2nd" to
| the "3rd", etc. The "8th" set of data simply gets
| "pushed off the cliff" and is lost forever.
| Clicking on the "Random" gadget randomizes the design
| sizes for the Guide Ring, Drawing Wheel and Pen-hole.
| The current data is "backed-up" before the data is
| randomized (See "Last" gadget description above).
| Clicking on the "Done" gadget exits this function
| and the user is asked whether or not to draw the
| new design using the new design parameters.
Wheel Inside - If this Menu item does not have the "check-mark"
then the "check-mark" is placed in the menu and
'SpiroDraw' will place the Drawing Wheel inside
the Guide Ring for subsequent SpiroDraws.
If this Menu item does have the "check-mark"
then the "check-mark" is removed from the menu
and 'SpiroDraw' will not place the Drawing Wheel
inside the Guide Ring for subsequent SpiroDraws.
'SpiroDraw' will also automatically "check-mark"
the "Wheel Outside" menu if the "Wheel Inside"
menu is UN-check-marked.
Wheel Outside - If this Menu item does not have the "check-mark"
then the "check-mark" is placed in the menu and
'SpiroDraw' will place the Drawing Wheel outside
the Guide Ring for subsequent SpiroDraws.
If this Menu item does have the "check-mark"
then the "check-mark" is removed from the menu
and 'SpiroDraw' will not place the Drawing Wheel
outside the Guide Ring for subsequent SpiroDraws.
'SpiroDraw' will also automatically "check-mark"
the "Wheel Inside" menu if the "Wheel Outside"
menu is UN-check-marked.
Detail... - Invokes a window which allows the user to specify
how detailed the drawn design will be. Clicking
on the "Next" gadget cycles through all possible
choices (each selection also causes 'SpiroDraw' to
take progressively longer to draw the design):
DOTTY - plots dots at visible intervals rather than
drawing a continuous line while the design
is being drawn (dots may be connected with
a line between each dot - see the description
for the "Connect Dots" menu item below).
SKETCHY - plots dots at smaller intervals than "DOTTY"
COARSE - plots dots at _really_ small intervals.
FINE - plots dots so close together that they are
a continuous line when 'SpiroDraw' draws.
Connect Dots - The user may "check-mark" this menu item to connect
the dots that are plotted by 'SpiroDraw' with a line
to give the design a continuous-line appearance.
This menu item is automatically disabled if the user
selects "FINE" in the "Detail..." menu above since
the design will already have a continous appearance.
Clear Canvas - The user may "check-mark" this menu item to clear
the drawing "canvas" before drawing each design.
If this menu item is not "check-marked" then many
designs can be drawn "on top of" each other.
The "Preferences" menu contains the following functions:
Ask Save - Any time data is changed in "SpiroDraw", the user is
asked whether or not to save the "old" data if this
menu item is "check-marked". "UN-check-marking"
this menu item stops "SpiroDraw" from asking.
It _can_ be annoying. "SpiroDraw" _always_ asks
the user whether to save the new data (if it has
been changed) when the "Quit" menu item is selected,
regardless of the "check-mark" status of this menu item.
| Show Activity - When this menu item is "check-marked", a running
| '% completed' is displayed in the upper left corner
| of the 'drawing window'. This is done to show that
| "SpiroDraw" is "doing something" and to give the user
| an idea of how long it will take to draw the design.
| It is difficult to see the design actually being
| drawn sometimes if the Pen-Hole value is very near
| zero or if the sizes of the Guide Ring and the Drawing
| Wheel are nearly equal. There are instances when the
| "% completed" message would ruin the appearance of
| the design so to avoid this, the user may elect to
| "UN-check-mark" this "Show Activity" menu item.
Visual Round
Screen Round - This is a "cycling menu" function. Each time
this menu item is selected the function is
"swapped" to the other selection,
"Visual Round" to "Screen Round" and vice versa.
If the user selects "Visual Round", the design will be
drawn with a perfectly circular appearance on the screen.
If the user selects "Screen Round", the design will be
drawn with a slightly oval appearance on the screen, but
this is a useful selection if the design is "saved" as
an IFF file (using a "screen-capture-to-IFF-file" program
and then imported into a paint package capable of animation.
Once this is done, the design can be rotated while still
maintaining its "roundness". This has been used successfully
with DPaint.
Resolution... - Invokes a window which allows the user to specify
different screen resolutions. Clicking on the
"Next" gadget cycles through all possible choices:
If the user selects "LOW" then 'SpiroDraw' will
change to low resolution (320 x 200 screen).
If the user selects "MEDIUM" then 'SpiroDraw' will
change to medium resolution (640 x 200 screen).
If the user selects "HIGH" then 'SpiroDraw' will
change to high resolution (640 x 400 screen).
III. A few words about 'SpiroDraw'
--------------------------------------
The Guide Ring was, for the child's toy, the plactic ring with
"gearing" on each side that was so hard to hold perfectly in place
on the paper while winding the Drawing Wheel around the inside or
outside of the Guide Ring. Even pinning the Guide Ring down through
the paper onto cardboard was never much help either! 'SpiroDraw'
holds the Guide Ring in place quite nicely though. 'SpiroDraw'
always places the Guide Ring in the center of the screen.
The Drawing Wheel was, for the child's toy, the plastic "wheel"
with "gearing" (to mesh with the Guide Ring) that was so hard to keep
engaged to the gearing of the Guide Ring while winding the Drawing
Wheel around the inside or outside of the Guide Ring. If you went
too slowly you would sometimes get "stuck" due to the "cam" effect
of the pen-hole in the Drawing Wheel that you had chosen, especially
if you chose a pen-hole way out near the edge of the Drawing Wheel!
If you went too fast the the gearing between the Drawing Wheel and
the Guide Ring would slip or disengage altogether and you would draw
a nice ugly, frantic and ruinous line across your design! This was
REALLY frustrating, especially if you were "almost done"... and only
6 years old! 'SpiroDraw' will never know gear slips and getting
stuck by the "cam" effect!
The "Pen-Hole" was, for the child's toy, the little hole in the
Drawing Wheel (there were lots of these little holes in each wheel)
that you would put your pen into which would determine the "character"
of the design - the holes closest to the center of the Drawing Wheel
would produce "circular" designs (for 'SpiroDraw', small values for
the Pen-hole distance from the center of the Drawing Wheel), and the
holes closest to the edges of the Drawing Wheel would produce very
"spirally" designs (for 'SpiroDraw', large values for the Pen-hole
distance from the center of the Drawing Wheel). Note that 'SpiroDraw'
allows a distance for the Pen-hole which is larger than the radius of
the Drawing Wheel but only within practical limits depending upon whether
the 'current' sceen resolution is LOW, MEDIUM or HIGH. You may go ahead
and TRY putting a pen into a hole on the Drawing Wheel that is larger
than the Drawing Wheel itself using the child's toy!
IV. A "useful" way to use this program
(depending on your definition of "useful")
-----------------------------------------------
Here is a neat little tidbit for using this program with a
Paint package (if you would like to play with or animate any of
your designs that you generate with this program):
For DPaint, anyway, this works nicely...
1. Start up a "screen-saver" program "in the background"
which is capable of saving a screen as an IFF file.
I have used "PictSaver" by Preben Nielsen successfully.
2. Generate your design using the "screen" roundness
choice during the "user input" routine. This choice
is known to work for DPaint.
3. Once the design has finished being generated, execute
whatever key sequence is required by the "screen saver"
program you have and save the design as an IFF file.
4. Call up your Paint package and do whatever. I have
had fun "rolling" my designs across the screen or
"into the distance" or even using the design as a
circular border for other brushes, etc. Be creative!
The following history also appears verbatim as a comment
at the top of the source program since virtually any significant
change to the source will result in a significant change to the
documentation and vice versa. Also, if you have this user doc
and not the source, you can see any revision information and
when it is/was implemented.
Note that as of the first writing of this document
(for SpiroDraw01), 94-02-17, this little program was
only 3 days shy of its 10th birthday!
Great advertising hook - "A DECADE IN THE MAKING!"
PROGRAM REVISION HISTORY (in reverse chronological order)
----------------------------------------------------------------
Added the option to Save the screen as an IFF file
(if this capability is added to ACE) NOT YET!
| Uploaded to AMINET as SpiroDraw04 94-05-25
| Fixed HIGH to LOW/MEDIUM Drawing Wheel size scaling bug 94-05-25
| Cleaned up tracking of changed data and backup buffers 94-05-24
| Added "About" MENU item 94-05-24
| Squished Gadgets closer together in HIGH Resolution
| "Set Data" window 94-05-24
| Increased width of slider gadgets for HIGH resolution 94-05-24
| Moved "Random", "Last" from MENUs to "Set Data" window
| and re-positioned other GADGETS to accommodate them 94-05-23
| Changed window title from
| "Screen Res" to "Sreen Resolution" 94-05-23
| Added " " between SpiroDraw and Data in Set Data window 94-05-23
| Moved "Set Detail" and "Screen Resolution" windows
| down 5 pixels 94-05-23
| Automatically add ".spd" to end of user load data file
| name if not specified by the user. 94-05-23
| Added Left-Mouse-Button-Click to interrupt design-draw 94-05-23
| Removed the cute spinning anim and replaced with % done 94-05-23
| Fixed a 'bug'. GADGETS were getting messed up with
| DIM g_msg$(8) SIZE 4
| changed to DIM g_msg$(8) 94-05-23
Uploaded to AMINET as SpiroDraw03 94-05-20
Finished debugging user break capability 95-05-18
Compiled using latest version of ACE which fixed a bug 94-05-15
Began debugging user-break capability 94-05-11
Received first shareware $ from W. Hagan (thanks Bill!) 94-05-12
Added ^C user-break capability to spiro_draw subroutine 94-05-11
Added Declarations of variables 94-04-30
Uploaded to AMINET as SpiroDraw02 94-03-13
Rewrite Documentation for Menus and new features 94-03-13
All the new stuff 94-03-13
Added more robust file-handling 94-03-11
Added more pretty-up code 94-03-11
Added switches to ask to save data every time
data is changed or to not ask and whether to show
the little activity loop while design is drawn 94-03-11
Added activity loop while design is being drawn 94-03-11
Added memory buffer for 8 designs 94-03-11
Added some more error handling and pretty-up code 94-03-10
Added RANDOMIZATION of design parameters 94-03-09
Debugged more GADGET code 94-03-09
More GADGET coding 94-03-09
Debugged new gadget code 94-03-08
Coded "design size" parameters using GADGETs 94-03-08
Coded "resolution" parameter using GADGETs 94-03-07
Coded "detail" parameter using GADGETs 94-03-07
Ask the user to draw immediately upon reading a .spd 94-03-07
Added more robust File I/O error handling...
... could still use more 94-03-07
Ability to choose (and now change) SCREEN resolution
"pulled" into the main program 94-03-06
MENU and code to Save/Load design parameters 94-03-04
Added Dummy MENUs for Load and Save 94-03-04
Added additional design types skeleton code and menus 94-03-04
Replaced "hack" user inputs with MENU constructs
This would enable the user to set up all the
"design" parameters and change only those
parameters desired while maintaining all the
others (user doc changed too) 94-03-03
UPLOADED to Aminet as SpiroDraw01 94-02-25
Cleaned-up the plot loop, eliminated some "goto"s 94-02-21
Cleaned up screen and window sizes, user input text 94-02-20
Fixed new "revolutions" bugs (variable rvlv)
introduced while cleaning-up the code 94-02-19
Program now runs from WorkBench 94-02-17
The user is now asked for "Pen-hole distance"
before being asked "inside, outside, or both"
This order seemed to be more logical after
writing the documentation 94-02-17
Finally wrote the documentation 94-02-17
More refinement of programming constructs 94-02-16
Refinement of programming constructs 94-02-15
Revived from my AmigaBasic hacks and converted
to ACE (great package, David Benn!) 94-02-14
Converted from C-64 SIMON'S BASIC to AmigaBasic 87-11-20
Program initiated and hacked into working order
using SIMON'S BASIC for the Commodore 64 (tm) 84-02-20