home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Graphics / graphics-16000.iso / amiga / fractal / mak / source.lzh / Source / Information.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-16  |  57.4 KB  |  1,609 lines

  1. #include <exec/types.h>
  2. #include <intuition/intuition.h>
  3.  
  4. extern struct TextAttr Font;
  5. extern struct Screen *FirstScreen;
  6. extern struct IntuiMessage *message;
  7. extern struct Window *FirstWindow,*NoBorder;
  8. extern SHORT op_code;     
  9. extern BOOL DrawWindow;
  10.  
  11. /**************************************************************************
  12.  
  13.             I N F O R M A T I O N   R E Q U E S T E R   I N F O 
  14.           
  15. **************************************************************************/
  16.    
  17.  
  18.  
  19. struct IntuiText in_Quit_txt =
  20.        {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"QUIT", NULL};
  21.  
  22. struct IntuiText in_Next_txt =
  23.        {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"Next Page", NULL};
  24.  
  25. struct IntuiText in_Prev_txt =
  26.        {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"Previous Page", NULL};
  27.          
  28. struct Image in_Quit_img = {0,0, 50,25, 3, NULL, 0, 0, NULL};
  29.  
  30. struct Image in_Next_img = {0,0, 88,25, 3, NULL, 0, 0, NULL};
  31.  
  32. struct Image in_Prev_img = {0,0, 120,25, 3, NULL, 0, 0, NULL};
  33.    
  34. struct Gadget in_Prev_gadg =
  35.     {
  36.      NULL,
  37.      420, 350, 120, 25,
  38.      GADGIMAGE|GADGHBOX, RELVERIFY, REQGADGET|BOOLGADGET,
  39.      (APTR)&in_Prev_img, NULL,
  40.      &in_Prev_txt, NULL,
  41.      NULL, 3, NULL
  42.     };
  43.  
  44. struct Gadget in_Next_gadg =
  45.     {
  46.      &in_Prev_gadg,
  47.      250, 350, 88, 25,
  48.      GADGIMAGE|GADGHBOX, RELVERIFY, REQGADGET|BOOLGADGET,
  49.      (APTR)&in_Next_img, NULL,
  50.      &in_Next_txt, NULL,
  51.      NULL, 2, NULL
  52.     };
  53.  
  54. struct Gadget in_Quit_gadg =
  55.     {
  56.      &in_Next_gadg,
  57.      100, 350, 50, 25,
  58.      GADGIMAGE|GADGHBOX, ENDGADGET, REQGADGET|BOOLGADGET,
  59.      (APTR)&in_Quit_img, NULL,
  60.      &in_Quit_txt, NULL,
  61.      NULL, 1, NULL
  62.     };
  63.  
  64.  
  65. SHORT in_border1_cords[] = {5,10, 620,10, 620,388, 5,388, 5,10};
  66. SHORT in_border2_cords[] = {10,15, 615,15, 615,383, 10,383, 10,15};
  67.  
  68.  
  69. struct Border in_border2 =
  70.     {
  71.      0, 0,
  72.      1, 0, JAM1,
  73.      5, &in_border2_cords[0],
  74.      NULL
  75.     };
  76.  
  77. struct Border in_border1 =
  78.     {
  79.      0, 0,
  80.      1, 0, JAM1,
  81.      5, &in_border1_cords[0],
  82.      &in_border2
  83.     };
  84.  
  85. struct IntuiText prg_txt1[30] =
  86.   { 
  87.    {1, 0, JAM1, 40, 40, &Font,
  88.     "    There is no known real world structure that when magnified",
  89.     &prg_txt1[1]},
  90.    {1, 0, JAM1, 40, 50, &Font,    
  91.     "repeatedly an infinite number of times maintains its original",
  92.     &prg_txt1[2]},
  93.    {1, 0, JAM1, 40, 60, &Font,     
  94.     "appearance, however, the study of such imaginary structures have",
  95.     &prg_txt1[3]},
  96.    {1, 0, JAM1, 40, 70, &Font,     
  97.     "intrigued mathematicians and physicists for some time.",
  98.     &prg_txt1[4]},    
  99.    {1, 0, JAM1, 40, 80, &Font,    
  100.    "    Mathematicians have perennially contemplated numerous ideas using",
  101.     &prg_txt1[5]},   
  102.    {1, 0, JAM1, 40, 90, &Font,   
  103.     "pictures; in fact, they often use aesthetic classifications as",
  104.     &prg_txt1[6]},    
  105.    {1, 0, JAM1, 40, 100, &Font,     
  106.    "criteria for showing completeness and/or discovering truths.  There",
  107.     &prg_txt1[7]},   
  108.    {1, 0, JAM1, 40, 110, &Font,    
  109.    "is a growing conviction, amongst the mathematical community, that",
  110.     &prg_txt1[8]},   
  111.    {1, 0, JAM1, 40, 120, &Font,    
  112.    "formation processes and self-organization develop by an exclusive",
  113.     &prg_txt1[9]},   
  114.    {1, 0, JAM1, 40, 130, &Font,    
  115.    "number of orthodox scenarios which are independent of the specific",
  116.     &prg_txt1[10]},   
  117.    {1, 0, JAM1, 40, 140, &Font,    
  118.    "system involved.  During the 1980's there was a great deal of effort",
  119.     &prg_txt1[11]},   
  120.    {1, 0, JAM1, 40, 150, &Font,    
  121.    "put into methodically finding the rules by which order arises in",
  122.     &prg_txt1[12]},   
  123.    {1, 0, JAM1, 40, 160, &Font,    
  124.    "complex systems; the exploration into the fields of chaos and order",
  125.     &prg_txt1[13]},   
  126.    {1, 0, JAM1, 40, 170, &Font,    
  127.    "has since continued enthusiastically.  By creating these beautiful",
  128.     &prg_txt1[14]},   
  129.    {1, 0, JAM1, 40, 180, &Font,    
  130.    "pictures, scientists are trying to comprehend how the organization",
  131.     &prg_txt1[15]},   
  132.    {1, 0, JAM1, 40, 190, &Font,    
  133.    "of the boundaries (the fractal's shape or form) corresponds to the",
  134.     &prg_txt1[16]},   
  135.    {1, 0, JAM1, 40, 200, &Font,    
  136.    "parameters chosen.",
  137.     &prg_txt1[17]},   
  138.    {1, 0, JAM1, 40, 210, &Font,   
  139.    "    While producing exquisite depictions, the Mandelbrot set",
  140.     &prg_txt1[18]},   
  141.    {1, 0, JAM1, 40, 220, &Font,    
  142.    "provides a superlative working example of the complex transformation",
  143.     &prg_txt1[19]},   
  144.    {1, 0, JAM1, 40, 230, &Font,    
  145.    "from order to chaos.  The Julia sets are peculiar to the individual",
  146.     &prg_txt1[20]},   
  147.    {1, 0, JAM1, 40, 240, &Font,    
  148.    "parts of the Mandelbrot set; that is, by using parameters from",
  149.     &prg_txt1[21]},   
  150.    {1, 0, JAM1, 40, 250, &Font,    
  151.    "disparate sections of the Mandelbrot set distinct Julia set fractals",
  152.     &prg_txt1[22]},   
  153.    {1, 0, JAM1, 40, 260, &Font,    
  154.    "will be generated.  The pictures that are generated are actually",
  155.     &prg_txt1[23]},   
  156.    {1, 0, JAM1, 40, 270, &Font,    
  157.    "computations of escape velocities of the equation for each point on",
  158.     &prg_txt1[24]},   
  159.    {1, 0, JAM1, 40, 280, &Font,   
  160.    "the screen to which the picture is being drawn, and the picture's",
  161.     &prg_txt1[25]},   
  162.    {1, 0, JAM1, 40, 290, &Font,   
  163.    "colors are selected by an associated color table.  The way in which",
  164.     &prg_txt1[26]},   
  165.    {1, 0, JAM1, 40, 300, &Font,   
  166.    "one chooses these colors (or zones as this program refers to them)",
  167.     &prg_txt1[27]},   
  168.    {1, 0, JAM1, 40, 310, &Font,   
  169.    "is of critical importance since this will determine what is",
  170.     &prg_txt1[28]},   
  171.    {1, 0, JAM1, 40, 320, &Font,   
  172.    "graphically rendered to the screen; different color assignments in",
  173.     &prg_txt1[29]},   
  174.    {1, 0, JAM1, 40, 330, &Font,   
  175.    "the same region can actually produce distinct fractals.  Knowing",
  176.     NULL}
  177.   };
  178.   
  179. struct IntuiText prg_txt2[27] =
  180.   {   
  181.    {1, 0, JAM1, 40, 40, &Font,   
  182.    "how to pick the right combinations of colors is somewhat of an art,",
  183.     &prg_txt2[1]},    
  184.    {1, 0, JAM1, 40, 50, &Font,      
  185.    "however, by employing the trial and error method it is possible to",
  186.     &prg_txt2[2]},   
  187.    {1, 0, JAM1, 40, 60, &Font,   
  188.    "generate fairly attractive fractals.  For more information",
  189.     &prg_txt2[3]},   
  190.    {1, 0, JAM1, 40, 70, &Font,   
  191.    "concerning choosing the colors for the zones see the Color Zones",
  192.     &prg_txt2[4]},   
  193.    {1, 0, JAM1, 40, 80, &Font,   
  194.    "information.  Also, you may find it helpful to peruse the",
  195.     &prg_txt2[5]},   
  196.    {1, 0, JAM1, 40, 90, &Font,   
  197.    "information on Fractal Values especially for the Julia set",
  198.     &prg_txt2[6]},   
  199.    {1, 0, JAM1, 40, 100, &Font,   
  200.    "parameters.",
  201.     &prg_txt2[7]},   
  202.    {1, 0, JAM1, 40, 110, &Font,   
  203.    "    Some of my friends have expressed a concern about only allowing",
  204.     &prg_txt2[8]},   
  205.    {1, 0, JAM1, 40, 120, &Font,    
  206.    "for a high-resolution, interlaced screen, but it is my belief that",
  207.     &prg_txt2[9]},   
  208.    {1, 0, JAM1, 40, 130, &Font,    
  209.    "these alluring structures can only be fully appreciated with the",
  210.     &prg_txt2[10]},   
  211.    {1, 0, JAM1, 40, 140, &Font,    
  212.    "finest resolution attainable.  Although this increases the run-time",
  213.     &prg_txt2[11]},   
  214.    {1, 0, JAM1, 40, 150, &Font,    
  215.    "for a full screen fractal, if you have the time to wait, I believe",
  216.     &prg_txt2[12]},   
  217.    {1, 0, JAM1, 40, 160, &Font,    
  218.    "it is well worth it.",
  219.     &prg_txt2[13]},   
  220.    {1, 0, JAM1, 40, 170, &Font,   
  221.    "    I am submitting this program to the public domain in hopes that",
  222.     &prg_txt2[14]},   
  223.    {1, 0, JAM1, 40, 180, &Font,    
  224.    "it will serve to inspire others to program and offer their code to",
  225.     &prg_txt2[15]},   
  226.    {1, 0, JAM1, 40, 190, &Font,    
  227.    "rookies, like myself, who struggle through the growing pains of not",
  228.     &prg_txt2[16]},   
  229.    {1, 0, JAM1, 40, 200, &Font,    
  230.    "knowing how to program on their Amiga.  This is not a high-powered",
  231.     &prg_txt2[17]},   
  232.    {1, 0, JAM1, 40, 210, &Font,    
  233.    "fractal program; in fact, I could cite several examples of faster",
  234.     &prg_txt2[18]},   
  235.    {1, 0, JAM1, 40, 220, &Font,    
  236.    "fractal generators with more ""bells and whistles"" than this, but my",
  237.     &prg_txt2[19]},   
  238.    {1, 0, JAM1, 40, 230, &Font,    
  239.    "intention is to share, with anyone interested, the code which makes",
  240.     &prg_txt2[20]},   
  241.    {1, 0, JAM1, 40, 240, &Font,    
  242.    "this program possible.  This program began as an extra credit project",
  243.     &prg_txt2[21]},   
  244.    {1, 0, JAM1, 40, 250, &Font,   
  245.    "in a C class that I was taking at Grand Rapids Junior College, and as",
  246.     &prg_txt2[22]},   
  247.    {1, 0, JAM1, 40, 260, &Font,   
  248.    "my fascination with fractals grew so did the program!  If you have",
  249.     &prg_txt2[23]},   
  250.    {1, 0, JAM1, 40, 270, &Font,    
  251.    "any comments or suggestions, please feel free to write me or, what",
  252.     &prg_txt2[24]},   
  253.    {1, 0, JAM1, 40, 280, &Font,    
  254.    "the hell, if you feel the need to send money - I'm still just a poor",
  255.     &prg_txt2[25]},   
  256.    {1, 0, JAM1, 40, 290, &Font,    
  257.    "college student... You can find my address in the About section of",
  258.     &prg_txt2[26]},   
  259.    {1, 0, JAM1, 40, 300, &Font,    
  260.    "the information sub-menu. I hope you enjoy the pictures I've created.",
  261.     NULL}
  262.   };
  263.    
  264.  
  265. struct IntuiText map_txt[24] =
  266.   {   
  267.    {1, 0, JAM1, 40, 40, &Font,   
  268.    "    The Map is an ILBM that I created using this program.  I loaded",
  269.     &map_txt[1]},
  270.    {1, 0, JAM1, 40, 50, &Font,    
  271.    "it into Deluxe Paint III to add the words and markings.  The Map is",
  272.     &map_txt[2]},
  273.    {1, 0, JAM1, 40, 60, &Font,    
  274.    "a picture of the Mandelbrot set and its associated coordinates in the",
  275.     &map_txt[3]},   
  276.    {1, 0, JAM1, 40, 70, &Font,   
  277.    "complex plane.  The coordinates are used as parameters when defining",
  278.     &map_txt[4]},   
  279.    {1, 0, JAM1, 40, 80, &Font,   
  280.    "where you want your fractal to come from.  For example, if you were",
  281.     &map_txt[5]},   
  282.    {1, 0, JAM1, 40, 90, &Font,    
  283.    "to choose a real minimum of -2, a real maximum of .50, an imaginary",
  284.     &map_txt[6]},   
  285.    {1, 0, JAM1, 40, 100, &Font,   
  286.    "minimum of -1.25, and an imaginary maximum of 1.25 and then you",
  287.     &map_txt[7]},   
  288.    {1, 0, JAM1, 40, 110, &Font,   
  289.    "assigned these values in the Assign Mandelbrot Values requester,",
  290.     &map_txt[8]},   
  291.    {1, 0, JAM1, 40, 120, &Font,    
  292.    "then chose Draw/Mandelbrot you would effectively generate the",
  293.     &map_txt[9]},   
  294.    {1, 0, JAM1, 40, 130, &Font,    
  295.    "Mandelbrot set you see when you display the Map.  When you want to",
  296.     &map_txt[10]},   
  297.    {1, 0, JAM1, 40, 140, &Font,    
  298.    "zoom in on a particular spot of the Mandelbrot set, you can use the",
  299.     &map_txt[11]},   
  300.    {1, 0, JAM1, 40, 150, &Font,    
  301.    "Map to get a general idea of what coordinates are used to generate",
  302.     &map_txt[12]},   
  303.    {1, 0, JAM1, 40, 160, &Font,    
  304.    "that fractal.  Finding a precise location isn't always easy, and it",
  305.     &map_txt[13]},   
  306.    {1, 0, JAM1, 40, 170, &Font,    
  307.    "may require a couple of test runs to get the fractal you want.  I",
  308.     &map_txt[14]},   
  309.    {1, 0, JAM1, 40, 180, &Font,    
  310.    "suggest that instead of generating a full screen fractal you use",
  311.     &map_txt[15]},   
  312.    {1, 0, JAM1, 40, 190, &Font,    
  313.    "the Drawing Area Parameters requester and make the draw window say",
  314.     &map_txt[16]},   
  315.    {1, 0, JAM1, 40, 200, &Font,    
  316.    "50 x 50 (just big enough to see if you found the right area) and set",
  317.     &map_txt[17]},   
  318.    {1, 0, JAM1, 40, 210, &Font,   
  319.    "the iterations to 25 so it is generated as quickly as possible.",
  320.     &map_txt[18]},   
  321.    {1, 0, JAM1, 40, 220, &Font,     
  322.    "Then if the area you chose was the spot you wanted to zoom in on,",
  323.     &map_txt[19]},   
  324.    {1, 0, JAM1, 40, 230, &Font,    
  325.    "you could increase the draw window size and increase the number of",
  326.     &map_txt[20]},   
  327.    {1, 0, JAM1, 40, 240, &Font,    
  328.    "iterations used.  This Map can be used for picking Julia set",
  329.     &map_txt[21]},   
  330.    {1, 0, JAM1, 40, 250, &Font,    
  331.    "fractals also since they require separate real and imaginary",
  332.     &map_txt[22]},   
  333.    {1, 0, JAM1, 40, 260, &Font,    
  334.    "parameters.  SEE Iterations, Fractal Values, Draw, and Drawing Area",
  335.     &map_txt[23]},   
  336.    {1, 0, JAM1, 40, 270, &Font,   
  337.    "for more information about these functions.",
  338.     NULL}
  339.   };
  340.    
  341.    
  342. struct IntuiText drwa_txt[18] =
  343.   {   
  344.    {1, 0, JAM1, 40, 40, &Font,   
  345.    "    The Drawing Area Parameters requester allows you to change the",
  346.     &drwa_txt[1]},   
  347.    {1, 0, JAM1, 40, 50, &Font,   
  348.    "size and/or position of the drawing window.  Since this window has",
  349.     &drwa_txt[2]},   
  350.    {1, 0, JAM1, 40, 60, &Font,    
  351.    "no border or window sizing gadgets, this requester facilitates the",
  352.     &drwa_txt[3]},   
  353.    {1, 0, JAM1, 40, 70, &Font,    
  354.    "way in which you specify where the window should appear by using the",
  355.     &drwa_txt[4]},   
  356.    {1, 0, JAM1, 40, 80, &Font,    
  357.    "Left Edge and Top Edge gadgets.  The Left Edge should be a natural",
  358.     &drwa_txt[5]},   
  359.    {1, 0, JAM1, 40, 90, &Font,    
  360.    "number between 0 and 500 while the Top Edge should be a natural",
  361.     &drwa_txt[6]},   
  362.    {1, 0, JAM1, 40, 100, &Font,    
  363.    "number between 10 and 350.  The size of the window is governed by",
  364.     &drwa_txt[7]},   
  365.    {1, 0, JAM1, 40, 110, &Font,    
  366.    "the Width and Height gadgets.  If the sum of the Left Edge and the",
  367.     &drwa_txt[8]},   
  368.    {1, 0, JAM1, 40, 120, &Font,    
  369.    "Width is greater than 640 an error message is displayed and the",
  370.     &drwa_txt[9]},   
  371.    {1, 0, JAM1, 40, 130, &Font,    
  372.    "values are reset to their default settings.  If the sum of the",
  373.     &drwa_txt[10]},   
  374.    {1, 0, JAM1, 40, 140, &Font,    
  375.    "Height and Top Edge exceeds 400 an error message is displayed and,",
  376.     &drwa_txt[11]},   
  377.    {1, 0, JAM1, 40, 150, &Font,    
  378.    "once again, both of these values will be reset to their respective",
  379.     &drwa_txt[12]},   
  380.    {1, 0, JAM1, 40, 160, &Font,    
  381.    "default settings.  The size of the window will determine the total",
  382.     &drwa_txt[13]},   
  383.    {1, 0, JAM1, 40, 170, &Font,    
  384.    "drawing area for the fractal.  Smaller windows are useful for",
  385.     &drwa_txt[14]},   
  386.    {1, 0, JAM1, 40, 180, &Font,    
  387.    "testing color arrangements or specific fractal values where you're",
  388.     &drwa_txt[15]},   
  389.    {1, 0, JAM1, 40, 190, &Font,    
  390.    "not sure if you've chosen the correct area to zoom in on.  A full",
  391.     &drwa_txt[16]},   
  392.    {1, 0, JAM1, 40, 200, &Font,    
  393.    "window (or say a 400 x 400 window) is nice for generating the",
  394.     &drwa_txt[17]},   
  395.    {1, 0, JAM1, 40, 210, &Font,    
  396.    "fractal you wish to save.",
  397.     NULL}
  398.   };   
  399.    
  400.  
  401. struct IntuiText drw_txt1[19] =
  402.   {   
  403.    {1, 0, JAM1, 40, 40, &Font,   
  404.    "                                Draw",
  405.     &drw_txt1[1]},   
  406.    {1, 0, JAM1, 40, 60, &Font,
  407.    "Mandelbrot - selection of this option will initiate the drawing of a",
  408.     &drw_txt1[2]},   
  409.    {1, 0, JAM1, 40, 70, &Font,   
  410.    "Mandelbrot set fractal.",
  411.     &drw_txt1[3]},
  412.    {1, 0, JAM1, 40, 90, &Font,
  413.    "Julia - selection of this option will initiate the drawing of a Julia",
  414.     &drw_txt1[4]},   
  415.    {1, 0, JAM1, 40, 100, &Font,   
  416.    "set fractal.",
  417.     &drw_txt1[5]},
  418.    {1, 0, JAM1, 40, 120, &Font,
  419.    "The choice of Draw is the last command given to the program before",
  420.     &drw_txt1[6]},   
  421.    {1, 0, JAM1, 40, 130, &Font,   
  422.    "generation of a fractal takes place.  The program is dependent upon",
  423.     &drw_txt1[7]},   
  424.    {1, 0, JAM1, 40, 140, &Font,   
  425.    "the values in these requesters as follows:",
  426.     &drw_txt1[8]},
  427.    {1, 0, JAM1, 40, 160, &Font,
  428.    "Colors - colors currently defined in the Modify Colors requester are",
  429.     &drw_txt1[9]},   
  430.    {1, 0, JAM1, 40, 170, &Font,   
  431.    "         the system colors and will be used to color the fractal as",
  432.     &drw_txt1[10]},   
  433.    {1, 0, JAM1, 40, 180, &Font,   
  434.    "         well as define screen, border, and text colors.",
  435.     &drw_txt1[11]},   
  436.    {1, 0, JAM1, 40, 200, &Font,
  437.    "Color Zones - zones currently defined by values stored in their",
  438.     &drw_txt1[12]},   
  439.    {1, 0, JAM1, 40, 210, &Font,   
  440.    "              respective gadgets are used to define escape sequences.",
  441.     &drw_txt1[13]},   
  442.    {1, 0, JAM1, 40, 230, &Font,
  443.    "Iterations - the iteration number with the checkmark in front of it",
  444.     &drw_txt1[14]},   
  445.    {1, 0, JAM1, 40, 240, &Font,   
  446.    "             will determine the number of iterations for this",
  447.     &drw_txt1[15]},  
  448.    {1, 0, JAM1, 40, 250, &Font,   
  449.    "             drawing.",
  450.     &drw_txt1[16]},
  451.    {1, 0, JAM1, 40, 270, &Font,
  452.    "Drawing Area - values currently defined by the Drawing Area",
  453.     &drw_txt1[17]},   
  454.    {1, 0, JAM1, 40, 280, &Font,   
  455.    "               Parameters requester will determine where the drawing",
  456.     &drw_txt1[18]},   
  457.    {1, 0, JAM1, 40, 290, &Font,   
  458.    "               will occur on the screen as well as its size.",
  459.     NULL}
  460.   };
  461.  
  462.  
  463. struct IntuiText drw_txt2[7] =
  464.   {   
  465.    {1, 0, JAM1, 40, 40, &Font,   
  466.    "Fractal Values - values currently assigned by the respective Fractal",
  467.     &drw_txt2[1]},   
  468.    {1, 0, JAM1, 40, 50, &Font,
  469.    "                 Values Parameter requester will be used in",
  470.     &drw_txt2[2]},   
  471.    {1, 0, JAM1, 40, 60, &Font,    
  472.    "                 determining which area of the set to generate.",
  473.     &drw_txt2[3]},   
  474.    {1, 0, JAM1, 40, 80, &Font,   
  475.    "For more specific information on any of the items above look in the",
  476.     &drw_txt2[4]},   
  477.    {1, 0, JAM1, 40, 90, &Font,   
  478.    "information menu.  Note: Information on colors can be found in the",
  479.     &drw_txt2[5]},   
  480.    {1, 0, JAM1, 40, 100, &Font,   
  481.    "Modify Colors section while the rest of the items each have their",
  482.     &drw_txt2[6]},
  483.    {1, 0, JAM1, 40, 110, &Font,
  484.    "own headings.",
  485.     NULL}
  486.   };   
  487.    
  488.  
  489. struct IntuiText mod_txt[24] =
  490.   {   
  491.    {1, 0, JAM1, 40, 40, &Font,   
  492.    "                            Modify Colors",
  493.     &mod_txt[1]},   
  494.    {1, 0, JAM1, 40, 60, &Font,
  495.    "This requester allows the changing of the 16 system colors.  You",
  496.     &mod_txt[2]},   
  497.    {1, 0, JAM1, 40, 70, &Font,   
  498.    "can blend each of the red, green, and blue amounts for all 16 colors",
  499.     &mod_txt[3]},   
  500.    {1, 0, JAM1, 40, 80, &Font,   
  501.    "(they are numbered 0 - 15) available.  However, changing the black",
  502.     &mod_txt[4]},   
  503.    {1, 0, JAM1, 40, 90, &Font,    
  504.    "and white colors is not recommended since the black color represents",
  505.     &mod_txt[5]},   
  506.    {1, 0, JAM1, 40, 100, &Font,   
  507.    "infinity on a fractal drawing and the white color is used for borders",
  508.     &mod_txt[6]},   
  509.    {1, 0, JAM1, 40, 110, &Font,   
  510.    "and other program functions.  Additionally, you may experience",
  511.     &mod_txt[7]},   
  512.    {1, 0, JAM1, 40, 120, &Font,   
  513.    "text recognition problems when mixing some colors.  All of the",
  514.     &mod_txt[8]},   
  515.    {1, 0, JAM1, 40, 130, &Font,    
  516.    "requesters utilizing text use blue backgrounds with white lettering",
  517.     &mod_txt[9]},   
  518.    {1, 0, JAM1, 40, 140, &Font,   
  519.    "for ease of reading, but when those colors are mixed the result can",
  520.     &mod_txt[10]},   
  521.    {1, 0, JAM1, 40, 150, &Font,   
  522.    "be hard to understand text.  You can reset the system colors to what",
  523.     &mod_txt[11]},   
  524.    {1, 0, JAM1, 40, 160, &Font,   
  525.    "they were originally by selecting the default gadget of this",
  526.     &mod_txt[12]},   
  527.    {1, 0, JAM1, 40, 170, &Font,   
  528.    "requester.  Think of these colors as your palette.  Since you are the",
  529.     &mod_txt[13]},   
  530.    {1, 0, JAM1, 40, 180, &Font,   
  531.    "artist who will do the painting, they should be colors that will",
  532.     &mod_txt[14]},   
  533.    {1, 0, JAM1, 40, 190, &Font,   
  534.    "produce the most aesthetically pleasing results to you!  Your color",
  535.     &mod_txt[15]},   
  536.    {1, 0, JAM1, 40, 200, &Font,   
  537.    "selections will be directly used by the program to color the zones to",
  538.     &mod_txt[16]},   
  539.    {1, 0, JAM1, 40, 210, &Font,   
  540.    "which they correspond.  Each color zone is assigned a number from 0 -",
  541.     &mod_txt[17]},   
  542.    {1, 0, JAM1, 40, 220, &Font,   
  543.    "15 (your color palette numbers), and the color that has been defined",
  544.     &mod_txt[18]},   
  545.    {1, 0, JAM1, 40, 230, &Font,   
  546.    "in your palette for that number will be the color the program will",
  547.     &mod_txt[19]},   
  548.    {1, 0, JAM1, 40, 240, &Font,   
  549.    "use to paint that zone.  This is how you can change the colors of",
  550.     &mod_txt[20]},   
  551.    {1, 0, JAM1, 40, 250, &Font,   
  552.    "your fractals.  This can even be done after the fractal has been",
  553.     &mod_txt[21]},   
  554.    {1, 0, JAM1, 40, 260, &Font,    
  555.    "drawn; that is, once the drawing is complete you can modify its",
  556.     &mod_txt[22]},   
  557.    {1, 0, JAM1, 40, 270, &Font,   
  558.    "colors (you will, of course, change every occurrence of that color).",
  559.     &mod_txt[23]},   
  560.    {1, 0, JAM1, 40, 280, &Font,   
  561.    "SEE Color Zones for more information pertaining to that subject.",
  562.     NULL}
  563.   };
  564.    
  565.  
  566. struct IntuiText fv_txt1[29] =
  567.   {   
  568.    {1, 0, JAM1, 40, 40, &Font,   
  569.    "                     Assigning Mandelbrot Values",
  570.     &fv_txt1[1]},    
  571.    {1, 0, JAM1, 40, 60, &Font,   
  572.    "This requester contains four important gadgets; Real Min., Real Max.,",
  573.     &fv_txt1[2]},   
  574.    {1, 0, JAM1, 40, 70, &Font,   
  575.    "Imag. Min., Imag. Max..  These gadgets are used to specify values,",
  576.     &fv_txt1[3]},   
  577.    {1, 0, JAM1, 40, 80, &Font,    
  578.    "from the Mandelbrot set, that you would like to use in generating",
  579.     &fv_txt1[4]},   
  580.    {1, 0, JAM1, 40, 90, &Font,   
  581.    "your fractal.  Notice that they are in pairs (i.e. Real Min. - Real",
  582.     &fv_txt1[5]},   
  583.    {1, 0, JAM1, 40, 100, &Font,   
  584.    "Max.).  Upon observing the Map provided by this program, you will see",
  585.     &fv_txt1[6]},   
  586.    {1, 0, JAM1, 40, 110, &Font,   
  587.    "real and imaginary number lines that form a two dimensional",
  588.     &fv_txt1[7]},   
  589.    {1, 0, JAM1, 40, 120, &Font,   
  590.    "coordinate plane.  The values you choose for these gadgets should be",
  591.     &fv_txt1[8]},   
  592.    {1, 0, JAM1, 40, 130, &Font,   
  593.    "within the range shown on the Map, and they are entered as to form a",
  594.     &fv_txt1[9]},   
  595.    {1, 0, JAM1, 40, 140, &Font,   
  596.    "subrange of values from the real and imaginary axes.  Be careful",
  597.     &fv_txt1[10]},   
  598.    {1, 0, JAM1, 40, 150, &Font,   
  599.    "where you pick these values because if you specify coordinates that",
  600.     &fv_txt1[11]},   
  601.    {1, 0, JAM1, 40, 160, &Font,   
  602.    "put you in the infinity realm, your fractal will just be a generation",
  603.     &fv_txt1[12]},   
  604.    {1, 0, JAM1, 40, 170, &Font,   
  605.    "of infinity (on the Map, infinity is the black lake-like zone in the",
  606.     &fv_txt1[13]},   
  607.    {1, 0, JAM1, 40, 180, &Font,   
  608.    "middle of the picture).  However, you shouldn't be too afraid to",
  609.     &fv_txt1[14]},   
  610.    {1, 0, JAM1, 40, 190, &Font,    
  611.    "experiment with values around the infinity lake since many beautiful",
  612.     &fv_txt1[15]},   
  613.    {1, 0, JAM1, 40, 200, &Font,   
  614.    "fractals are generated from its border.  You can use the Map to get a",
  615.     &fv_txt1[16]},   
  616.    {1, 0, JAM1, 40, 210, &Font,   
  617.    "general idea of where your values will come from.  You can think of",
  618.     &fv_txt1[17]},   
  619.    {1, 0, JAM1, 40, 220, &Font,   
  620.    "this process as a microscope where you designate the area you would",
  621.     &fv_txt1[18]},   
  622.    {1, 0, JAM1, 40, 230, &Font,   
  623.    "like to see; in fact, that is very analogous to what is going on.",
  624.     &fv_txt1[19]},   
  625.    {1, 0, JAM1, 40, 240, &Font,   
  626.    "You are magnifying the area specified by the range of values, and",
  627.     &fv_txt1[20]},   
  628.    {1, 0, JAM1, 40, 250, &Font,   
  629.    "the magnification factor depends upon the difference of the values.",
  630.     &fv_txt1[21]},   
  631.    {1, 0, JAM1, 40, 260, &Font,   
  632.    "For example, the smaller the distance between the minimum and",
  633.     &fv_txt1[22]},   
  634.    {1, 0, JAM1, 40, 270, &Font,    
  635.    "maximum values chosen, the higher the magnification factor.",
  636.     &fv_txt1[23]},   
  637.    {1, 0, JAM1, 40, 280, &Font,   
  638.    "     There is no defined methodology for picking these values.  My",
  639.     &fv_txt1[24]},   
  640.    {1, 0, JAM1, 40, 290, &Font,   
  641.    "advice would be to look at the Map and find someplace that might",
  642.     &fv_txt1[25]},   
  643.    {1, 0, JAM1, 40, 300, &Font,   
  644.    "look interesting when magnified.  Pick a minimum value for either",
  645.     &fv_txt1[26]},   
  646.    {1, 0, JAM1, 40, 310, &Font,   
  647.    "the real or imaginary axis (this will be where you want your",
  648.     &fv_txt1[27]},   
  649.    {1, 0, JAM1, 40, 320, &Font,   
  650.    "fractal to start) then pick a maximum value for either the real or",
  651.     &fv_txt1[28]},   
  652.    {1, 0, JAM1, 40, 330, &Font,   
  653.    "imaginary axis (this will be where you want your fractal to end),",
  654.     NULL}
  655.   };  
  656.    
  657.  
  658. struct IntuiText fv_txt2[28] =
  659.   {   
  660.    {1, 0, JAM1, 40, 40, &Font,   
  661.    "then repeat the process for the other axis.  Try to select values",
  662.     &fv_txt2[1]},   
  663.    {1, 0, JAM1, 40, 50, &Font,   
  664.    "from the Map that aren't in the ""lake of infinity"", and use a",
  665.     &fv_txt2[2]},   
  666.    {1, 0, JAM1, 40, 60, &Font,    
  667.    "smaller Draw Window for your initial generation.  By using a",
  668.     &fv_txt2[3]},   
  669.    {1, 0, JAM1, 40, 70, &Font,   
  670.    "smaller area to generate the fractal, you won't be wasting your",
  671.     &fv_txt2[4]},   
  672.    {1, 0, JAM1, 40, 80, &Font,   
  673.    "time if the area you've picked was not a good choice; if it was a",
  674.     &fv_txt2[5]},   
  675.    {1, 0, JAM1, 40, 90, &Font,   
  676.    "good choice, you can stop the current job, redefine your drawing",
  677.     &fv_txt2[6]},   
  678.    {1, 0, JAM1, 40, 100, &Font,   
  679.    "area, and start again.",
  680.     &fv_txt2[7]},   
  681.    {1, 0, JAM1, 40, 120, &Font,
  682.    "                       Assigning Julia Values",
  683.     &fv_txt2[8]},   
  684.    {1, 0, JAM1, 40, 140, &Font,   
  685.    "This requester contains the same four important gadgets that you",
  686.     &fv_txt2[9]},   
  687.    {1, 0, JAM1, 40, 150, &Font,   
  688.    "see in the Mandelbrot requester, and it has two additional",
  689.     &fv_txt2[10]},   
  690.    {1, 0, JAM1, 40, 160, &Font,   
  691.    "gadgets.  The previously defined gadgets can be thought of exactly",
  692.     &fv_txt2[11]},   
  693.    {1, 0, JAM1, 40, 170, &Font,   
  694.    "as I described them above, but the two new gadgets require some",
  695.     &fv_txt2[12]},   
  696.    {1, 0, JAM1, 40, 180, &Font,   
  697.    "explanation.  The Real Param and the Imag Param gadgets specify a",
  698.     &fv_txt2[13]},   
  699.    {1, 0, JAM1, 40, 190, &Font,   
  700.    "particular spot in the Mandelbrot set.  I'll try to explain this",
  701.     &fv_txt2[14]},   
  702.    {1, 0, JAM1, 40, 200, &Font,   
  703.    "the best that I can.  The Julia set is a pictorial description of",
  704.     &fv_txt2[15]},   
  705.    {1, 0, JAM1, 40, 210, &Font,   
  706.    "the ebbs or of the underlying forces in the Mandelbrot set.  It",
  707.     &fv_txt2[16]},  
  708.    {1, 0, JAM1, 40, 220, &Font,   
  709.    "contains areas called strange attractors which are a place where",
  710.     &fv_txt2[17]},   
  711.    {1, 0, JAM1, 40, 230, &Font,   
  712.    "these chaotic forces tend to come together.  Thus, when you",
  713.     &fv_txt2[18]},   
  714.    {1, 0, JAM1, 40, 240, &Font,   
  715.    "generate a Julia fractal you specify the area of the Mandelbrot",
  716.     &fv_txt2[19]},   
  717.    {1, 0, JAM1, 40, 250, &Font,   
  718.    "set as well as including an offset into the set.  The Real Param",
  719.     &fv_txt2[20]},   
  720.    {1, 0, JAM1, 40, 260, &Font,   
  721.    "and Imag Param gadgets will be your offset.  I can't tell you how",
  722.     &fv_txt2[21]},   
  723.    {1, 0, JAM1, 40, 270, &Font,   
  724.    "to select these values, but if you'd like to learn more about",
  725.     &fv_txt2[22]},   
  726.    {1, 0, JAM1, 40, 280, &Font,   
  727.    "them, there are several good books out as well as scientific",
  728.     &fv_txt2[23]},   
  729.    {1, 0, JAM1, 40, 290, &Font,   
  730.    "publications and journals where you could get more information on",
  731.     &fv_txt2[24]},   
  732.    {1, 0, JAM1, 40, 300, &Font,   
  733.    "the subject.  There are some very interesting looking Julias",
  734.     &fv_txt2[25]},   
  735.    {1, 0, JAM1, 40, 310, &Font,   
  736.    "around the set (in fact, the introductory screen you see when you",
  737.     &fv_txt2[26]},   
  738.    {1, 0, JAM1, 40, 320, &Font,   
  739.    "load the program came from a Julia), and I encourage you to",
  740.     &fv_txt2[27]},   
  741.    {1, 0, JAM1, 40, 330, &Font,   
  742.    "explore this type of fractal.  My advice for generating these",
  743.     NULL}
  744.   };  
  745.   
  746.    
  747. struct IntuiText fv_txt3[4] =
  748.   {   
  749.    {1, 0, JAM1, 40, 40, &Font,   
  750.    "fractals would be the same as I've already given you with one",
  751.     &fv_txt3[1]},   
  752.    {1, 0, JAM1, 40, 50, &Font,   
  753.    "exception, you don't have to stay away from the ""lake of",
  754.     &fv_txt3[2]},    
  755.    {1, 0, JAM1, 40, 60, &Font,   
  756.    "infinity"" anymore since the underlying forces can be found in",
  757.     &fv_txt3[3]},    
  758.    {1, 0, JAM1, 40, 70, &Font,   
  759.    "this area.",
  760.     NULL}
  761.    };
  762.  
  763.  
  764. struct IntuiText itr_txt1[22] =
  765.   {   
  766.    {1, 0, JAM1, 40, 40, &Font,   
  767.    "                             Iterations",
  768.     &itr_txt1[1]},    
  769.    {1, 0, JAM1, 40, 60, &Font,    
  770.    "This pull down menu item controls the number of iterations that will",
  771.     &itr_txt1[2]},   
  772.    {1, 0, JAM1, 40, 70, &Font,    
  773.    "be used in generating your fractal as well as the number of zones",
  774.     &itr_txt1[3]},   
  775.    {1, 0, JAM1, 40, 80, &Font,     
  776.    "that can be used.  The higher the iteration number you select,",
  777.     &itr_txt1[4]},   
  778.    {1, 0, JAM1, 40, 90, &Font,     
  779.    "the more precise your fractal will be; that is, with lower iteration",
  780.     &itr_txt1[5]},   
  781.    {1, 0, JAM1, 40, 100, &Font,    
  782.    "numbers there is a tendency to color some of the pixels incorrectly.",
  783.     &itr_txt1[6]},   
  784.    {1, 0, JAM1, 40, 110, &Font,    
  785.    "However, this is not a major concern unless your magnification factor",
  786.     &itr_txt1[7]},   
  787.    {1, 0, JAM1, 40, 120, &Font,    
  788.    "is very high.  You can generate a fairly accurate and alluring",
  789.     &itr_txt1[8]},   
  790.    {1, 0, JAM1, 40, 130, &Font,    
  791.    "fractal without the use of a high number of iterations.  Increasing",
  792.     &itr_txt1[9]},   
  793.    {1, 0, JAM1, 40, 140, &Font,    
  794.    "the iterations makes for a longer run-time for the fractal being",
  795.     &itr_txt1[10]},   
  796.    {1, 0, JAM1, 40, 150, &Font,    
  797.    "generated; thus, if you don't care about the initial looks of an",
  798.     &itr_txt1[11]},   
  799.    {1, 0, JAM1, 40, 160, &Font,     
  800.    "area (say you were just testing a spot out) a lower iteration number",
  801.     &itr_txt1[12]},   
  802.    {1, 0, JAM1, 40, 170, &Font,    
  803.    "would be appropriate.  The iterations is directly connected with",
  804.     &itr_txt1[13]},   
  805.    {1, 0, JAM1, 40, 180, &Font,    
  806.    "the number of zones that you will be able to use when coloring",
  807.     &itr_txt1[14]},   
  808.    {1, 0, JAM1, 40, 190, &Font,    
  809.    "your fractal, and the higher the iteration number, the more zones",
  810.     &itr_txt1[15]},   
  811.    {1, 0, JAM1, 40, 200, &Font,    
  812.    "you can use for coloring.  This is all more complicated then I am",
  813.     &itr_txt1[16]},   
  814.    {1, 0, JAM1, 40, 210, &Font,    
  815.    "making it seem, but for practicality we'll leave it at that.  One",
  816.     &itr_txt1[17]},   
  817.    {1, 0, JAM1, 40, 220, &Font,    
  818.    "note I'd like to make is that when you are generating a fractal that",
  819.     &itr_txt1[18]},   
  820.    {1, 0, JAM1, 40, 230, &Font,    
  821.    "has a high magnification factor you may have to use a higher number",
  822.     &itr_txt1[19]},   
  823.    {1, 0, JAM1, 40, 240, &Font,    
  824.    "of iterations to see anything at all.  So, if you want more accuracy",
  825.     &itr_txt1[20]},   
  826.    {1, 0, JAM1, 40, 250, &Font,    
  827.    "or you have chosen a high magnification factor, you should make an",
  828.     &itr_txt1[21]},   
  829.    {1, 0, JAM1, 40, 260, &Font,    
  830.    "adjustment in your iterations.  The iteration number controls the",
  831.     NULL}
  832.    };
  833.  
  834.  
  835. struct IntuiText itr_txt2[19] =
  836.   {   
  837.    {1, 0, JAM1, 40, 40, &Font,   
  838.    "zones in the following manner:",
  839.     &itr_txt2[1]},
  840.    {1, 0, JAM1, 40, 60, &Font,
  841.    "         Number of Iterations                Allowable Zones",
  842.     &itr_txt2[2]},   
  843.    {1, 0, JAM1, 40, 70, &Font,   
  844.    "        ----------------------              -----------------",
  845.     &itr_txt2[3]},   
  846.    {1, 0, JAM1, 40, 90, &Font,   
  847.    "                  25                              1 - 25",
  848.     &itr_txt2[4]},   
  849.    {1, 0, JAM1, 40, 100, &Font,   
  850.    "                  50                              1 - 38",
  851.     &itr_txt2[5]},   
  852.    {1, 0, JAM1, 40, 110, &Font,   
  853.    "                  75                              1 - 50",
  854.     &itr_txt2[6]},   
  855.    {1, 0, JAM1, 40, 120, &Font,   
  856.    "                  100                             1 - 63",
  857.     &itr_txt2[7]},   
  858.    {1, 0, JAM1, 40, 130, &Font,   
  859.    "                  125                             1 - 75",
  860.     &itr_txt2[8]},   
  861.    {1, 0, JAM1, 40, 140, &Font,   
  862.    "                  175                             1 - 100",
  863.     &itr_txt2[9]},   
  864.    {1, 0, JAM1, 40, 150, &Font,   
  865.    "                  225                             1 - 125",
  866.     &itr_txt2[10]},   
  867.    {1, 0, JAM1, 40, 160, &Font,   
  868.    "                  275                             1 - 150",
  869.     &itr_txt2[11]},   
  870.    {1, 0, JAM1, 40, 170, &Font,   
  871.    "                  325                             1 - 175",
  872.     &itr_txt2[12]},   
  873.    {1, 0, JAM1, 40, 180, &Font,   
  874.    "                  375                             1 - 200",
  875.     &itr_txt2[13]},   
  876.    {1, 0, JAM1, 40, 200, &Font,
  877.    "Keep in mind that whatever number you select for the iterations,",
  878.     &itr_txt2[14]},   
  879.    {1, 0, JAM1, 40, 210, &Font,   
  880.    "the program will use all of the allowable number of zones for that",
  881.     &itr_txt2[15]},   
  882.    {1, 0, JAM1, 40, 220, &Font,   
  883.    "choice.  So if you have color numbers in the zones that you don't",
  884.     &itr_txt2[16]},   
  885.    {1, 0, JAM1, 40, 230, &Font,   
  886.    "like or are unaware of, you should reset them to what you want.",
  887.     &itr_txt2[17]},   
  888.    {1, 0, JAM1, 40, 240, &Font,   
  889.    "SEE Color Zones for more information on its requesters and ",
  890.     &itr_txt2[18]},   
  891.    {1, 0, JAM1, 40, 250, &Font,   
  892.    "interaction with iterations.",
  893.     NULL}
  894.    };
  895.    
  896.    
  897. struct IntuiText cz_txt1[29] =
  898.   {   
  899.    {1, 0, JAM1, 40, 40, &Font,    
  900.    "                             Color Zones",
  901.     &cz_txt1[1]},    
  902.    {1, 0, JAM1, 40, 60, &Font,   
  903.    "This menu item has two different choices: Zones 1 - 100, and Zones",
  904.     &cz_txt1[2]},   
  905.    {1, 0, JAM1, 40, 70, &Font,   
  906.    "101 - 200.  Each of these requesters is used in defining the color",
  907.     &cz_txt1[3]},   
  908.    {1, 0, JAM1, 40, 80, &Font,   
  909.    "that will be used by the program to color your fractal.  You should",
  910.     &cz_txt1[4]},   
  911.    {1, 0, JAM1, 40, 90, &Font,   
  912.    "enter a number between 0 and 15 into the zone gadgets that are",
  913.     &cz_txt1[5]},   
  914.    {1, 0, JAM1, 40, 100, &Font,   
  915.    "useable (i.e. the allowable number of zones).  If there is currently",
  916.     &cz_txt1[6]},   
  917.    {1, 0, JAM1, 40, 110, &Font,   
  918.    "a number there and you don't want to change it, that's o.k. just",
  919.     &cz_txt1[7]},   
  920.    {1, 0, JAM1, 40, 120, &Font,   
  921.    "leave it that way.  But, something MUST be in each allowable gadget",
  922.     &cz_txt1[8]},   
  923.    {1, 0, JAM1, 40, 130, &Font,   
  924.    "or you will experience problems.  Additionally, if you try to enter",
  925.     &cz_txt1[9]},   
  926.    {1, 0, JAM1, 40, 140, &Font,   
  927.    "a number outside of the legal range, you will see a screen flash and",
  928.     &cz_txt1[10]},  
  929.    {1, 0, JAM1, 40, 150, &Font,   
  930.    "the number will not be allowed.  In any case, you should ALWAYS click",
  931.     &cz_txt1[11]},   
  932.    {1, 0, JAM1, 40, 160, &Font,   
  933.    "the o.k. gadget regardless of what you do so that the program can",
  934.     &cz_txt1[12]},   
  935.    {1, 0, JAM1, 40, 170, &Font,   
  936.    "accept the values from the gadgets.  If you are experiencing a black",
  937.     &cz_txt1[13]},   
  938.    {1, 0, JAM1, 40, 180, &Font,   
  939.    "picture every time you are generating a fractal, the problem could be",
  940.     &cz_txt1[14]},   
  941.    {1, 0, JAM1, 40, 190, &Font,   
  942.    "that you have not given the program permission to use any colors to",
  943.     &cz_txt1[15]},   
  944.    {1, 0, JAM1, 40, 200, &Font,   
  945.    "color your fractal!",
  946.     &cz_txt1[16]},   
  947.    {1, 0, JAM1, 40, 210, &Font,   
  948.    "     The iteration number controls how many zones you will be allowed",
  949.     &cz_txt1[17]},   
  950.    {1, 0, JAM1, 40, 220, &Font,   
  951.    "to use for defining the coloring of your fractal.  There is a",
  952.     &cz_txt1[18]},   
  953.    {1, 0, JAM1, 40, 230, &Font,    
  954.    "complete breakdown of how this is done in the Iterations information.",
  955.     &cz_txt1[19]},   
  956.    {1, 0, JAM1, 40, 240, &Font,   
  957.    "     Explaining the process that is going on here will not be an easy",
  958.     &cz_txt1[20]},   
  959.    {1, 0, JAM1, 40, 250, &Font,   
  960.    "task, but I will try to keep it simple.  One day while developing this",
  961.     &cz_txt1[21]},   
  962.    {1, 0, JAM1, 40, 260, &Font,   
  963.    "program, I noticed that a binary fractal (meaning a fractal consisting",
  964.     &cz_txt1[22]},   
  965.    {1, 0, JAM1, 40, 270, &Font,   
  966.    "of only two colors - namely black and white) had very distinct zones.",
  967.     &cz_txt1[23]},   
  968.    {1, 0, JAM1, 40, 280, &Font,   
  969.    "I tried to count the zones to see how many there was, but as the",
  970.     &cz_txt1[24]},   
  971.    {1, 0, JAM1, 40, 290, &Font,   
  972.    "number of zones increased it became increasingly difficult to see",
  973.     &cz_txt1[25]},   
  974.    {1, 0, JAM1, 40, 300, &Font,   
  975.    "where one stopped and the next one started.  Approximately 25 zones",
  976.     &cz_txt1[26]},   
  977.    {1, 0, JAM1, 40, 310, &Font,   
  978.    "could be seen clearly on the Mandelbrot set that I had generated so",
  979.     &cz_txt1[27]},   
  980.    {1, 0, JAM1, 40, 320, &Font,   
  981.    "the lowest number of allowable zones is 25; which corresponds to an",
  982.     &cz_txt1[28]},   
  983.    {1, 0, JAM1, 40, 330, &Font,   
  984.    "iteration number of 25.  The Map is an exemplary generation of the",
  985.     NULL}
  986.    };
  987.    
  988. struct IntuiText cz_txt2[30] =
  989.   {   
  990.    {1, 0, JAM1, 40, 40, &Font,    
  991.    "Mandelbrot set, and the very first color on the Map (in either the",
  992.     &cz_txt2[1]},   
  993.    {1, 0, JAM1, 40, 50, &Font,   
  994.    "upper or lower left hand corner) corresponds to Zone #1.  You could",
  995.     &cz_txt2[2]},   
  996.    {1, 0, JAM1, 40, 60, &Font,   
  997.    "begin counting from there to determine how many zones you can",
  998.     &cz_txt2[3]},   
  999.    {1, 0, JAM1, 40, 70, &Font,   
  1000.    "identify, but unfortunately this number is not uniform for all",
  1001.     &cz_txt2[4]},   
  1002.    {1, 0, JAM1, 40, 80, &Font,    
  1003.    "fractals; that is, a different fractal (esp. one where the iteration",
  1004.     &cz_txt2[5]},   
  1005.    {1, 0, JAM1, 40, 90, &Font,   
  1006.    "number is increased or the magnification factor is higher) will have",
  1007.     &cz_txt2[6]},   
  1008.    {1, 0, JAM1, 40, 100, &Font,   
  1009.    "different zones.  Even if the allowable number is at its maximum, some",
  1010.     &cz_txt2[7]},   
  1011.    {1, 0, JAM1, 40, 110, &Font,   
  1012.    "of the lower color zones may never be used (they still have to be",
  1013.     &cz_txt2[8]},   
  1014.    {1, 0, JAM1, 40, 120, &Font,   
  1015.    "specified though since their individual usage is about as chaotic",
  1016.     &cz_txt2[9]},   
  1017.    {1, 0, JAM1, 40, 130, &Font,   
  1018.    "as the fractal itself, and I don't know of anyway to predict which",
  1019.     &cz_txt2[10]},   
  1020.    {1, 0, JAM1, 40, 140, &Font,   
  1021.    "zones will be used).  These zones directly define the escape",
  1022.     &cz_txt2[11]},   
  1023.    {1, 0, JAM1, 40, 150, &Font,   
  1024.    "sequences of the fractal; that is, they make up the shape that you",
  1025.     &cz_txt2[12]},   
  1026.    {1, 0, JAM1, 40, 160, &Font,   
  1027.    "see once it has been generated.  If you only wanted to use two",
  1028.     &cz_txt2[13]},   
  1029.    {1, 0, JAM1, 40, 170, &Font,
  1030.    "colors, then you would include only those two colors in each",
  1031.     &cz_txt2[14]},   
  1032.    {1, 0, JAM1, 40, 180, &Font,   
  1033.    "allowable color zone and alternate them back and forth.  Since you",
  1034.     &cz_txt2[15]},   
  1035.    {1, 0, JAM1, 40, 190, &Font,   
  1036.    "only have a maximum of 16 colors, the planning of this part of the",
  1037.     &cz_txt2[16]},   
  1038.    {1, 0, JAM1, 40, 200, &Font,   
  1039.    "program is critical.  If you use all 16 colors and you spread them",
  1040.     &cz_txt2[17]},   
  1041.    {1, 0, JAM1, 40, 210, &Font,   
  1042.    "around wildly throughout the allowable zones, your end result may",
  1043.     &cz_txt2[18]},   
  1044.    {1, 0, JAM1, 40, 220, &Font,   
  1045.    "look too ""busy""; by that, I mean the colors won't have a good",
  1046.     &cz_txt2[19]},   
  1047.    {1, 0, JAM1, 40, 230, &Font,   
  1048.    "definition to them and it will be difficult to see the seperation",
  1049.     &cz_txt2[20]},   
  1050.    {1, 0, JAM1, 40, 240, &Font,   
  1051.    "of the zones.  You can remedy that problem by selecting one color",
  1052.     &cz_txt2[21]},   
  1053.    {1, 0, JAM1, 40, 250, &Font,   
  1054.    "for several consecutive zones; thereby making a wider zone of color",
  1055.     &cz_txt2[22]},   
  1056.    {1, 0, JAM1, 40, 260, &Font,   
  1057.    "and adding more distinction between zones.  Perhaps now you realize",
  1058.     &cz_txt2[23]},   
  1059.    {1, 0, JAM1, 40, 270, &Font,   
  1060.    "how a different looking fractal can be generated from the same area",
  1061.     &cz_txt2[24]},   
  1062.    {1, 0, JAM1, 40, 280, &Font,   
  1063.    "using the same colors; all you have to do is change how the zones",
  1064.     &cz_txt2[25]},   
  1065.    {1, 0, JAM1, 40, 290, &Font,    
  1066.    "are defined.",
  1067.     &cz_txt2[26]},   
  1068.    {1, 0, JAM1, 40, 300, &Font,   
  1069.    "    This is, by far, the hardest part of the program to understand",
  1070.     &cz_txt2[27]},   
  1071.    {1, 0, JAM1, 40, 310, &Font,   
  1072.    "and to visualize, and it is also the most important part of",
  1073.     &cz_txt2[28]},   
  1074.    {1, 0, JAM1, 40, 320, &Font,    
  1075.    "generating a good fractal.  It takes time and practice to know how",
  1076.     &cz_txt2[29]},   
  1077.    {1, 0, JAM1, 40, 330, &Font,   
  1078.    "you should define your zones, but you can learn how to do this",
  1079.     NULL}
  1080.    };
  1081.    
  1082.  
  1083. struct IntuiText cz_txt3[9] =
  1084.   {   
  1085.    {1, 0, JAM1, 40, 40, &Font,    
  1086.    "effectively.  I suggest that you start with a smaller drawing area",
  1087.     &cz_txt3[1]},   
  1088.    {1, 0, JAM1, 40, 50, &Font,   
  1089.    "as well as a lower number of iterations (if that is possible,",
  1090.     &cz_txt3[2]},    
  1091.    {1, 0, JAM1, 40, 60, &Font,   
  1092.    "remember if your magnification factor is high you'll need more",
  1093.     &cz_txt3[3]},   
  1094.    {1, 0, JAM1, 40, 70, &Font,   
  1095.    "iterations and more color zones).  Try your color zone definition",
  1096.     &cz_txt3[4]},   
  1097.    {1, 0, JAM1, 40, 80, &Font,   
  1098.    "out and see what you think.  If you don't like it, go in and make",
  1099.     &cz_txt3[5]},   
  1100.    {1, 0, JAM1, 40, 90, &Font,   
  1101.    "some changes to your definitions paying close attention to how they",
  1102.     &cz_txt3[6]},   
  1103.    {1, 0, JAM1, 40, 100, &Font,   
  1104.    "affect the next generation of the fractal.  Before long you will",
  1105.     &cz_txt3[7]},    
  1106.    {1, 0, JAM1, 40, 110, &Font,   
  1107.    "begin to see how you can manipulate the color zones and you'll be",
  1108.     &cz_txt3[8]},
  1109.    {1, 0, JAM1, 40, 120, &Font,    
  1110.    "on your way to generating beautiful fractals.",
  1111.     NULL}
  1112.    };
  1113.  
  1114.  
  1115. struct IntuiText dc_txt[7] =
  1116.   {   
  1117.    {1, 0, JAM1, 40, 40, &Font,
  1118.    "                           Default Colors",
  1119.     &dc_txt[1]},   
  1120.    {1, 0, JAM1, 40, 60, &Font,   
  1121.    "This small requester serves only one purpose; to show you what the",
  1122.     &dc_txt[2]},   
  1123.    {1, 0, JAM1, 40, 70, &Font,   
  1124.    "default system colors are while naming them.  If you are using the",
  1125.     &dc_txt[3]},   
  1126.    {1, 0, JAM1, 40, 80, &Font,   
  1127.    "Modify Colors requester you will see a gadget that is named default.",
  1128.     &dc_txt[4]},   
  1129.    {1, 0, JAM1, 40, 90, &Font,   
  1130.    "Clicking this gadget will reset the system colors back to the way",
  1131.     &dc_txt[5]},   
  1132.    {1, 0, JAM1, 40, 100, &Font,   
  1133.    "they were originally defined.  You cannot reset the colors by using",
  1134.     &dc_txt[6]},   
  1135.    {1, 0, JAM1, 40, 110, &Font,   
  1136.    "this requester.",
  1137.     NULL}
  1138.    };
  1139.  
  1140.  
  1141. struct IntuiText abt_txt[12] =
  1142.   {   
  1143.    {1, 0, JAM1, 40, 40, &Font,
  1144.    "                                About",
  1145.     &abt_txt[1]},   
  1146.    {1, 0, JAM1, 40, 60, &Font,   
  1147.    "My name is Steven Dillon, and I am currently a Senior at Grand",
  1148.     &abt_txt[2]},   
  1149.    {1, 0, JAM1, 40, 70, &Font,   
  1150.    "Valley State University where I am majoring in Computer Science.  I",
  1151.     &abt_txt[3]},   
  1152.    {1, 0, JAM1, 40, 80, &Font,   
  1153.    "am concurrently getting a minor in math.  If you have any questions",
  1154.     &abt_txt[4]},   
  1155.    {1, 0, JAM1, 40, 90, &Font,   
  1156.    "or comments about this program or the source code that is included,",
  1157.     &abt_txt[5]},   
  1158.    {1, 0, JAM1, 40, 100, &Font,   
  1159.    "feel free to contact me at the following address:",
  1160.     &abt_txt[6]},   
  1161.    {1, 0, JAM1, 40, 120, &Font,   
  1162.    "6157 - 5 Woodfield Place S.E.",
  1163.     &abt_txt[7]},   
  1164.    {1, 0, JAM1, 40, 130, &Font,   
  1165.    "Grand Rapids, MI 49548",
  1166.     &abt_txt[8]},   
  1167.    {1, 0, JAM1, 40, 150, &Font,   
  1168.    "This program and its contents are being donated to the public domain",
  1169.     &abt_txt[9]},   
  1170.    {1, 0, JAM1, 40, 160, &Font,   
  1171.    "with one request: If you use any of the source code or modify it",
  1172.     &abt_txt[10]},   
  1173.    {1, 0, JAM1, 40, 170, &Font,   
  1174.    "for your own usage, please include the fact that you borrowed it from",
  1175.     &abt_txt[11]},   
  1176.    {1, 0, JAM1, 40, 180, &Font,   
  1177.    "this program.",
  1178.     NULL}
  1179.    };
  1180.  
  1181.  
  1182. struct IntuiText las_txt1[29] =
  1183.   {   
  1184.    {1, 0, JAM1, 40, 40, &Font,
  1185.    "                             Load & Save",
  1186.     &las_txt1[1]},   
  1187.    {1, 0, JAM1, 40, 60, &Font,   
  1188.    "Load and Save both have two important choices to consider: ILBM, and",
  1189.     &las_txt1[2]},   
  1190.    {1, 0, JAM1, 40, 70, &Font,   
  1191.    "Parameters.  If you choose the ILBM option, then the program expects",
  1192.     &las_txt1[3]},   
  1193.    {1, 0, JAM1, 40, 80, &Font,   
  1194.    "you to either load or save an ILBM file, and if you choose the",
  1195.     &las_txt1[4]},   
  1196.    {1, 0, JAM1, 40, 90, &Font,   
  1197.    "parameters option, the program expects you to either load or save a",
  1198.     &las_txt1[5]},   
  1199.    {1, 0, JAM1, 40, 100, &Font,   
  1200.    "parameters file.  These will be explained in further detail later.",
  1201.     &las_txt1[6]},   
  1202.    {1, 0, JAM1, 40, 110, &Font,     
  1203.    "After selecting the ILBM or Parameters choice you will see the File",
  1204.     &las_txt1[7]},   
  1205.    {1, 0, JAM1, 40, 120, &Font,   
  1206.    "Manager window/requester.  The File Manager's default drawer is df1:",
  1207.     &las_txt1[8]},   
  1208.    {1, 0, JAM1, 40, 130, &Font,   
  1209.    "so it will be looking there initially.  You can change the drawer to",
  1210.     &las_txt1[9]},   
  1211.    {1, 0, JAM1, 40, 140, &Font,   
  1212.    "look at df0:, but I'm not sure if this will work with a hard drive as",
  1213.     &las_txt1[10]},   
  1214.    {1, 0, JAM1, 40, 150, &Font,   
  1215.    "I haven't been able to afford one yet!  You can then click on the",
  1216.     &las_txt1[11]},   
  1217.    {1, 0, JAM1, 40, 160, &Font,   
  1218.    "file name (if you are loading a file) or type something in the file",
  1219.     &las_txt1[12]},   
  1220.    {1, 0, JAM1, 40, 170, &Font,   
  1221.    "name gadget after you click in it.  This is not a difficult requester",
  1222.     &las_txt1[13]},   
  1223.    {1, 0, JAM1, 40, 180, &Font,   
  1224.    "to get the hang of, and with very little usage you'll be able to do",
  1225.     &las_txt1[14]},   
  1226.    {1, 0, JAM1, 40, 190, &Font,   
  1227.    "what you want with it easily.",
  1228.     &las_txt1[15]},   
  1229.     {1, 0, JAM1, 40, 200, &Font,  
  1230.     "     The ILBM option either saves or loads an ILBM file.  Once saved",
  1231.     &las_txt1[16]},    
  1232.    {1, 0, JAM1, 40, 210, &Font,    
  1233.    "you can use the file in any program that accepts the standard format",
  1234.     &las_txt1[17]},   
  1235.    {1, 0, JAM1, 40, 220, &Font,   
  1236.    "for an ILBM file (as far as I know).  I can say that I haven't had",
  1237.     &las_txt1[18]},   
  1238.    {1, 0, JAM1, 40, 230, &Font,   
  1239.    "any problems with loading my saved ILBM's into the Deluxe Paint",
  1240.     &las_txt1[19]},   
  1241.    {1, 0, JAM1, 40, 240, &Font,   
  1242.    "environment.  You can view a saved ILBM by using the Load - ILBM",
  1243.     &las_txt1[20]},   
  1244.    {1, 0, JAM1, 40, 250, &Font,   
  1245.    "option.  Once there, you will receive instructions from the program,",
  1246.     &las_txt1[21]},   
  1247.    {1, 0, JAM1, 40, 260, &Font,   
  1248.    "at the top of the screen, on how to exit from this option.",
  1249.     &las_txt1[22]},   
  1250.    {1, 0, JAM1, 40, 270, &Font,   
  1251.    "     The Parameters option saves or loads a parameters file.",
  1252.     &las_txt1[23]},   
  1253.    {1, 0, JAM1, 40, 280, &Font,   
  1254.    "Several parameters are saved or loaded during this operation.  The",
  1255.     &las_txt1[24]},   
  1256.    {1, 0, JAM1, 40, 290, &Font,   
  1257.    "list of items saved or loaded is as follows: the drawing area",
  1258.     &las_txt1[25]},   
  1259.    {1, 0, JAM1, 40, 300, &Font,    
  1260.    "parameters which includes the drawing area and its location; the",
  1261.     &las_txt1[26]},   
  1262.    {1, 0, JAM1, 40, 310, &Font,   
  1263.    "currently defined fractal values; the iterations number; the",
  1264.     &las_txt1[27]},   
  1265.    {1, 0, JAM1, 40, 320, &Font,    
  1266.    "currently defined system colors; and the numbers currently defined",
  1267.     &las_txt1[28]},   
  1268.    {1, 0, JAM1, 40, 330, &Font,   
  1269.    "in the allowable zones.  The program knows which respective values",
  1270.     NULL}
  1271.    };
  1272.    
  1273.    
  1274. struct IntuiText las_txt2[25] =
  1275.   {   
  1276.    {1, 0, JAM1, 40, 40, &Font,
  1277.    "to save and/or load so you don't have to worry about saving or",
  1278.     &las_txt2[1]},   
  1279.    {1, 0, JAM1, 40, 50, &Font,    
  1280.    "loading unnecessary or unwanted information during this process.",
  1281.     &las_txt2[2]},   
  1282.    {1, 0, JAM1, 40, 60, &Font,   
  1283.    "You won't be able to use this option to load any other type of",
  1284.     &las_txt2[3]},   
  1285.    {1, 0, JAM1, 40, 70, &Font,   
  1286.    "files though because when the Parameters file is saved it has a",
  1287.     &las_txt2[4]},   
  1288.    {1, 0, JAM1, 40, 80, &Font,    
  1289.    "special header on it that tells the program it's o.k. to load it",
  1290.     &las_txt2[5]},   
  1291.    {1, 0, JAM1, 40, 90, &Font,   
  1292.    "back in, and the program will insist that the header is present or",
  1293.     &las_txt2[6]},   
  1294.    {1, 0, JAM1, 40, 100, &Font,   
  1295.    "it won't allow the loading of the file to take place.  The",
  1296.     &las_txt2[7]},   
  1297.    {1, 0, JAM1, 40, 110, &Font,    
  1298.    "Parameters file can be useful if you like the fractal you've",
  1299.     &las_txt2[8]},   
  1300.    {1, 0, JAM1, 40, 120, &Font,   
  1301.    "generated and you want to save the program definitions.  You could",
  1302.     &las_txt2[9]},   
  1303.    {1, 0, JAM1, 40, 130, &Font,   
  1304.    "then use these definitions to generate a similar fractal, to use",
  1305.     &las_txt2[10]},   
  1306.    {1, 0, JAM1, 40, 140, &Font,   
  1307.    "the color zones you saved in a different area, or to just use the",
  1308.     &las_txt2[11]},   
  1309.    {1, 0, JAM1, 40, 150, &Font,   
  1310.    "particular blend of colors you have in your palette for a new",
  1311.     &las_txt2[12]},   
  1312.    {1, 0, JAM1, 40, 160, &Font,   
  1313.    "fractal.",
  1314.     &las_txt2[13]},   
  1315.    {1, 0, JAM1, 40, 170, &Font,    
  1316.    "     You will find examples of both ILBM files and Parameters files",
  1317.     &las_txt2[14]},   
  1318.    {1, 0, JAM1, 40, 180, &Font,   
  1319.    "included on this disk.  The ILBM files will be in the Drawings",
  1320.     &las_txt2[15]},   
  1321.    {1, 0, JAM1, 40, 190, &Font,    
  1322.    "directory, and the Parameters files will be in the Parameters",
  1323.     &las_txt2[16]},   
  1324.    {1, 0, JAM1, 40, 200, &Font,   
  1325.    "directory.  The ILBM files have an extension that immediately",
  1326.     &las_txt2[17]},   
  1327.    {1, 0, JAM1, 40, 210, &Font,   
  1328.    "identifies them (.ILBM), and I have adopted a similar convention",
  1329.     &las_txt2[18]},   
  1330.    {1, 0, JAM1, 40, 220, &Font,   
  1331.    "for the Parameters files (.prms) - NOTE - this is not",
  1332.     &las_txt2[19]},   
  1333.    {1, 0, JAM1, 40, 230, &Font,    
  1334.    "automatically done by the program during a save; it is a method",
  1335.     &las_txt2[20]},   
  1336.    {1, 0, JAM1, 40, 240, &Font,    
  1337.    "that I have been using, and you need not follow it if you don't",
  1338.     &las_txt2[21]},   
  1339.    {1, 0, JAM1, 40, 250, &Font,   
  1340.    "want to.  I suggest that if you stick with this practice, you",
  1341.     &las_txt2[22]},   
  1342.    {1, 0, JAM1, 40, 260, &Font,    
  1343.    "should name both files the same name and then just change the",
  1344.     &las_txt2[23]},   
  1345.    {1, 0, JAM1, 40, 270, &Font,   
  1346.    "extension; that way you have a picture of what you've saved to",
  1347.     &las_txt2[24]},   
  1348.    {1, 0, JAM1, 40, 280, &Font,   
  1349.    "help you remember what was generated using those definitions.",
  1350.     NULL}
  1351.   };
  1352.   
  1353. struct IntuiText *TextArray[] = 
  1354.    { &prg_txt1[0], &prg_txt2[0], &fv_txt1[0], &fv_txt2[0], &fv_txt3[0],
  1355.      &map_txt[0], &itr_txt1[0], &itr_txt2[0], &drwa_txt[0], &drw_txt1[0], 
  1356.      &drw_txt2[0], &cz_txt1[0], &cz_txt2[0], &cz_txt3[0], &mod_txt[0], 
  1357.      &dc_txt[0], &las_txt1[0], &las_txt2[0], &abt_txt[0] };
  1358.  
  1359. struct Requester in_requester;
  1360.  
  1361. SHORT sub_num, min_txt, max_txt;
  1362.  
  1363. BOOL go, next_gadg, prev_gadg, next_set, prev_set;
  1364.  
  1365. ULONG class;
  1366.  
  1367. int item;
  1368.  
  1369. /**************************************************************************
  1370.  
  1371.                 I N F O R M A T I O N   R E Q U E S T E R
  1372.  
  1373. **************************************************************************/
  1374.  
  1375.  
  1376. Info_requester(FirstWindow,op_code)
  1377. struct Window *FirstWindow;
  1378. SHORT op_code;
  1379.   {
  1380.    void processMessages();
  1381.    
  1382.    switch(op_code)
  1383.      {
  1384.        case 0: sub_num = 0;
  1385.                min_txt = 0;
  1386.                max_txt = 1;
  1387.                next_gadg = TRUE;
  1388.                prev_gadg = FALSE;
  1389.                break;
  1390.                
  1391.        case 1: sub_num = 2;
  1392.                min_txt = 2; 
  1393.                max_txt = 4;
  1394.                next_gadg = TRUE;
  1395.                prev_gadg = FALSE;
  1396.                break;
  1397.                
  1398.        case 2: sub_num = 5;
  1399.                min_txt = 5;
  1400.                max_txt = 5;
  1401.                next_gadg = FALSE;
  1402.                prev_gadg = FALSE;
  1403.                break;
  1404.                
  1405.        case 3: sub_num = 6;
  1406.                min_txt = 6;
  1407.                max_txt = 7;
  1408.                next_gadg = TRUE;
  1409.                prev_gadg = FALSE;
  1410.                break;
  1411.  
  1412.        case 4: sub_num = 8;
  1413.                min_txt = 8;
  1414.                max_txt = 8;
  1415.                next_gadg = FALSE;
  1416.                prev_gadg = FALSE;
  1417.                break;
  1418.                
  1419.        case 5: sub_num = 9;
  1420.                min_txt = 9;
  1421.                max_txt = 10;
  1422.                next_gadg = TRUE;
  1423.                prev_gadg = FALSE;
  1424.                break;       
  1425.              
  1426.        case 6: sub_num = 11;
  1427.                min_txt = 11;
  1428.                max_txt = 13;
  1429.                next_gadg = TRUE;
  1430.                prev_gadg = FALSE;
  1431.                break;
  1432.                
  1433.        case 7: sub_num = 14;
  1434.                min_txt = 14;
  1435.                max_txt = 14;
  1436.                next_gadg = FALSE;
  1437.                prev_gadg = FALSE;
  1438.                break;             
  1439.  
  1440.        case 8: sub_num = 15;
  1441.                min_txt = 15;
  1442.                max_txt = 15;
  1443.                next_gadg = FALSE;
  1444.                prev_gadg = FALSE;
  1445.                break;
  1446.                
  1447.        case 9: sub_num = 16;
  1448.                min_txt = 16;
  1449.                max_txt = 17;
  1450.                next_gadg = TRUE;
  1451.                prev_gadg = FALSE;
  1452.                break;
  1453.  
  1454.        case 10: sub_num = 18;
  1455.                 min_txt = 18;
  1456.                 max_txt = 18;
  1457.                 next_gadg = FALSE;
  1458.                 prev_gadg = FALSE;
  1459.                 break;
  1460.                 
  1461.      } /*  Close off op_code switch  */    
  1462.           
  1463.    go = TRUE;
  1464.  
  1465.    if(DrawWindow == TRUE)
  1466.      {
  1467.       WindowToBack(NoBorder);
  1468.      }
  1469.         
  1470.    ModifyIDCMP(FirstWindow, NULL);   
  1471.    ModifyIDCMP(FirstWindow, GADGETUP | REQCLEAR); 
  1472.    make_request(FirstWindow);
  1473.    if(next_gadg)
  1474.      {
  1475.       OnGadget(&in_Next_gadg, FirstWindow, &in_requester);
  1476.      }
  1477.    else
  1478.       OffGadget(&in_Next_gadg, FirstWindow, &in_requester);
  1479.      
  1480.    OffGadget(&in_Prev_gadg, FirstWindow, &in_requester);
  1481.      
  1482.    while(go)
  1483.     {
  1484.      Wait(1 << FirstWindow->UserPort->mp_SigBit); 
  1485.      while(message = (struct IntuiMessage *)
  1486.         GetMsg(FirstWindow->UserPort))
  1487.        {
  1488.         class = message->Class;
  1489.         item = ((struct Gadget *) message->IAddress)->GadgetID;        
  1490.         ReplyMsg(message);
  1491.  
  1492.        } /* while message */
  1493.  
  1494.      processMessages(class, item);
  1495.  
  1496.      if(go)
  1497.        { 
  1498.          make_request(FirstWindow);
  1499.  
  1500.          if(!(next_gadg) && next_set)
  1501.            {
  1502.             OnGadget(&in_Next_gadg, FirstWindow, &in_requester);
  1503.             next_gadg = TRUE;
  1504.            }
  1505.          else if(next_gadg && !(next_set))
  1506.            {
  1507.             OffGadget(&in_Next_gadg, FirstWindow, &in_requester);
  1508.             next_gadg = FALSE;
  1509.            }
  1510.              
  1511.          if(!(prev_gadg) && prev_set)
  1512.            {
  1513.             OnGadget(&in_Prev_gadg, FirstWindow, &in_requester);
  1514.             prev_gadg = TRUE;
  1515.            }
  1516.          else if(prev_gadg && !(prev_set))
  1517.            {
  1518.             OffGadget(&in_Prev_gadg, FirstWindow, &in_requester);
  1519.             prev_gadg = FALSE;
  1520.            }
  1521.            
  1522.          ModifyIDCMP(FirstWindow, NULL);   
  1523.          ModifyIDCMP(FirstWindow, GADGETUP | REQCLEAR);            
  1524.            
  1525.        } /* if go */         
  1526.        
  1527.     } /**** While go ****/
  1528.  
  1529.    if(DrawWindow == TRUE)
  1530.      {
  1531.       WindowToFront(NoBorder);
  1532.      }    
  1533.     
  1534.    return(TRUE);
  1535.  
  1536.   } /**** Close Off Information ****/
  1537.  
  1538.  
  1539. make_request(FirstWindow)
  1540. struct Window *FirstWindow;
  1541.   {
  1542.    InitRequester(&in_requester);
  1543.  
  1544.    in_requester.LeftEdge = 0;
  1545.    in_requester.TopEdge = 10;
  1546.    in_requester.Width = 640;
  1547.    in_requester.Height = 390;
  1548.    in_requester.ReqGadget = &in_Quit_gadg;
  1549.    in_requester.ReqText = TextArray[sub_num];
  1550.    in_requester.BackFill = 2;
  1551.    in_requester.Flags = NULL;
  1552.    in_requester.ReqBorder = &in_border1;
  1553.  
  1554.    Request(&in_requester,FirstWindow);
  1555.    return(TRUE);
  1556.   }
  1557.  
  1558.  
  1559. void processMessages(class, item)
  1560. ULONG class;
  1561. int item;
  1562.   { 
  1563.         if(class == REQCLEAR)
  1564.           {
  1565.             go = FALSE;
  1566.           }
  1567.             
  1568.         if(class == GADGETUP)
  1569.           {
  1570.             switch(item)
  1571.               {
  1572.                 case 2:  EndRequest(&in_requester,FirstWindow);
  1573.                          if (sub_num + 1 == max_txt)
  1574.                            {
  1575.                              sub_num = sub_num + 1;
  1576.                              prev_set = TRUE;
  1577.                              next_set = FALSE;
  1578.                            } 
  1579.                          if (sub_num + 1 < max_txt)
  1580.                            {
  1581.                              sub_num = sub_num + 1;
  1582.                              prev_set = TRUE;
  1583.                              next_set = TRUE;
  1584.                            }
  1585.                          break;
  1586.  
  1587.                 case 3:  EndRequest(&in_requester,FirstWindow);
  1588.                          if (sub_num - 1 == min_txt)
  1589.                            {
  1590.                              sub_num = sub_num - 1;
  1591.                              next_set = TRUE;
  1592.                              prev_set = FALSE;
  1593.                            }
  1594.                          if (sub_num - 1 > min_txt)
  1595.                            {
  1596.                              sub_num = sub_num - 1;
  1597.                              next_set = TRUE;
  1598.                              prev_set = TRUE;
  1599.                            }
  1600.                          break;
  1601.                          
  1602.               } /* switch */                          
  1603.  
  1604.           } /* if */              
  1605.  
  1606.   } /* processMessages */ 
  1607.  
  1608.  
  1609.