home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Programmieren / Kurztests / ACE / Prgs / Gfx / SpiroDraw04.lha / SpiroDraw04.doc < prev    next >
Text File  |  1994-05-25  |  22KB  |  396 lines

  1.  
  2.     User Document for SpiroDraw04  94-05-25
  3.  
  4.     Lines marked with "|" are additions or changes in this document
  5.     from the SpiroDraw03 documentation.
  6.  
  7.     I. What is this program and who wrote the thing?
  8.     ------------------------------------------------
  9.  
  10.          SpiroDraw is a program that simulates the spiral drawing
  11.     child's toy.  It is almost as rewarding to watch the design being
  12.     drawn by the computer as I remember it being to actually draw
  13.     the design yourself, using the pins, and wheels and everything.
  14.     It is certainly more accurate since the computer does not have
  15.     to worry about holding all the wheels and guides perfectly still
  16.     while winding the drawing wheel around inside or outside the
  17.     guide wheel.  If you have ever used this toy then I am sure
  18.     you know what I mean!
  19.  
  20.  |  This program is an update from Rev 03 (Left-Mouse-Button-Click has
  21.  |  been added for "user-break" of lengthy and "boring" designs).  The
  22.  |  "CTRL-C" key combination was added in Rev 03 of the program.  Also,
  23.  |  the little spinning "activity" animation in the center of the screen
  24.  |  has been replaced with a running "percent-done" in the upper left
  25.  |  corner of the drawing screen.  A file extension of ".spd" is now
  26.  |  also automatically added to the filename upon a "Load" if it is
  27.  |  not specified by the user.
  28.  
  29.  |  SpiroDraw04 has been compiled with  ACE (c)David Benn
  30.  |  on an Amiga A2000HD (running OS 2.1).
  31.  
  32.     If you get any enjoyment or productive use from this program,
  33.  |  drop me a line.  I'd like to hear from you (if you REALLY like
  34.  |  it, stick a little $ (how about $5.00 US) in the envelope - please!).
  35.  |  Thanks go to Bill Hagan who was the first send some $ my way.
  36.  |  He has restored my faith in the "shareware" concept!
  37.  
  38.         Charles E. Kenney, II
  39.         4 Burbank Circle
  40.         Framingham, MA 01701
  41.         USA
  42.               phone: (508) 877-5959
  43.                  or: (508) 877-4771
  44.  
  45.     If you send me a disk and a stamped self-addressed disk mailer,
  46.     I will also send you the latest version of 'SpiroDraw' and the
  47.     source code along with any other little ditties I come up with.
  48.  
  49.     This program may be freely distributed as long as this document
  50.     accompanies the program AND no more than a _small_ fee is charged
  51.     for copying and or distribution.
  52.  
  53.     Thanks.
  54.        -ck.
  55.  
  56.     P.S. Thanks again to David Benn for his wonderful compiler, "ACE".
  57.  
  58.  
  59.     II. Program Set-up and Menu Descriptions
  60.     ----------------------------------------
  61.  
  62.  |  'SpiroDraw' starts with 8 default settings (See "Last" gadget below)
  63.     for SpiroDraw designs so you can see immediately what 'SpiroDraw'
  64.     can do.  Following are decriptions of the various menus and the
  65.     resultant actions:
  66.  
  67.     The "Project" menu contains the "standard" Load and Save functions:
  68.  
  69.  |    Load - The user may load data for a previously saved design.
  70.  |           Data files for SpiroDraw always have a ".spd" extension.
  71.  |           If the user does not include a ".spd" file extension,
  72.  |           'SpiroDraw' adds it automatically.
  73.  |           The current data is "backed-up" before the data is
  74.  |           loaded (See "Last" gadget above).
  75.  
  76.       Save - The user may save data for a design if desired.
  77.  |           If the user does not include a ".spd" file extension,
  78.              'SpiroDraw' adds it automatically.
  79.  
  80.       Draw - Draws the SpiroDraw design for the data and other
  81.              parameters currently in effect for 'SpiroDraw'.
  82.  |           The drawing of the design may be interrupted with the
  83.  |           famous 'CTRL-C' keys or by clicking the Left Mouse Button.
  84.  
  85.  |    About - A little message about SpiroDraw and its author.
  86.  
  87.       Quit - Well... This is how to exit 'SpiroDraw'!
  88.  
  89.  
  90.     The "Design" menu contains all the functions
  91.     the user needs to set the design parameters:
  92.  
  93.       Set Data... - Invokes a screen which allows the user to specify
  94.                     the three "size" parameters for the SpiroDraw
  95.  |                  design: Guide Ring, Drawing Wheel and Pen-Hole
  96.                     (see "A few words about 'SpiroDraw'" below for a
  97.                     description of these).
  98.  |                  Clicking on the "In/Out" gadget cycles the placement
  99.  |                  of the Drawing Wheel to inside-only, outside-only or
  100.  |                  both on the Guide Ring.
  101.  |                  Clicking on the "Last" gadget "recalls" the last
  102.  |                  data from the "design buffer".  The design buffer
  103.  |                  is capable of holding 8 sets of design data -
  104.  |                  (Guide Ring, Drawing Wheel and Pen-Hole parameters).
  105.  |                  When the user clcks on this gadget, the previous
  106.  |                  data in use before the current data is placed into
  107.  |                  the current data and the other 7 sets of data are
  108.  |                  "bubbled-up", with the current data being "sent down"
  109.  |                  to the 8th set of data.  Note that any time the user
  110.  |                  modifies the current data by loading new data from
  111.  |                  disk, by exiting the "Set Data..." window after
  112.  |                  making changes, or by selecting the "Random" gadget,
  113.  |                  (see below), the current data is "backed-up" to the
  114.  |                  "1st" buffer, the "1st" to the "2nd", the "2nd" to
  115.  |                  the "3rd", etc.  The "8th" set of data simply gets
  116.  |                  "pushed off the cliff" and is lost forever.
  117.  |                  Clicking on the "Random" gadget randomizes the design
  118.  |                  sizes for the Guide Ring, Drawing Wheel and Pen-hole.
  119.  |                  The current data is "backed-up" before the data is
  120.  |                  randomized (See "Last" gadget description above).
  121.  |                  Clicking on the "Done" gadget exits this function
  122.  |                  and the user is asked whether or not to draw the
  123.  |                  new design using the new design parameters.
  124.       
  125.       Wheel Inside  - If this Menu item does not have the "check-mark"
  126.                       then the "check-mark" is placed in the menu and
  127.                       'SpiroDraw' will place the Drawing Wheel inside
  128.                       the Guide Ring for subsequent SpiroDraws.
  129.                       If this Menu item does have the "check-mark"
  130.                       then the "check-mark" is removed from the menu
  131.                       and 'SpiroDraw' will not place the Drawing Wheel
  132.                       inside the Guide Ring for subsequent SpiroDraws.
  133.                       'SpiroDraw' will also automatically "check-mark"
  134.                       the "Wheel Outside" menu if the "Wheel Inside"
  135.                       menu is UN-check-marked.
  136.  
  137.       Wheel Outside - If this Menu item does not have the "check-mark"
  138.                       then the "check-mark" is placed in the menu and
  139.                       'SpiroDraw' will place the Drawing Wheel outside
  140.                       the Guide Ring for subsequent SpiroDraws.
  141.                       If this Menu item does have the "check-mark"
  142.                       then the "check-mark" is removed from the menu
  143.                       and 'SpiroDraw' will not place the Drawing Wheel
  144.                       outside the Guide Ring for subsequent SpiroDraws.
  145.                       'SpiroDraw' will also automatically "check-mark"
  146.                       the "Wheel Inside" menu if the "Wheel Outside"
  147.                       menu is UN-check-marked.
  148.  
  149.       Detail...  - Invokes a window which allows the user to specify
  150.                    how detailed the drawn design will be.  Clicking
  151.                    on the "Next" gadget cycles through all possible
  152.                    choices (each selection also causes 'SpiroDraw' to
  153.                    take progressively longer to draw the design):
  154.  
  155.                    DOTTY   - plots dots at visible intervals rather than
  156.                              drawing a continuous line while the design
  157.                              is being drawn (dots may be connected with
  158.                              a line between each dot - see the description
  159.                              for the "Connect Dots" menu item below).
  160.  
  161.                    SKETCHY - plots dots at smaller intervals than "DOTTY"
  162.  
  163.                    COARSE  - plots dots at _really_ small intervals.
  164.  
  165.                    FINE    - plots dots so close together that they are
  166.                              a continuous line when 'SpiroDraw' draws.
  167.  
  168.       Connect Dots - The user may "check-mark" this menu item to connect
  169.                      the dots that are plotted by 'SpiroDraw' with a line
  170.                      to give the design a continuous-line appearance.
  171.                      This menu item is automatically disabled if the user
  172.                      selects "FINE" in the "Detail..." menu above since
  173.                      the design will already have a continous appearance.
  174.  
  175.       Clear Canvas - The user may "check-mark" this menu item to clear
  176.                      the drawing "canvas" before drawing each design.
  177.                      If this menu item is not "check-marked" then many
  178.                      designs can be drawn "on top of" each other.
  179.  
  180.     The "Preferences" menu contains the following functions:
  181.  
  182.       Ask Save - Any time data is changed in "SpiroDraw", the user is
  183.                  asked whether or not to save the "old" data if this
  184.                  menu item is "check-marked".  "UN-check-marking"
  185.                  this menu item stops "SpiroDraw" from asking.
  186.                  It _can_ be annoying.  "SpiroDraw" _always_ asks
  187.                  the user whether to save the new data (if it has
  188.                  been changed) when the "Quit" menu item is selected,
  189.                  regardless of the "check-mark" status of this menu item.
  190.  
  191.  |    Show Activity - When this menu item is "check-marked", a running
  192.  |                    '% completed' is displayed in the upper left corner
  193.  |                    of the 'drawing window'.  This is done to show that
  194.  |                    "SpiroDraw" is "doing something" and to give the user
  195.  |                    an idea of how long it will take to draw the design.
  196.  |                    It is difficult to see the design actually being
  197.  |                    drawn sometimes if the Pen-Hole value is very near
  198.  |                    zero or if the sizes of the Guide Ring and the Drawing
  199.  |                    Wheel are nearly equal.  There are instances when the
  200.  |                    "% completed" message would ruin the appearance of
  201.  |                    the design so to avoid this, the user may elect to
  202.  |                    "UN-check-mark" this "Show Activity" menu item.
  203.  
  204.       Visual Round
  205.       Screen Round  - This is a "cycling menu" function.  Each time
  206.                       this menu item is selected the function is
  207.                       "swapped" to the other selection,
  208.                       "Visual Round" to "Screen Round" and vice versa.
  209.  
  210.              If the user selects "Visual Round", the design will be
  211.              drawn with a perfectly circular appearance on the screen.
  212.              If the user selects "Screen Round", the design will be
  213.              drawn with a slightly oval appearance on the screen, but
  214.              this is a useful selection if the design is "saved" as
  215.              an IFF file (using a "screen-capture-to-IFF-file" program
  216.              and then imported into a paint package capable of animation.
  217.              Once this is done, the design can be rotated while still
  218.              maintaining its "roundness".  This has been used successfully
  219.              with DPaint.
  220.  
  221.       Resolution... - Invokes a window which allows the user to specify
  222.                       different screen resolutions.  Clicking on the
  223.                       "Next" gadget cycles through all possible choices:
  224.  
  225.                       If the user selects "LOW" then 'SpiroDraw' will
  226.                       change to low resolution (320 x 200 screen).
  227.                       If the user selects "MEDIUM" then 'SpiroDraw' will
  228.                       change to medium resolution (640 x 200 screen).
  229.                       If the user selects "HIGH" then 'SpiroDraw' will
  230.                       change to high resolution (640 x 400 screen).
  231.  
  232.  
  233.     III.  A few words about 'SpiroDraw'
  234.     --------------------------------------
  235.  
  236.          The Guide Ring was, for the child's toy, the plactic ring with
  237.     "gearing" on each side that was so hard to hold perfectly in place
  238.     on the paper while winding the Drawing Wheel around the inside or
  239.     outside of the Guide Ring.  Even pinning the Guide Ring down through
  240.     the paper onto cardboard was never much help either!  'SpiroDraw'
  241.     holds the Guide Ring in place quite nicely though.  'SpiroDraw'
  242.     always places the Guide Ring in the center of the screen.
  243.  
  244.          The Drawing Wheel was, for the child's toy, the plastic "wheel"
  245.     with "gearing" (to mesh with the Guide Ring) that was so hard to keep
  246.     engaged to the gearing of the Guide Ring while winding the Drawing
  247.     Wheel around the inside or outside of the Guide Ring.  If you went
  248.     too slowly you would sometimes get "stuck" due to the "cam" effect
  249.     of the pen-hole in the Drawing Wheel that you had chosen, especially
  250.     if you chose a pen-hole way out near the edge of the Drawing Wheel!
  251.     If you went too fast the the gearing between the Drawing Wheel and
  252.     the Guide Ring would slip or disengage altogether and you would draw
  253.     a nice ugly, frantic and ruinous line across your design!  This was
  254.     REALLY frustrating, especially if you were "almost done"... and only
  255.     6 years old!  'SpiroDraw' will never know gear slips and getting
  256.     stuck by the "cam" effect!
  257.  
  258.  
  259.          The "Pen-Hole" was, for the child's toy, the little hole in the
  260.     Drawing Wheel (there were lots of these little holes in each wheel)
  261.     that you would put your pen into which would determine the "character"
  262.     of the design - the holes closest to the center of the Drawing Wheel
  263.     would produce "circular" designs (for 'SpiroDraw', small values for
  264.     the Pen-hole distance from the center of the Drawing Wheel), and the
  265.     holes closest to the edges of the Drawing Wheel would produce very
  266.     "spirally" designs  (for 'SpiroDraw', large values for the Pen-hole
  267.     distance from the center of the Drawing Wheel).  Note that 'SpiroDraw'
  268.     allows a distance for the Pen-hole which is larger than the radius of
  269.     the Drawing Wheel but only within practical limits depending upon whether
  270.     the 'current' sceen resolution is LOW, MEDIUM or HIGH.  You may go ahead
  271.     and TRY putting a pen into a hole on the Drawing Wheel that is larger
  272.     than the Drawing Wheel itself using the child's toy!
  273.  
  274.     IV.  A "useful" way to use this program
  275.          (depending on your definition of "useful")
  276.     -----------------------------------------------
  277.  
  278.          Here is a neat little tidbit for using this program with a
  279.     Paint package (if you would like to play with or animate any of
  280.     your designs that you generate with this program):
  281.  
  282.          For DPaint, anyway, this works nicely...
  283.  
  284.          1.  Start up a "screen-saver" program "in the background"
  285.              which is capable of saving a screen as an IFF file.
  286.              I have used "PictSaver" by Preben Nielsen successfully.
  287.  
  288.          2.  Generate your design using the "screen" roundness
  289.              choice during the "user input" routine.  This choice
  290.              is known to work for DPaint.
  291.  
  292.          3.  Once the design has finished being generated, execute
  293.              whatever key sequence is required by the "screen saver"
  294.              program you have and save the design as an IFF file.
  295.  
  296.          4.  Call up your Paint package and do whatever.  I have
  297.              had fun "rolling" my designs across the screen or
  298.              "into the distance" or even using the design as a
  299.              circular border for other brushes, etc.  Be creative!
  300.  
  301.  
  302.          The following history also appears verbatim as a comment
  303.     at the top of the source program since virtually any significant
  304.     change to the source will result in a significant change to the
  305.     documentation and vice versa.  Also, if you have this user doc
  306.     and not the source, you can see any revision information and
  307.     when it is/was implemented.
  308.  
  309.          Note that as of the first writing of this document
  310.     (for SpiroDraw01), 94-02-17, this little program was
  311.     only 3 days shy of its 10th birthday!
  312.  
  313.     Great advertising hook - "A DECADE IN THE MAKING!"
  314.  
  315.     PROGRAM REVISION HISTORY (in reverse chronological order)
  316.     ----------------------------------------------------------------
  317.     Added the option to Save the screen as an IFF file
  318.         (if this capability is added to ACE)                NOT YET!
  319.  |  Uploaded to AMINET as SpiroDraw04                       94-05-25
  320.  |  Fixed HIGH to LOW/MEDIUM Drawing Wheel size scaling bug 94-05-25
  321.  |  Cleaned up tracking of changed data and backup buffers  94-05-24
  322.  |  Added "About" MENU item                                 94-05-24
  323.  |  Squished Gadgets closer together in HIGH Resolution
  324.  |      "Set Data" window                                   94-05-24
  325.  |  Increased width of slider gadgets for HIGH resolution   94-05-24
  326.  |  Moved "Random", "Last" from MENUs to "Set Data" window
  327.  |      and re-positioned other GADGETS to accommodate them 94-05-23
  328.  |  Changed window title from
  329.  |     "Screen Res" to "Sreen Resolution"                   94-05-23
  330.  |  Added " " between SpiroDraw and Data in Set Data window 94-05-23
  331.  |  Moved "Set Detail" and "Screen Resolution" windows
  332.  |     down 5 pixels                                        94-05-23 
  333.  |  Automatically add ".spd" to end of user load data file
  334.  |     name if not specified by the user.                   94-05-23
  335.  |  Added Left-Mouse-Button-Click to interrupt design-draw  94-05-23
  336.  |  Removed the cute spinning anim and replaced with % done 94-05-23
  337.  |  Fixed a 'bug'.  GADGETS were getting messed up with
  338.  |                  DIM g_msg$(8) SIZE 4
  339.  |       changed to DIM g_msg$(8)                           94-05-23
  340.     Uploaded to AMINET as SpiroDraw03                       94-05-20
  341.     Finished debugging user break capability                95-05-18
  342.     Compiled using latest version of ACE which fixed a bug  94-05-15
  343.     Began debugging user-break capability                   94-05-11
  344.     Received first shareware $ from W. Hagan (thanks Bill!) 94-05-12
  345.     Added ^C user-break capability to spiro_draw subroutine 94-05-11
  346.     Added Declarations of variables                         94-04-30
  347.     Uploaded to AMINET as SpiroDraw02                       94-03-13
  348.     Rewrite Documentation for Menus and new features        94-03-13
  349.     All the new stuff                                       94-03-13
  350.     Added more robust file-handling                         94-03-11
  351.     Added more pretty-up code                               94-03-11
  352.     Added switches to ask to save data every time
  353.         data is changed or to not ask and whether to show
  354.         the little activity loop while design is drawn      94-03-11
  355.     Added activity loop while design is being drawn         94-03-11
  356.     Added memory buffer for 8 designs                       94-03-11
  357.     Added some more error handling and pretty-up code       94-03-10        
  358.     Added RANDOMIZATION of design parameters                94-03-09
  359.     Debugged more GADGET code                               94-03-09
  360.     More GADGET coding                                      94-03-09
  361.     Debugged new gadget code                                94-03-08
  362.     Coded "design size" parameters using GADGETs            94-03-08
  363.     Coded "resolution" parameter using GADGETs              94-03-07
  364.     Coded "detail" parameter using GADGETs                  94-03-07
  365.     Ask the user to draw immediately upon reading a .spd    94-03-07
  366.     Added more robust File I/O error handling...
  367.                                  ... could still use more   94-03-07
  368.     Ability to choose (and now change) SCREEN resolution
  369.         "pulled" into the main program                      94-03-06
  370.     MENU and code to Save/Load design parameters            94-03-04
  371.     Added Dummy MENUs for Load and Save                     94-03-04
  372.     Added additional design types skeleton code and menus   94-03-04
  373.     Replaced "hack" user inputs with MENU constructs
  374.         This would enable the user to set up all the
  375.         "design" parameters and change only those
  376.         parameters desired while maintaining all the
  377.         others (user doc changed too)                       94-03-03
  378.     UPLOADED to Aminet as SpiroDraw01                       94-02-25
  379.     Cleaned-up the plot loop, eliminated some "goto"s       94-02-21
  380.     Cleaned up screen and window sizes, user input text     94-02-20
  381.     Fixed new "revolutions" bugs (variable rvlv)
  382.         introduced while cleaning-up the code               94-02-19
  383.     Program now runs from WorkBench                         94-02-17
  384.     The user is now asked for "Pen-hole distance"
  385.         before being asked "inside, outside, or both"
  386.         This order seemed to be more logical after
  387.         writing the documentation                           94-02-17
  388.     Finally wrote the documentation                         94-02-17
  389.     More refinement of programming constructs               94-02-16
  390.     Refinement of programming constructs                    94-02-15
  391.     Revived from my AmigaBasic hacks and converted
  392.     to ACE (great package, David Benn!)                     94-02-14
  393.     Converted from C-64 SIMON'S BASIC to AmigaBasic         87-11-20
  394.     Program initiated and hacked into working order
  395.       using SIMON'S BASIC for the Commodore 64 (tm)         84-02-20
  396.