home *** CD-ROM | disk | FTP | other *** search
- /* bcs.c -- based on the Bonsai programs by R.I.MacDonald
- ******* taken from Analog Computing No.42 May 1986 *******
- Converted to Amiga Lattice 'C' by Terry W. Gintz*/
-
- void IMsg();
-
- /* Include the definitions and functions we need */
-
- #include "trees3.h"
- #include "bonsai7.c"
- #include "perspec5.c"
- #include "mouse.c"
-
- extern int save(),palette();
- extern void clear_colors();
- extern struct ColorMap *p_Co;
- extern SHORT mx,my;
-
- struct IntuiText titletext = {
- 2,2,JAM1,0,0,NL,(UBYTE *)"Bonsai Construction Set",NL};
-
- struct IntuiText Menu0IText [] = {
-
- {
- 0,3,JAM2, /* Front Pen, Back Pen, Draw Mode */
- 0,0, /* Left Edge, Top Edge */
- &TestFont, /* pointer to Text Font */
- " new tree ", /* text of Menu Item */
- NULL /* pointer to next IText */
- },
-
- {0,3,JAM2,0,0,&TestFont,"modify color",NULL },
- {0,3,JAM2,0,0,&TestFont," load data ",NULL },
- {0,3,JAM2,0,0,&TestFont," save data ",NULL },
- {0,3,JAM2,0,0,&TestFont,"save picture",NULL },
- {0,3,JAM2,0,0,&TestFont," new picture",NULL },
- {0,3,JAM2,0,0,&TestFont," quit ",NULL },
- };
-
- struct MenuItem Menu0Item[7] = {
- {
- &Menu0Item[1], /* pointer to next Item */
- 0,0,120,9, /* Left, Top, Width, Height */
- ITEMTEXT | ITEMENABLED | HIGHCOMP, /* Flags */
- 0, /* no mutual exclude */
- (APTR)&Menu0IText[0], /* Render info */
- NULL,NULL,NULL, /*Alt Image, Command (amiga) char, subitem*/
- MENUNULL /* next select */
- },
-
- {&Menu0Item[2],0,9,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[1],NULL,NULL,NULL,MENUNULL},
-
- {&Menu0Item[3],0,18,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[2],NULL,NULL,NULL,MENUNULL},
-
- {&Menu0Item[4],0,27,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[3],NULL,NULL,NULL,MENUNULL},
-
- {&Menu0Item[5],0,36,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[4],NULL,NULL,NULL,MENUNULL},
-
- {&Menu0Item[6],0,45,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[5],NULL,NULL,NULL,MENUNULL},
-
- {NULL,0,54,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
- 0,(APTR)&Menu0IText[6],NULL,NULL,NULL,MENUNULL},
- };
-
- struct IntuiText Menu1IText [] = {
-
- {
- 0,3,JAM2, /* Front Pen, Back Pen, Draw Mode */
- 0,0, /* Left Edge, Top Edge */
- &TestFont, /* pointer to Text Font */
- " Blue ", /* text of Menu Item */
- NULL /* pointer to next IText */
- },
-
- {0,3,JAM2,0,0,&TestFont," Purple ",NULL },
- {0,3,JAM2,0,0,&TestFont," Cyan ",NULL },
- {0,3,JAM2,0,0,&TestFont," White ",NULL },
- {0,3,JAM2,0,0,&TestFont," Dark Brown",NULL },
- {0,3,JAM2,0,0,&TestFont," Red-Orange",NULL },
- {0,3,JAM2,0,0,&TestFont," Lime Green",NULL },
- {0,3,JAM2,0,0,&TestFont," Red ",NULL },
- {0,3,JAM2,0,0,&TestFont," Light Blue",NULL },
- {0,3,JAM2,0,0,&TestFont," Violet ",NULL },
- {0,3,JAM2,0,0,&TestFont," Blue-Green",NULL },
- {0,3,JAM2,0,0,&TestFont," Black ",NULL },
- };
-
- struct MenuItem Menu1Item[12] = {
- {
- &Menu1Item[1], /* pointer to next Item */
- 0,0,110,9, /* Left, Top, Width, Height */
- ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT, /* Flags */
- (~(1 << 0)), /* mutual exclude */
- (APTR)&Menu1IText[0], /* Render info */
- NULL,NULL,NULL, /*Alt Image, Command (amiga) char, subitem*/
- MENUNULL /* next select */
- },
-
- {&Menu1Item[2],0,9,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 1)),(APTR)&Menu1IText[1],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[3],0,18,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 2)),(APTR)&Menu1IText[2],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[4],0,27,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 3)),(APTR)&Menu1IText[3],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[5],0,36,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
- (~(1 << 4)),(APTR)&Menu1IText[4],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[6],0,45,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 5)),(APTR)&Menu1IText[5],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[7],0,54,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 6)),(APTR)&Menu1IText[6],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[8],0,63,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 7)),(APTR)&Menu1IText[7],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[9],0,72,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 8)),(APTR)&Menu1IText[8],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[10],0,81,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 9)),(APTR)&Menu1IText[9],NULL,NULL,NULL,MENUNULL},
-
- {&Menu1Item[11],0,90,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 10)),(APTR)&Menu1IText[10],NULL,NULL,NULL,MENUNULL},
-
- {NULL,1,99,110,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 11)),(APTR)&Menu1IText[11],NULL,NULL,NULL,MENUNULL},
- };
-
- struct IntuiText Menu2IText [] = {
-
- {
- 0,3,JAM2, /* Front Pen, Back Pen, Draw Mode */
- 0,0, /* Left Edge, Top Edge */
- &TestFont, /* pointer to Text Font */
- " x0.1", /* text of Menu Item */
- NULL /* pointer to next IText */
- },
-
- {0,3,JAM2,0,0,&TestFont," x0.2",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.3",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.4",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.5",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.6",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.7",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.8",NULL },
- {0,3,JAM2,0,0,&TestFont," x0.9",NULL },
- {0,3,JAM2,0,0,&TestFont," x1.0",NULL },
- {0,3,JAM2,0,0,&TestFont," x1.5",NULL },
- {0,3,JAM2,0,0,&TestFont," x2.0",NULL },
- };
-
- struct MenuItem Menu2Item[12] = {
- {
- &Menu2Item[1], /* pointer to next Item */
- 0,0,50,9, /* Left, Top, Width, Height */
- ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT, /* Flags */
- (~(1 << 0)), /* mutual exclude */
- (APTR)&Menu2IText[0], /* Render info */
- NULL,NULL,NULL, /*Alt Image, Command (amiga) char, subitem*/
- MENUNULL /* next select */
- },
-
- {&Menu2Item[2],0,9,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 1)),(APTR)&Menu2IText[1],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[3],0,18,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 2)),(APTR)&Menu2IText[2],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[4],0,27,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 3)),(APTR)&Menu2IText[3],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[5],0,36,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 4)),(APTR)&Menu2IText[4],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[6],0,45,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 5)),(APTR)&Menu2IText[5],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[7],0,54,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 6)),(APTR)&Menu2IText[6],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[8],0,63,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 7)),(APTR)&Menu2IText[7],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[9],0,72,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 8)),(APTR)&Menu2IText[8],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[10],0,81,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
- (~(1 << 9)),(APTR)&Menu2IText[9],NULL,NULL,NULL,MENUNULL},
-
- {&Menu2Item[11],0,90,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 10)),(APTR)&Menu2IText[10],NULL,NULL,NULL,MENUNULL},
-
- {NULL,1,99,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
- (~(1 << 11)),(APTR)&Menu2IText[11],NULL,NULL,NULL,MENUNULL},
- };
-
- struct Menu BdMenu[3] = {
- {
- &BdMenu[1], /* ptr to next Menu */
- 10,0,120,0, /* left,top,width,height--top and height ignored */
- MENUENABLED, /* Flags */
- " Bonsai ", /* menu title */
- &Menu0Item[0] /* First Item in list */
- },
- {&BdMenu[2],140,0,110,0,MENUENABLED," Color ",&Menu1Item[0]},
- {NULL,260,0,50,0,MENUENABLED,"Scale",&Menu2Item[0]}
- };
-
- int lod,sav;
- UWORD color18, color19;
- int color,pt;
- extern double scl;
-
- main()
- {
- USHORT drawing;
-
- drawing=1;
- initwind();
- init_colors();
- init_scr();
- pt=1;
- color=8;
- scl=1.0;
- strcpy(name,"title");
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,15,0,0);
- SetRGB4(vp,19,15,15,15);
- SetPointer(wd,&PointImage,14,16,0,0);
- SetAPen(rp,31);
- SetDrMd(wd->RPort,JAM1);
- RectFill(wd->RPort,0,0,319,199);
- mx=159;
- my=180;
- PrintIText(wd->RPort,&titletext,60,175);
- perspec(0);
- ClearPointer(wd);
- pt=0;
- while(drawing)
- {
- IMsg();
- }
- } /* end of main */
-
- void IMsg()
- {
- struct IntuiMessage *BdMsg; /* Intuition message structure */
- ULONG Mclass; /* Message class */
- USHORT Mcode; /* Message code */
- double dd;
-
- dd=drand48(); /* stir up random generator while idling */
-
- while (BdMsg = (struct IntuiMessage *)GetMsg(wd->UserPort))
- {
- Mclass = BdMsg->Class;
- Mcode = BdMsg->Code;
- ReplyMsg(BdMsg);
- switch (Mclass) {
- case CLOSEWINDOW:
- clear_colors();
- Cleanup();
- exit(TRUE);
- break;
-
- case MENUPICK:
- switch (MENUNUM(Mcode)){
- case 0:
- switch (ITEMNUM(Mcode)){
- case 0:
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,0,15,0);
- SetRGB4(vp,19,11,4,0);
- SetPointer(wd,&TreeImage,14,16,0,0);
- mouse();
- ClearPointer(wd);
- pt=1;
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,15,0,0);
- SetRGB4(vp,19,15,15,15);
- SetPointer(wd,&PointImage,14,16,0,0);
- perspec(1);
- ClearPointer(wd);
- break;
- case 1:
- palette(wd);
- break;
- case 2:
- pt=1;
- lod=save(wd);
- if (lod==1){
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,0,15,0);
- SetRGB4(vp,19,11,4,0);
- SetPointer(wd,&TreeImage,14,16,0,0);
- mouse();
- ClearPointer(wd);
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,15,0,0);
- SetRGB4(vp,19,15,15,15);
- SetPointer(wd,&PointImage,14,16,0,0);
- perspec(0);
- ClearPointer(wd);
- }
- break;
- case 3:
- sav=save(wd);
- if (sav==1){
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,15,0,0);
- SetRGB4(vp,19,15,15,15);
- SetPointer(wd,&PointImage,14,16,0,0);
- writefile(0);
- ClearPointer(wd);
- }
- break;
- case 4:
- sav=save(wd);
- if (sav==1){
- color18=GetRGB4(p_Co,18);
- color19=GetRGB4(p_Co,19);
- SetRGB4(vp,18,15,0,0);
- SetRGB4(vp,19,15,15,15);
- SetPointer(wd,&PointImage,14,16,0,0);
- SavePicture();
- ClearPointer(wd);
- }
- break;
- case 5:
- SetAPen(rp,31);
- SetDrMd(wd->RPort,JAM1);
- RectFill(wd->RPort,0,0,319,199);
- break;
- case 6:
- clear_colors();
- Cleanup();
- exit(TRUE);
- break;
- }
- break;
- case 1:
- switch(ITEMNUM(Mcode)){
- case 0:
- color = 4;
- break;
- case 1:
- color = 5;
- break;
- case 2:
- color = 6;
- break;
- case 3:
- color = 7;
- break;
- case 4:
- color = 8;
- break;
- case 5:
- color = 9;
- break;
- case 6:
- color = 10;
- break;
- case 7:
- color = 11;
- break;
- case 8:
- color = 12;
- break;
- case 9:
- color = 13;
- break;
- case 10:
- color = 14;
- break;
- case 11:
- color = 15;
- break;
- }
- break;
- case 2:
- switch(ITEMNUM(Mcode)){
- case 0:
- scl = .1;
- break;
- case 1:
- scl = .2;
- break;
- case 2:
- scl = .3;
- break;
- case 3:
- scl = .4;
- break;
- case 4:
- scl = .5;
- break;
- case 5:
- scl = .6;
- break;
- case 6:
- scl = .7;
- break;
- case 7:
- scl = .8;
- break;
- case 8:
- scl = .9;
- break;
- case 9:
- scl = 1.0;
- break;
- case 10:
- scl = 1.5;
- break;
- case 11:
- scl = 2.0;
- break;
- }
- break;
- }
- }
- /* end of Class switch */
- }/* while */
- }
-
- init_scr()
- {
-
- SetMenuStrip(wd,&BdMenu);
-
- } /* end of init_scr */
-
- Cleanup()
- {
- CloseWindow(wd);
- CloseScreen(screen);
- }
-