home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <intuition/intuition.h>
-
- extern struct TextAttr Font;
- extern struct Screen *FirstScreen;
- extern struct IntuiMessage *message;
- extern struct Window *FirstWindow,*NoBorder;
- extern SHORT op_code;
- extern BOOL DrawWindow;
-
- /**************************************************************************
-
- I N F O R M A T I O N R E Q U E S T E R I N F O
-
- **************************************************************************/
-
-
-
- struct IntuiText in_Quit_txt =
- {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"QUIT", NULL};
-
- struct IntuiText in_Next_txt =
- {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"Next Page", NULL};
-
- struct IntuiText in_Prev_txt =
- {1, 0, JAM1, 8, 8, &Font, (UBYTE *)"Previous Page", NULL};
-
- struct Image in_Quit_img = {0,0, 50,25, 3, NULL, 0, 0, NULL};
-
- struct Image in_Next_img = {0,0, 88,25, 3, NULL, 0, 0, NULL};
-
- struct Image in_Prev_img = {0,0, 120,25, 3, NULL, 0, 0, NULL};
-
- struct Gadget in_Prev_gadg =
- {
- NULL,
- 420, 350, 120, 25,
- GADGIMAGE|GADGHBOX, RELVERIFY, REQGADGET|BOOLGADGET,
- (APTR)&in_Prev_img, NULL,
- &in_Prev_txt, NULL,
- NULL, 3, NULL
- };
-
- struct Gadget in_Next_gadg =
- {
- &in_Prev_gadg,
- 250, 350, 88, 25,
- GADGIMAGE|GADGHBOX, RELVERIFY, REQGADGET|BOOLGADGET,
- (APTR)&in_Next_img, NULL,
- &in_Next_txt, NULL,
- NULL, 2, NULL
- };
-
- struct Gadget in_Quit_gadg =
- {
- &in_Next_gadg,
- 100, 350, 50, 25,
- GADGIMAGE|GADGHBOX, ENDGADGET, REQGADGET|BOOLGADGET,
- (APTR)&in_Quit_img, NULL,
- &in_Quit_txt, NULL,
- NULL, 1, NULL
- };
-
-
- SHORT in_border1_cords[] = {5,10, 620,10, 620,388, 5,388, 5,10};
- SHORT in_border2_cords[] = {10,15, 615,15, 615,383, 10,383, 10,15};
-
-
- struct Border in_border2 =
- {
- 0, 0,
- 1, 0, JAM1,
- 5, &in_border2_cords[0],
- NULL
- };
-
- struct Border in_border1 =
- {
- 0, 0,
- 1, 0, JAM1,
- 5, &in_border1_cords[0],
- &in_border2
- };
-
- struct IntuiText prg_txt1[30] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " There is no known real world structure that when magnified",
- &prg_txt1[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "repeatedly an infinite number of times maintains its original",
- &prg_txt1[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "appearance, however, the study of such imaginary structures have",
- &prg_txt1[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "intrigued mathematicians and physicists for some time.",
- &prg_txt1[4]},
- {1, 0, JAM1, 40, 80, &Font,
- " Mathematicians have perennially contemplated numerous ideas using",
- &prg_txt1[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "pictures; in fact, they often use aesthetic classifications as",
- &prg_txt1[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "criteria for showing completeness and/or discovering truths. There",
- &prg_txt1[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "is a growing conviction, amongst the mathematical community, that",
- &prg_txt1[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "formation processes and self-organization develop by an exclusive",
- &prg_txt1[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "number of orthodox scenarios which are independent of the specific",
- &prg_txt1[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "system involved. During the 1980's there was a great deal of effort",
- &prg_txt1[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "put into methodically finding the rules by which order arises in",
- &prg_txt1[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "complex systems; the exploration into the fields of chaos and order",
- &prg_txt1[13]},
- {1, 0, JAM1, 40, 170, &Font,
- "has since continued enthusiastically. By creating these beautiful",
- &prg_txt1[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "pictures, scientists are trying to comprehend how the organization",
- &prg_txt1[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "of the boundaries (the fractal's shape or form) corresponds to the",
- &prg_txt1[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "parameters chosen.",
- &prg_txt1[17]},
- {1, 0, JAM1, 40, 210, &Font,
- " While producing exquisite depictions, the Mandelbrot set",
- &prg_txt1[18]},
- {1, 0, JAM1, 40, 220, &Font,
- "provides a superlative working example of the complex transformation",
- &prg_txt1[19]},
- {1, 0, JAM1, 40, 230, &Font,
- "from order to chaos. The Julia sets are peculiar to the individual",
- &prg_txt1[20]},
- {1, 0, JAM1, 40, 240, &Font,
- "parts of the Mandelbrot set; that is, by using parameters from",
- &prg_txt1[21]},
- {1, 0, JAM1, 40, 250, &Font,
- "disparate sections of the Mandelbrot set distinct Julia set fractals",
- &prg_txt1[22]},
- {1, 0, JAM1, 40, 260, &Font,
- "will be generated. The pictures that are generated are actually",
- &prg_txt1[23]},
- {1, 0, JAM1, 40, 270, &Font,
- "computations of escape velocities of the equation for each point on",
- &prg_txt1[24]},
- {1, 0, JAM1, 40, 280, &Font,
- "the screen to which the picture is being drawn, and the picture's",
- &prg_txt1[25]},
- {1, 0, JAM1, 40, 290, &Font,
- "colors are selected by an associated color table. The way in which",
- &prg_txt1[26]},
- {1, 0, JAM1, 40, 300, &Font,
- "one chooses these colors (or zones as this program refers to them)",
- &prg_txt1[27]},
- {1, 0, JAM1, 40, 310, &Font,
- "is of critical importance since this will determine what is",
- &prg_txt1[28]},
- {1, 0, JAM1, 40, 320, &Font,
- "graphically rendered to the screen; different color assignments in",
- &prg_txt1[29]},
- {1, 0, JAM1, 40, 330, &Font,
- "the same region can actually produce distinct fractals. Knowing",
- NULL}
- };
-
- struct IntuiText prg_txt2[27] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "how to pick the right combinations of colors is somewhat of an art,",
- &prg_txt2[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "however, by employing the trial and error method it is possible to",
- &prg_txt2[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "generate fairly attractive fractals. For more information",
- &prg_txt2[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "concerning choosing the colors for the zones see the Color Zones",
- &prg_txt2[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "information. Also, you may find it helpful to peruse the",
- &prg_txt2[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "information on Fractal Values especially for the Julia set",
- &prg_txt2[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "parameters.",
- &prg_txt2[7]},
- {1, 0, JAM1, 40, 110, &Font,
- " Some of my friends have expressed a concern about only allowing",
- &prg_txt2[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "for a high-resolution, interlaced screen, but it is my belief that",
- &prg_txt2[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "these alluring structures can only be fully appreciated with the",
- &prg_txt2[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "finest resolution attainable. Although this increases the run-time",
- &prg_txt2[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "for a full screen fractal, if you have the time to wait, I believe",
- &prg_txt2[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "it is well worth it.",
- &prg_txt2[13]},
- {1, 0, JAM1, 40, 170, &Font,
- " I am submitting this program to the public domain in hopes that",
- &prg_txt2[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "it will serve to inspire others to program and offer their code to",
- &prg_txt2[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "rookies, like myself, who struggle through the growing pains of not",
- &prg_txt2[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "knowing how to program on their Amiga. This is not a high-powered",
- &prg_txt2[17]},
- {1, 0, JAM1, 40, 210, &Font,
- "fractal program; in fact, I could cite several examples of faster",
- &prg_txt2[18]},
- {1, 0, JAM1, 40, 220, &Font,
- "fractal generators with more ""bells and whistles"" than this, but my",
- &prg_txt2[19]},
- {1, 0, JAM1, 40, 230, &Font,
- "intention is to share, with anyone interested, the code which makes",
- &prg_txt2[20]},
- {1, 0, JAM1, 40, 240, &Font,
- "this program possible. This program began as an extra credit project",
- &prg_txt2[21]},
- {1, 0, JAM1, 40, 250, &Font,
- "in a C class that I was taking at Grand Rapids Junior College, and as",
- &prg_txt2[22]},
- {1, 0, JAM1, 40, 260, &Font,
- "my fascination with fractals grew so did the program! If you have",
- &prg_txt2[23]},
- {1, 0, JAM1, 40, 270, &Font,
- "any comments or suggestions, please feel free to write me or, what",
- &prg_txt2[24]},
- {1, 0, JAM1, 40, 280, &Font,
- "the hell, if you feel the need to send money - I'm still just a poor",
- &prg_txt2[25]},
- {1, 0, JAM1, 40, 290, &Font,
- "college student... You can find my address in the About section of",
- &prg_txt2[26]},
- {1, 0, JAM1, 40, 300, &Font,
- "the information sub-menu. I hope you enjoy the pictures I've created.",
- NULL}
- };
-
-
- struct IntuiText map_txt[24] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " The Map is an ILBM that I created using this program. I loaded",
- &map_txt[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "it into Deluxe Paint III to add the words and markings. The Map is",
- &map_txt[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "a picture of the Mandelbrot set and its associated coordinates in the",
- &map_txt[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "complex plane. The coordinates are used as parameters when defining",
- &map_txt[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "where you want your fractal to come from. For example, if you were",
- &map_txt[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "to choose a real minimum of -2, a real maximum of .50, an imaginary",
- &map_txt[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "minimum of -1.25, and an imaginary maximum of 1.25 and then you",
- &map_txt[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "assigned these values in the Assign Mandelbrot Values requester,",
- &map_txt[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "then chose Draw/Mandelbrot you would effectively generate the",
- &map_txt[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "Mandelbrot set you see when you display the Map. When you want to",
- &map_txt[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "zoom in on a particular spot of the Mandelbrot set, you can use the",
- &map_txt[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "Map to get a general idea of what coordinates are used to generate",
- &map_txt[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "that fractal. Finding a precise location isn't always easy, and it",
- &map_txt[13]},
- {1, 0, JAM1, 40, 170, &Font,
- "may require a couple of test runs to get the fractal you want. I",
- &map_txt[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "suggest that instead of generating a full screen fractal you use",
- &map_txt[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "the Drawing Area Parameters requester and make the draw window say",
- &map_txt[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "50 x 50 (just big enough to see if you found the right area) and set",
- &map_txt[17]},
- {1, 0, JAM1, 40, 210, &Font,
- "the iterations to 25 so it is generated as quickly as possible.",
- &map_txt[18]},
- {1, 0, JAM1, 40, 220, &Font,
- "Then if the area you chose was the spot you wanted to zoom in on,",
- &map_txt[19]},
- {1, 0, JAM1, 40, 230, &Font,
- "you could increase the draw window size and increase the number of",
- &map_txt[20]},
- {1, 0, JAM1, 40, 240, &Font,
- "iterations used. This Map can be used for picking Julia set",
- &map_txt[21]},
- {1, 0, JAM1, 40, 250, &Font,
- "fractals also since they require separate real and imaginary",
- &map_txt[22]},
- {1, 0, JAM1, 40, 260, &Font,
- "parameters. SEE Iterations, Fractal Values, Draw, and Drawing Area",
- &map_txt[23]},
- {1, 0, JAM1, 40, 270, &Font,
- "for more information about these functions.",
- NULL}
- };
-
-
- struct IntuiText drwa_txt[18] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " The Drawing Area Parameters requester allows you to change the",
- &drwa_txt[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "size and/or position of the drawing window. Since this window has",
- &drwa_txt[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "no border or window sizing gadgets, this requester facilitates the",
- &drwa_txt[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "way in which you specify where the window should appear by using the",
- &drwa_txt[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "Left Edge and Top Edge gadgets. The Left Edge should be a natural",
- &drwa_txt[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "number between 0 and 500 while the Top Edge should be a natural",
- &drwa_txt[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "number between 10 and 350. The size of the window is governed by",
- &drwa_txt[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "the Width and Height gadgets. If the sum of the Left Edge and the",
- &drwa_txt[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "Width is greater than 640 an error message is displayed and the",
- &drwa_txt[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "values are reset to their default settings. If the sum of the",
- &drwa_txt[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "Height and Top Edge exceeds 400 an error message is displayed and,",
- &drwa_txt[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "once again, both of these values will be reset to their respective",
- &drwa_txt[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "default settings. The size of the window will determine the total",
- &drwa_txt[13]},
- {1, 0, JAM1, 40, 170, &Font,
- "drawing area for the fractal. Smaller windows are useful for",
- &drwa_txt[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "testing color arrangements or specific fractal values where you're",
- &drwa_txt[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "not sure if you've chosen the correct area to zoom in on. A full",
- &drwa_txt[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "window (or say a 400 x 400 window) is nice for generating the",
- &drwa_txt[17]},
- {1, 0, JAM1, 40, 210, &Font,
- "fractal you wish to save.",
- NULL}
- };
-
-
- struct IntuiText drw_txt1[19] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Draw",
- &drw_txt1[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "Mandelbrot - selection of this option will initiate the drawing of a",
- &drw_txt1[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "Mandelbrot set fractal.",
- &drw_txt1[3]},
- {1, 0, JAM1, 40, 90, &Font,
- "Julia - selection of this option will initiate the drawing of a Julia",
- &drw_txt1[4]},
- {1, 0, JAM1, 40, 100, &Font,
- "set fractal.",
- &drw_txt1[5]},
- {1, 0, JAM1, 40, 120, &Font,
- "The choice of Draw is the last command given to the program before",
- &drw_txt1[6]},
- {1, 0, JAM1, 40, 130, &Font,
- "generation of a fractal takes place. The program is dependent upon",
- &drw_txt1[7]},
- {1, 0, JAM1, 40, 140, &Font,
- "the values in these requesters as follows:",
- &drw_txt1[8]},
- {1, 0, JAM1, 40, 160, &Font,
- "Colors - colors currently defined in the Modify Colors requester are",
- &drw_txt1[9]},
- {1, 0, JAM1, 40, 170, &Font,
- " the system colors and will be used to color the fractal as",
- &drw_txt1[10]},
- {1, 0, JAM1, 40, 180, &Font,
- " well as define screen, border, and text colors.",
- &drw_txt1[11]},
- {1, 0, JAM1, 40, 200, &Font,
- "Color Zones - zones currently defined by values stored in their",
- &drw_txt1[12]},
- {1, 0, JAM1, 40, 210, &Font,
- " respective gadgets are used to define escape sequences.",
- &drw_txt1[13]},
- {1, 0, JAM1, 40, 230, &Font,
- "Iterations - the iteration number with the checkmark in front of it",
- &drw_txt1[14]},
- {1, 0, JAM1, 40, 240, &Font,
- " will determine the number of iterations for this",
- &drw_txt1[15]},
- {1, 0, JAM1, 40, 250, &Font,
- " drawing.",
- &drw_txt1[16]},
- {1, 0, JAM1, 40, 270, &Font,
- "Drawing Area - values currently defined by the Drawing Area",
- &drw_txt1[17]},
- {1, 0, JAM1, 40, 280, &Font,
- " Parameters requester will determine where the drawing",
- &drw_txt1[18]},
- {1, 0, JAM1, 40, 290, &Font,
- " will occur on the screen as well as its size.",
- NULL}
- };
-
-
- struct IntuiText drw_txt2[7] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "Fractal Values - values currently assigned by the respective Fractal",
- &drw_txt2[1]},
- {1, 0, JAM1, 40, 50, &Font,
- " Values Parameter requester will be used in",
- &drw_txt2[2]},
- {1, 0, JAM1, 40, 60, &Font,
- " determining which area of the set to generate.",
- &drw_txt2[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "For more specific information on any of the items above look in the",
- &drw_txt2[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "information menu. Note: Information on colors can be found in the",
- &drw_txt2[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "Modify Colors section while the rest of the items each have their",
- &drw_txt2[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "own headings.",
- NULL}
- };
-
-
- struct IntuiText mod_txt[24] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Modify Colors",
- &mod_txt[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "This requester allows the changing of the 16 system colors. You",
- &mod_txt[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "can blend each of the red, green, and blue amounts for all 16 colors",
- &mod_txt[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "(they are numbered 0 - 15) available. However, changing the black",
- &mod_txt[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "and white colors is not recommended since the black color represents",
- &mod_txt[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "infinity on a fractal drawing and the white color is used for borders",
- &mod_txt[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "and other program functions. Additionally, you may experience",
- &mod_txt[7]},
- {1, 0, JAM1, 40, 120, &Font,
- "text recognition problems when mixing some colors. All of the",
- &mod_txt[8]},
- {1, 0, JAM1, 40, 130, &Font,
- "requesters utilizing text use blue backgrounds with white lettering",
- &mod_txt[9]},
- {1, 0, JAM1, 40, 140, &Font,
- "for ease of reading, but when those colors are mixed the result can",
- &mod_txt[10]},
- {1, 0, JAM1, 40, 150, &Font,
- "be hard to understand text. You can reset the system colors to what",
- &mod_txt[11]},
- {1, 0, JAM1, 40, 160, &Font,
- "they were originally by selecting the default gadget of this",
- &mod_txt[12]},
- {1, 0, JAM1, 40, 170, &Font,
- "requester. Think of these colors as your palette. Since you are the",
- &mod_txt[13]},
- {1, 0, JAM1, 40, 180, &Font,
- "artist who will do the painting, they should be colors that will",
- &mod_txt[14]},
- {1, 0, JAM1, 40, 190, &Font,
- "produce the most aesthetically pleasing results to you! Your color",
- &mod_txt[15]},
- {1, 0, JAM1, 40, 200, &Font,
- "selections will be directly used by the program to color the zones to",
- &mod_txt[16]},
- {1, 0, JAM1, 40, 210, &Font,
- "which they correspond. Each color zone is assigned a number from 0 -",
- &mod_txt[17]},
- {1, 0, JAM1, 40, 220, &Font,
- "15 (your color palette numbers), and the color that has been defined",
- &mod_txt[18]},
- {1, 0, JAM1, 40, 230, &Font,
- "in your palette for that number will be the color the program will",
- &mod_txt[19]},
- {1, 0, JAM1, 40, 240, &Font,
- "use to paint that zone. This is how you can change the colors of",
- &mod_txt[20]},
- {1, 0, JAM1, 40, 250, &Font,
- "your fractals. This can even be done after the fractal has been",
- &mod_txt[21]},
- {1, 0, JAM1, 40, 260, &Font,
- "drawn; that is, once the drawing is complete you can modify its",
- &mod_txt[22]},
- {1, 0, JAM1, 40, 270, &Font,
- "colors (you will, of course, change every occurrence of that color).",
- &mod_txt[23]},
- {1, 0, JAM1, 40, 280, &Font,
- "SEE Color Zones for more information pertaining to that subject.",
- NULL}
- };
-
-
- struct IntuiText fv_txt1[29] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Assigning Mandelbrot Values",
- &fv_txt1[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "This requester contains four important gadgets; Real Min., Real Max.,",
- &fv_txt1[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "Imag. Min., Imag. Max.. These gadgets are used to specify values,",
- &fv_txt1[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "from the Mandelbrot set, that you would like to use in generating",
- &fv_txt1[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "your fractal. Notice that they are in pairs (i.e. Real Min. - Real",
- &fv_txt1[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "Max.). Upon observing the Map provided by this program, you will see",
- &fv_txt1[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "real and imaginary number lines that form a two dimensional",
- &fv_txt1[7]},
- {1, 0, JAM1, 40, 120, &Font,
- "coordinate plane. The values you choose for these gadgets should be",
- &fv_txt1[8]},
- {1, 0, JAM1, 40, 130, &Font,
- "within the range shown on the Map, and they are entered as to form a",
- &fv_txt1[9]},
- {1, 0, JAM1, 40, 140, &Font,
- "subrange of values from the real and imaginary axes. Be careful",
- &fv_txt1[10]},
- {1, 0, JAM1, 40, 150, &Font,
- "where you pick these values because if you specify coordinates that",
- &fv_txt1[11]},
- {1, 0, JAM1, 40, 160, &Font,
- "put you in the infinity realm, your fractal will just be a generation",
- &fv_txt1[12]},
- {1, 0, JAM1, 40, 170, &Font,
- "of infinity (on the Map, infinity is the black lake-like zone in the",
- &fv_txt1[13]},
- {1, 0, JAM1, 40, 180, &Font,
- "middle of the picture). However, you shouldn't be too afraid to",
- &fv_txt1[14]},
- {1, 0, JAM1, 40, 190, &Font,
- "experiment with values around the infinity lake since many beautiful",
- &fv_txt1[15]},
- {1, 0, JAM1, 40, 200, &Font,
- "fractals are generated from its border. You can use the Map to get a",
- &fv_txt1[16]},
- {1, 0, JAM1, 40, 210, &Font,
- "general idea of where your values will come from. You can think of",
- &fv_txt1[17]},
- {1, 0, JAM1, 40, 220, &Font,
- "this process as a microscope where you designate the area you would",
- &fv_txt1[18]},
- {1, 0, JAM1, 40, 230, &Font,
- "like to see; in fact, that is very analogous to what is going on.",
- &fv_txt1[19]},
- {1, 0, JAM1, 40, 240, &Font,
- "You are magnifying the area specified by the range of values, and",
- &fv_txt1[20]},
- {1, 0, JAM1, 40, 250, &Font,
- "the magnification factor depends upon the difference of the values.",
- &fv_txt1[21]},
- {1, 0, JAM1, 40, 260, &Font,
- "For example, the smaller the distance between the minimum and",
- &fv_txt1[22]},
- {1, 0, JAM1, 40, 270, &Font,
- "maximum values chosen, the higher the magnification factor.",
- &fv_txt1[23]},
- {1, 0, JAM1, 40, 280, &Font,
- " There is no defined methodology for picking these values. My",
- &fv_txt1[24]},
- {1, 0, JAM1, 40, 290, &Font,
- "advice would be to look at the Map and find someplace that might",
- &fv_txt1[25]},
- {1, 0, JAM1, 40, 300, &Font,
- "look interesting when magnified. Pick a minimum value for either",
- &fv_txt1[26]},
- {1, 0, JAM1, 40, 310, &Font,
- "the real or imaginary axis (this will be where you want your",
- &fv_txt1[27]},
- {1, 0, JAM1, 40, 320, &Font,
- "fractal to start) then pick a maximum value for either the real or",
- &fv_txt1[28]},
- {1, 0, JAM1, 40, 330, &Font,
- "imaginary axis (this will be where you want your fractal to end),",
- NULL}
- };
-
-
- struct IntuiText fv_txt2[28] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "then repeat the process for the other axis. Try to select values",
- &fv_txt2[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "from the Map that aren't in the ""lake of infinity"", and use a",
- &fv_txt2[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "smaller Draw Window for your initial generation. By using a",
- &fv_txt2[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "smaller area to generate the fractal, you won't be wasting your",
- &fv_txt2[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "time if the area you've picked was not a good choice; if it was a",
- &fv_txt2[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "good choice, you can stop the current job, redefine your drawing",
- &fv_txt2[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "area, and start again.",
- &fv_txt2[7]},
- {1, 0, JAM1, 40, 120, &Font,
- " Assigning Julia Values",
- &fv_txt2[8]},
- {1, 0, JAM1, 40, 140, &Font,
- "This requester contains the same four important gadgets that you",
- &fv_txt2[9]},
- {1, 0, JAM1, 40, 150, &Font,
- "see in the Mandelbrot requester, and it has two additional",
- &fv_txt2[10]},
- {1, 0, JAM1, 40, 160, &Font,
- "gadgets. The previously defined gadgets can be thought of exactly",
- &fv_txt2[11]},
- {1, 0, JAM1, 40, 170, &Font,
- "as I described them above, but the two new gadgets require some",
- &fv_txt2[12]},
- {1, 0, JAM1, 40, 180, &Font,
- "explanation. The Real Param and the Imag Param gadgets specify a",
- &fv_txt2[13]},
- {1, 0, JAM1, 40, 190, &Font,
- "particular spot in the Mandelbrot set. I'll try to explain this",
- &fv_txt2[14]},
- {1, 0, JAM1, 40, 200, &Font,
- "the best that I can. The Julia set is a pictorial description of",
- &fv_txt2[15]},
- {1, 0, JAM1, 40, 210, &Font,
- "the ebbs or of the underlying forces in the Mandelbrot set. It",
- &fv_txt2[16]},
- {1, 0, JAM1, 40, 220, &Font,
- "contains areas called strange attractors which are a place where",
- &fv_txt2[17]},
- {1, 0, JAM1, 40, 230, &Font,
- "these chaotic forces tend to come together. Thus, when you",
- &fv_txt2[18]},
- {1, 0, JAM1, 40, 240, &Font,
- "generate a Julia fractal you specify the area of the Mandelbrot",
- &fv_txt2[19]},
- {1, 0, JAM1, 40, 250, &Font,
- "set as well as including an offset into the set. The Real Param",
- &fv_txt2[20]},
- {1, 0, JAM1, 40, 260, &Font,
- "and Imag Param gadgets will be your offset. I can't tell you how",
- &fv_txt2[21]},
- {1, 0, JAM1, 40, 270, &Font,
- "to select these values, but if you'd like to learn more about",
- &fv_txt2[22]},
- {1, 0, JAM1, 40, 280, &Font,
- "them, there are several good books out as well as scientific",
- &fv_txt2[23]},
- {1, 0, JAM1, 40, 290, &Font,
- "publications and journals where you could get more information on",
- &fv_txt2[24]},
- {1, 0, JAM1, 40, 300, &Font,
- "the subject. There are some very interesting looking Julias",
- &fv_txt2[25]},
- {1, 0, JAM1, 40, 310, &Font,
- "around the set (in fact, the introductory screen you see when you",
- &fv_txt2[26]},
- {1, 0, JAM1, 40, 320, &Font,
- "load the program came from a Julia), and I encourage you to",
- &fv_txt2[27]},
- {1, 0, JAM1, 40, 330, &Font,
- "explore this type of fractal. My advice for generating these",
- NULL}
- };
-
-
- struct IntuiText fv_txt3[4] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "fractals would be the same as I've already given you with one",
- &fv_txt3[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "exception, you don't have to stay away from the ""lake of",
- &fv_txt3[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "infinity"" anymore since the underlying forces can be found in",
- &fv_txt3[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "this area.",
- NULL}
- };
-
-
- struct IntuiText itr_txt1[22] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Iterations",
- &itr_txt1[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "This pull down menu item controls the number of iterations that will",
- &itr_txt1[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "be used in generating your fractal as well as the number of zones",
- &itr_txt1[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "that can be used. The higher the iteration number you select,",
- &itr_txt1[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "the more precise your fractal will be; that is, with lower iteration",
- &itr_txt1[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "numbers there is a tendency to color some of the pixels incorrectly.",
- &itr_txt1[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "However, this is not a major concern unless your magnification factor",
- &itr_txt1[7]},
- {1, 0, JAM1, 40, 120, &Font,
- "is very high. You can generate a fairly accurate and alluring",
- &itr_txt1[8]},
- {1, 0, JAM1, 40, 130, &Font,
- "fractal without the use of a high number of iterations. Increasing",
- &itr_txt1[9]},
- {1, 0, JAM1, 40, 140, &Font,
- "the iterations makes for a longer run-time for the fractal being",
- &itr_txt1[10]},
- {1, 0, JAM1, 40, 150, &Font,
- "generated; thus, if you don't care about the initial looks of an",
- &itr_txt1[11]},
- {1, 0, JAM1, 40, 160, &Font,
- "area (say you were just testing a spot out) a lower iteration number",
- &itr_txt1[12]},
- {1, 0, JAM1, 40, 170, &Font,
- "would be appropriate. The iterations is directly connected with",
- &itr_txt1[13]},
- {1, 0, JAM1, 40, 180, &Font,
- "the number of zones that you will be able to use when coloring",
- &itr_txt1[14]},
- {1, 0, JAM1, 40, 190, &Font,
- "your fractal, and the higher the iteration number, the more zones",
- &itr_txt1[15]},
- {1, 0, JAM1, 40, 200, &Font,
- "you can use for coloring. This is all more complicated then I am",
- &itr_txt1[16]},
- {1, 0, JAM1, 40, 210, &Font,
- "making it seem, but for practicality we'll leave it at that. One",
- &itr_txt1[17]},
- {1, 0, JAM1, 40, 220, &Font,
- "note I'd like to make is that when you are generating a fractal that",
- &itr_txt1[18]},
- {1, 0, JAM1, 40, 230, &Font,
- "has a high magnification factor you may have to use a higher number",
- &itr_txt1[19]},
- {1, 0, JAM1, 40, 240, &Font,
- "of iterations to see anything at all. So, if you want more accuracy",
- &itr_txt1[20]},
- {1, 0, JAM1, 40, 250, &Font,
- "or you have chosen a high magnification factor, you should make an",
- &itr_txt1[21]},
- {1, 0, JAM1, 40, 260, &Font,
- "adjustment in your iterations. The iteration number controls the",
- NULL}
- };
-
-
- struct IntuiText itr_txt2[19] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "zones in the following manner:",
- &itr_txt2[1]},
- {1, 0, JAM1, 40, 60, &Font,
- " Number of Iterations Allowable Zones",
- &itr_txt2[2]},
- {1, 0, JAM1, 40, 70, &Font,
- " ---------------------- -----------------",
- &itr_txt2[3]},
- {1, 0, JAM1, 40, 90, &Font,
- " 25 1 - 25",
- &itr_txt2[4]},
- {1, 0, JAM1, 40, 100, &Font,
- " 50 1 - 38",
- &itr_txt2[5]},
- {1, 0, JAM1, 40, 110, &Font,
- " 75 1 - 50",
- &itr_txt2[6]},
- {1, 0, JAM1, 40, 120, &Font,
- " 100 1 - 63",
- &itr_txt2[7]},
- {1, 0, JAM1, 40, 130, &Font,
- " 125 1 - 75",
- &itr_txt2[8]},
- {1, 0, JAM1, 40, 140, &Font,
- " 175 1 - 100",
- &itr_txt2[9]},
- {1, 0, JAM1, 40, 150, &Font,
- " 225 1 - 125",
- &itr_txt2[10]},
- {1, 0, JAM1, 40, 160, &Font,
- " 275 1 - 150",
- &itr_txt2[11]},
- {1, 0, JAM1, 40, 170, &Font,
- " 325 1 - 175",
- &itr_txt2[12]},
- {1, 0, JAM1, 40, 180, &Font,
- " 375 1 - 200",
- &itr_txt2[13]},
- {1, 0, JAM1, 40, 200, &Font,
- "Keep in mind that whatever number you select for the iterations,",
- &itr_txt2[14]},
- {1, 0, JAM1, 40, 210, &Font,
- "the program will use all of the allowable number of zones for that",
- &itr_txt2[15]},
- {1, 0, JAM1, 40, 220, &Font,
- "choice. So if you have color numbers in the zones that you don't",
- &itr_txt2[16]},
- {1, 0, JAM1, 40, 230, &Font,
- "like or are unaware of, you should reset them to what you want.",
- &itr_txt2[17]},
- {1, 0, JAM1, 40, 240, &Font,
- "SEE Color Zones for more information on its requesters and ",
- &itr_txt2[18]},
- {1, 0, JAM1, 40, 250, &Font,
- "interaction with iterations.",
- NULL}
- };
-
-
- struct IntuiText cz_txt1[29] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Color Zones",
- &cz_txt1[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "This menu item has two different choices: Zones 1 - 100, and Zones",
- &cz_txt1[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "101 - 200. Each of these requesters is used in defining the color",
- &cz_txt1[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "that will be used by the program to color your fractal. You should",
- &cz_txt1[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "enter a number between 0 and 15 into the zone gadgets that are",
- &cz_txt1[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "useable (i.e. the allowable number of zones). If there is currently",
- &cz_txt1[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "a number there and you don't want to change it, that's o.k. just",
- &cz_txt1[7]},
- {1, 0, JAM1, 40, 120, &Font,
- "leave it that way. But, something MUST be in each allowable gadget",
- &cz_txt1[8]},
- {1, 0, JAM1, 40, 130, &Font,
- "or you will experience problems. Additionally, if you try to enter",
- &cz_txt1[9]},
- {1, 0, JAM1, 40, 140, &Font,
- "a number outside of the legal range, you will see a screen flash and",
- &cz_txt1[10]},
- {1, 0, JAM1, 40, 150, &Font,
- "the number will not be allowed. In any case, you should ALWAYS click",
- &cz_txt1[11]},
- {1, 0, JAM1, 40, 160, &Font,
- "the o.k. gadget regardless of what you do so that the program can",
- &cz_txt1[12]},
- {1, 0, JAM1, 40, 170, &Font,
- "accept the values from the gadgets. If you are experiencing a black",
- &cz_txt1[13]},
- {1, 0, JAM1, 40, 180, &Font,
- "picture every time you are generating a fractal, the problem could be",
- &cz_txt1[14]},
- {1, 0, JAM1, 40, 190, &Font,
- "that you have not given the program permission to use any colors to",
- &cz_txt1[15]},
- {1, 0, JAM1, 40, 200, &Font,
- "color your fractal!",
- &cz_txt1[16]},
- {1, 0, JAM1, 40, 210, &Font,
- " The iteration number controls how many zones you will be allowed",
- &cz_txt1[17]},
- {1, 0, JAM1, 40, 220, &Font,
- "to use for defining the coloring of your fractal. There is a",
- &cz_txt1[18]},
- {1, 0, JAM1, 40, 230, &Font,
- "complete breakdown of how this is done in the Iterations information.",
- &cz_txt1[19]},
- {1, 0, JAM1, 40, 240, &Font,
- " Explaining the process that is going on here will not be an easy",
- &cz_txt1[20]},
- {1, 0, JAM1, 40, 250, &Font,
- "task, but I will try to keep it simple. One day while developing this",
- &cz_txt1[21]},
- {1, 0, JAM1, 40, 260, &Font,
- "program, I noticed that a binary fractal (meaning a fractal consisting",
- &cz_txt1[22]},
- {1, 0, JAM1, 40, 270, &Font,
- "of only two colors - namely black and white) had very distinct zones.",
- &cz_txt1[23]},
- {1, 0, JAM1, 40, 280, &Font,
- "I tried to count the zones to see how many there was, but as the",
- &cz_txt1[24]},
- {1, 0, JAM1, 40, 290, &Font,
- "number of zones increased it became increasingly difficult to see",
- &cz_txt1[25]},
- {1, 0, JAM1, 40, 300, &Font,
- "where one stopped and the next one started. Approximately 25 zones",
- &cz_txt1[26]},
- {1, 0, JAM1, 40, 310, &Font,
- "could be seen clearly on the Mandelbrot set that I had generated so",
- &cz_txt1[27]},
- {1, 0, JAM1, 40, 320, &Font,
- "the lowest number of allowable zones is 25; which corresponds to an",
- &cz_txt1[28]},
- {1, 0, JAM1, 40, 330, &Font,
- "iteration number of 25. The Map is an exemplary generation of the",
- NULL}
- };
-
- struct IntuiText cz_txt2[30] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "Mandelbrot set, and the very first color on the Map (in either the",
- &cz_txt2[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "upper or lower left hand corner) corresponds to Zone #1. You could",
- &cz_txt2[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "begin counting from there to determine how many zones you can",
- &cz_txt2[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "identify, but unfortunately this number is not uniform for all",
- &cz_txt2[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "fractals; that is, a different fractal (esp. one where the iteration",
- &cz_txt2[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "number is increased or the magnification factor is higher) will have",
- &cz_txt2[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "different zones. Even if the allowable number is at its maximum, some",
- &cz_txt2[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "of the lower color zones may never be used (they still have to be",
- &cz_txt2[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "specified though since their individual usage is about as chaotic",
- &cz_txt2[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "as the fractal itself, and I don't know of anyway to predict which",
- &cz_txt2[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "zones will be used). These zones directly define the escape",
- &cz_txt2[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "sequences of the fractal; that is, they make up the shape that you",
- &cz_txt2[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "see once it has been generated. If you only wanted to use two",
- &cz_txt2[13]},
- {1, 0, JAM1, 40, 170, &Font,
- "colors, then you would include only those two colors in each",
- &cz_txt2[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "allowable color zone and alternate them back and forth. Since you",
- &cz_txt2[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "only have a maximum of 16 colors, the planning of this part of the",
- &cz_txt2[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "program is critical. If you use all 16 colors and you spread them",
- &cz_txt2[17]},
- {1, 0, JAM1, 40, 210, &Font,
- "around wildly throughout the allowable zones, your end result may",
- &cz_txt2[18]},
- {1, 0, JAM1, 40, 220, &Font,
- "look too ""busy""; by that, I mean the colors won't have a good",
- &cz_txt2[19]},
- {1, 0, JAM1, 40, 230, &Font,
- "definition to them and it will be difficult to see the seperation",
- &cz_txt2[20]},
- {1, 0, JAM1, 40, 240, &Font,
- "of the zones. You can remedy that problem by selecting one color",
- &cz_txt2[21]},
- {1, 0, JAM1, 40, 250, &Font,
- "for several consecutive zones; thereby making a wider zone of color",
- &cz_txt2[22]},
- {1, 0, JAM1, 40, 260, &Font,
- "and adding more distinction between zones. Perhaps now you realize",
- &cz_txt2[23]},
- {1, 0, JAM1, 40, 270, &Font,
- "how a different looking fractal can be generated from the same area",
- &cz_txt2[24]},
- {1, 0, JAM1, 40, 280, &Font,
- "using the same colors; all you have to do is change how the zones",
- &cz_txt2[25]},
- {1, 0, JAM1, 40, 290, &Font,
- "are defined.",
- &cz_txt2[26]},
- {1, 0, JAM1, 40, 300, &Font,
- " This is, by far, the hardest part of the program to understand",
- &cz_txt2[27]},
- {1, 0, JAM1, 40, 310, &Font,
- "and to visualize, and it is also the most important part of",
- &cz_txt2[28]},
- {1, 0, JAM1, 40, 320, &Font,
- "generating a good fractal. It takes time and practice to know how",
- &cz_txt2[29]},
- {1, 0, JAM1, 40, 330, &Font,
- "you should define your zones, but you can learn how to do this",
- NULL}
- };
-
-
- struct IntuiText cz_txt3[9] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "effectively. I suggest that you start with a smaller drawing area",
- &cz_txt3[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "as well as a lower number of iterations (if that is possible,",
- &cz_txt3[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "remember if your magnification factor is high you'll need more",
- &cz_txt3[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "iterations and more color zones). Try your color zone definition",
- &cz_txt3[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "out and see what you think. If you don't like it, go in and make",
- &cz_txt3[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "some changes to your definitions paying close attention to how they",
- &cz_txt3[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "affect the next generation of the fractal. Before long you will",
- &cz_txt3[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "begin to see how you can manipulate the color zones and you'll be",
- &cz_txt3[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "on your way to generating beautiful fractals.",
- NULL}
- };
-
-
- struct IntuiText dc_txt[7] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Default Colors",
- &dc_txt[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "This small requester serves only one purpose; to show you what the",
- &dc_txt[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "default system colors are while naming them. If you are using the",
- &dc_txt[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "Modify Colors requester you will see a gadget that is named default.",
- &dc_txt[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "Clicking this gadget will reset the system colors back to the way",
- &dc_txt[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "they were originally defined. You cannot reset the colors by using",
- &dc_txt[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "this requester.",
- NULL}
- };
-
-
- struct IntuiText abt_txt[12] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " About",
- &abt_txt[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "My name is Steven Dillon, and I am currently a Senior at Grand",
- &abt_txt[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "Valley State University where I am majoring in Computer Science. I",
- &abt_txt[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "am concurrently getting a minor in math. If you have any questions",
- &abt_txt[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "or comments about this program or the source code that is included,",
- &abt_txt[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "feel free to contact me at the following address:",
- &abt_txt[6]},
- {1, 0, JAM1, 40, 120, &Font,
- "6157 - 5 Woodfield Place S.E.",
- &abt_txt[7]},
- {1, 0, JAM1, 40, 130, &Font,
- "Grand Rapids, MI 49548",
- &abt_txt[8]},
- {1, 0, JAM1, 40, 150, &Font,
- "This program and its contents are being donated to the public domain",
- &abt_txt[9]},
- {1, 0, JAM1, 40, 160, &Font,
- "with one request: If you use any of the source code or modify it",
- &abt_txt[10]},
- {1, 0, JAM1, 40, 170, &Font,
- "for your own usage, please include the fact that you borrowed it from",
- &abt_txt[11]},
- {1, 0, JAM1, 40, 180, &Font,
- "this program.",
- NULL}
- };
-
-
- struct IntuiText las_txt1[29] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- " Load & Save",
- &las_txt1[1]},
- {1, 0, JAM1, 40, 60, &Font,
- "Load and Save both have two important choices to consider: ILBM, and",
- &las_txt1[2]},
- {1, 0, JAM1, 40, 70, &Font,
- "Parameters. If you choose the ILBM option, then the program expects",
- &las_txt1[3]},
- {1, 0, JAM1, 40, 80, &Font,
- "you to either load or save an ILBM file, and if you choose the",
- &las_txt1[4]},
- {1, 0, JAM1, 40, 90, &Font,
- "parameters option, the program expects you to either load or save a",
- &las_txt1[5]},
- {1, 0, JAM1, 40, 100, &Font,
- "parameters file. These will be explained in further detail later.",
- &las_txt1[6]},
- {1, 0, JAM1, 40, 110, &Font,
- "After selecting the ILBM or Parameters choice you will see the File",
- &las_txt1[7]},
- {1, 0, JAM1, 40, 120, &Font,
- "Manager window/requester. The File Manager's default drawer is df1:",
- &las_txt1[8]},
- {1, 0, JAM1, 40, 130, &Font,
- "so it will be looking there initially. You can change the drawer to",
- &las_txt1[9]},
- {1, 0, JAM1, 40, 140, &Font,
- "look at df0:, but I'm not sure if this will work with a hard drive as",
- &las_txt1[10]},
- {1, 0, JAM1, 40, 150, &Font,
- "I haven't been able to afford one yet! You can then click on the",
- &las_txt1[11]},
- {1, 0, JAM1, 40, 160, &Font,
- "file name (if you are loading a file) or type something in the file",
- &las_txt1[12]},
- {1, 0, JAM1, 40, 170, &Font,
- "name gadget after you click in it. This is not a difficult requester",
- &las_txt1[13]},
- {1, 0, JAM1, 40, 180, &Font,
- "to get the hang of, and with very little usage you'll be able to do",
- &las_txt1[14]},
- {1, 0, JAM1, 40, 190, &Font,
- "what you want with it easily.",
- &las_txt1[15]},
- {1, 0, JAM1, 40, 200, &Font,
- " The ILBM option either saves or loads an ILBM file. Once saved",
- &las_txt1[16]},
- {1, 0, JAM1, 40, 210, &Font,
- "you can use the file in any program that accepts the standard format",
- &las_txt1[17]},
- {1, 0, JAM1, 40, 220, &Font,
- "for an ILBM file (as far as I know). I can say that I haven't had",
- &las_txt1[18]},
- {1, 0, JAM1, 40, 230, &Font,
- "any problems with loading my saved ILBM's into the Deluxe Paint",
- &las_txt1[19]},
- {1, 0, JAM1, 40, 240, &Font,
- "environment. You can view a saved ILBM by using the Load - ILBM",
- &las_txt1[20]},
- {1, 0, JAM1, 40, 250, &Font,
- "option. Once there, you will receive instructions from the program,",
- &las_txt1[21]},
- {1, 0, JAM1, 40, 260, &Font,
- "at the top of the screen, on how to exit from this option.",
- &las_txt1[22]},
- {1, 0, JAM1, 40, 270, &Font,
- " The Parameters option saves or loads a parameters file.",
- &las_txt1[23]},
- {1, 0, JAM1, 40, 280, &Font,
- "Several parameters are saved or loaded during this operation. The",
- &las_txt1[24]},
- {1, 0, JAM1, 40, 290, &Font,
- "list of items saved or loaded is as follows: the drawing area",
- &las_txt1[25]},
- {1, 0, JAM1, 40, 300, &Font,
- "parameters which includes the drawing area and its location; the",
- &las_txt1[26]},
- {1, 0, JAM1, 40, 310, &Font,
- "currently defined fractal values; the iterations number; the",
- &las_txt1[27]},
- {1, 0, JAM1, 40, 320, &Font,
- "currently defined system colors; and the numbers currently defined",
- &las_txt1[28]},
- {1, 0, JAM1, 40, 330, &Font,
- "in the allowable zones. The program knows which respective values",
- NULL}
- };
-
-
- struct IntuiText las_txt2[25] =
- {
- {1, 0, JAM1, 40, 40, &Font,
- "to save and/or load so you don't have to worry about saving or",
- &las_txt2[1]},
- {1, 0, JAM1, 40, 50, &Font,
- "loading unnecessary or unwanted information during this process.",
- &las_txt2[2]},
- {1, 0, JAM1, 40, 60, &Font,
- "You won't be able to use this option to load any other type of",
- &las_txt2[3]},
- {1, 0, JAM1, 40, 70, &Font,
- "files though because when the Parameters file is saved it has a",
- &las_txt2[4]},
- {1, 0, JAM1, 40, 80, &Font,
- "special header on it that tells the program it's o.k. to load it",
- &las_txt2[5]},
- {1, 0, JAM1, 40, 90, &Font,
- "back in, and the program will insist that the header is present or",
- &las_txt2[6]},
- {1, 0, JAM1, 40, 100, &Font,
- "it won't allow the loading of the file to take place. The",
- &las_txt2[7]},
- {1, 0, JAM1, 40, 110, &Font,
- "Parameters file can be useful if you like the fractal you've",
- &las_txt2[8]},
- {1, 0, JAM1, 40, 120, &Font,
- "generated and you want to save the program definitions. You could",
- &las_txt2[9]},
- {1, 0, JAM1, 40, 130, &Font,
- "then use these definitions to generate a similar fractal, to use",
- &las_txt2[10]},
- {1, 0, JAM1, 40, 140, &Font,
- "the color zones you saved in a different area, or to just use the",
- &las_txt2[11]},
- {1, 0, JAM1, 40, 150, &Font,
- "particular blend of colors you have in your palette for a new",
- &las_txt2[12]},
- {1, 0, JAM1, 40, 160, &Font,
- "fractal.",
- &las_txt2[13]},
- {1, 0, JAM1, 40, 170, &Font,
- " You will find examples of both ILBM files and Parameters files",
- &las_txt2[14]},
- {1, 0, JAM1, 40, 180, &Font,
- "included on this disk. The ILBM files will be in the Drawings",
- &las_txt2[15]},
- {1, 0, JAM1, 40, 190, &Font,
- "directory, and the Parameters files will be in the Parameters",
- &las_txt2[16]},
- {1, 0, JAM1, 40, 200, &Font,
- "directory. The ILBM files have an extension that immediately",
- &las_txt2[17]},
- {1, 0, JAM1, 40, 210, &Font,
- "identifies them (.ILBM), and I have adopted a similar convention",
- &las_txt2[18]},
- {1, 0, JAM1, 40, 220, &Font,
- "for the Parameters files (.prms) - NOTE - this is not",
- &las_txt2[19]},
- {1, 0, JAM1, 40, 230, &Font,
- "automatically done by the program during a save; it is a method",
- &las_txt2[20]},
- {1, 0, JAM1, 40, 240, &Font,
- "that I have been using, and you need not follow it if you don't",
- &las_txt2[21]},
- {1, 0, JAM1, 40, 250, &Font,
- "want to. I suggest that if you stick with this practice, you",
- &las_txt2[22]},
- {1, 0, JAM1, 40, 260, &Font,
- "should name both files the same name and then just change the",
- &las_txt2[23]},
- {1, 0, JAM1, 40, 270, &Font,
- "extension; that way you have a picture of what you've saved to",
- &las_txt2[24]},
- {1, 0, JAM1, 40, 280, &Font,
- "help you remember what was generated using those definitions.",
- NULL}
- };
-
- struct IntuiText *TextArray[] =
- { &prg_txt1[0], &prg_txt2[0], &fv_txt1[0], &fv_txt2[0], &fv_txt3[0],
- &map_txt[0], &itr_txt1[0], &itr_txt2[0], &drwa_txt[0], &drw_txt1[0],
- &drw_txt2[0], &cz_txt1[0], &cz_txt2[0], &cz_txt3[0], &mod_txt[0],
- &dc_txt[0], &las_txt1[0], &las_txt2[0], &abt_txt[0] };
-
- struct Requester in_requester;
-
- SHORT sub_num, min_txt, max_txt;
-
- BOOL go, next_gadg, prev_gadg, next_set, prev_set;
-
- ULONG class;
-
- int item;
-
- /**************************************************************************
-
- I N F O R M A T I O N R E Q U E S T E R
-
- **************************************************************************/
-
-
- Info_requester(FirstWindow,op_code)
- struct Window *FirstWindow;
- SHORT op_code;
- {
- void processMessages();
-
- switch(op_code)
- {
- case 0: sub_num = 0;
- min_txt = 0;
- max_txt = 1;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 1: sub_num = 2;
- min_txt = 2;
- max_txt = 4;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 2: sub_num = 5;
- min_txt = 5;
- max_txt = 5;
- next_gadg = FALSE;
- prev_gadg = FALSE;
- break;
-
- case 3: sub_num = 6;
- min_txt = 6;
- max_txt = 7;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 4: sub_num = 8;
- min_txt = 8;
- max_txt = 8;
- next_gadg = FALSE;
- prev_gadg = FALSE;
- break;
-
- case 5: sub_num = 9;
- min_txt = 9;
- max_txt = 10;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 6: sub_num = 11;
- min_txt = 11;
- max_txt = 13;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 7: sub_num = 14;
- min_txt = 14;
- max_txt = 14;
- next_gadg = FALSE;
- prev_gadg = FALSE;
- break;
-
- case 8: sub_num = 15;
- min_txt = 15;
- max_txt = 15;
- next_gadg = FALSE;
- prev_gadg = FALSE;
- break;
-
- case 9: sub_num = 16;
- min_txt = 16;
- max_txt = 17;
- next_gadg = TRUE;
- prev_gadg = FALSE;
- break;
-
- case 10: sub_num = 18;
- min_txt = 18;
- max_txt = 18;
- next_gadg = FALSE;
- prev_gadg = FALSE;
- break;
-
- } /* Close off op_code switch */
-
- go = TRUE;
-
- if(DrawWindow == TRUE)
- {
- WindowToBack(NoBorder);
- }
-
- ModifyIDCMP(FirstWindow, NULL);
- ModifyIDCMP(FirstWindow, GADGETUP | REQCLEAR);
- make_request(FirstWindow);
- if(next_gadg)
- {
- OnGadget(&in_Next_gadg, FirstWindow, &in_requester);
- }
- else
- OffGadget(&in_Next_gadg, FirstWindow, &in_requester);
-
- OffGadget(&in_Prev_gadg, FirstWindow, &in_requester);
-
- while(go)
- {
- Wait(1 << FirstWindow->UserPort->mp_SigBit);
- while(message = (struct IntuiMessage *)
- GetMsg(FirstWindow->UserPort))
- {
- class = message->Class;
- item = ((struct Gadget *) message->IAddress)->GadgetID;
- ReplyMsg(message);
-
- } /* while message */
-
- processMessages(class, item);
-
- if(go)
- {
- make_request(FirstWindow);
-
- if(!(next_gadg) && next_set)
- {
- OnGadget(&in_Next_gadg, FirstWindow, &in_requester);
- next_gadg = TRUE;
- }
- else if(next_gadg && !(next_set))
- {
- OffGadget(&in_Next_gadg, FirstWindow, &in_requester);
- next_gadg = FALSE;
- }
-
- if(!(prev_gadg) && prev_set)
- {
- OnGadget(&in_Prev_gadg, FirstWindow, &in_requester);
- prev_gadg = TRUE;
- }
- else if(prev_gadg && !(prev_set))
- {
- OffGadget(&in_Prev_gadg, FirstWindow, &in_requester);
- prev_gadg = FALSE;
- }
-
- ModifyIDCMP(FirstWindow, NULL);
- ModifyIDCMP(FirstWindow, GADGETUP | REQCLEAR);
-
- } /* if go */
-
- } /**** While go ****/
-
- if(DrawWindow == TRUE)
- {
- WindowToFront(NoBorder);
- }
-
- return(TRUE);
-
- } /**** Close Off Information ****/
-
-
- make_request(FirstWindow)
- struct Window *FirstWindow;
- {
- InitRequester(&in_requester);
-
- in_requester.LeftEdge = 0;
- in_requester.TopEdge = 10;
- in_requester.Width = 640;
- in_requester.Height = 390;
- in_requester.ReqGadget = &in_Quit_gadg;
- in_requester.ReqText = TextArray[sub_num];
- in_requester.BackFill = 2;
- in_requester.Flags = NULL;
- in_requester.ReqBorder = &in_border1;
-
- Request(&in_requester,FirstWindow);
- return(TRUE);
- }
-
-
- void processMessages(class, item)
- ULONG class;
- int item;
- {
- if(class == REQCLEAR)
- {
- go = FALSE;
- }
-
- if(class == GADGETUP)
- {
- switch(item)
- {
- case 2: EndRequest(&in_requester,FirstWindow);
- if (sub_num + 1 == max_txt)
- {
- sub_num = sub_num + 1;
- prev_set = TRUE;
- next_set = FALSE;
- }
- if (sub_num + 1 < max_txt)
- {
- sub_num = sub_num + 1;
- prev_set = TRUE;
- next_set = TRUE;
- }
- break;
-
- case 3: EndRequest(&in_requester,FirstWindow);
- if (sub_num - 1 == min_txt)
- {
- sub_num = sub_num - 1;
- next_set = TRUE;
- prev_set = FALSE;
- }
- if (sub_num - 1 > min_txt)
- {
- sub_num = sub_num - 1;
- next_set = TRUE;
- prev_set = TRUE;
- }
- break;
-
- } /* switch */
-
- } /* if */
-
- } /* processMessages */
-
-
-