home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 262.lha / SpriteWizard_v1.0 / SW_Gadgets.h < prev    next >
C/C++ Source or Header  |  1989-06-30  |  10KB  |  349 lines

  1. /*  SpriteWiz gadgets  -  By David A. Visage  */
  2.  
  3. #include "SW_Images.h"
  4.  
  5. /*  Defines for scroll gadgets  */
  6. #define SCROLL_UP    0
  7. #define SCROLL_DOWN  1
  8. #define SCROLL_LEFT  2
  9. #define SCROLL_RIGHT 3
  10.  
  11. /*  Defines for rotate gadgets  */
  12. #define ROTATE_LEFT  10
  13. #define ROTATE_RIGHT 11
  14.  
  15. /*  Defines for select gadgets  */
  16. #define SELECT_PLUS  20
  17. #define SELECT_MINUS 21
  18.  
  19. /*  Defines for color gadgets  */
  20. #define SPRCOLOR0  30                            /*  Background color  */
  21. #define SPRCOLOR1  31
  22. #define SPRCOLOR2  32
  23. #define SPRCOLOR3  33
  24.  
  25. /*  Defines for proportional gadgets  */
  26. #define RED_GAD   40
  27. #define GREEN_GAD 41
  28. #define BLUE_GAD  42
  29. #define SPEED_GAD 43
  30.  
  31. /*  Defines for text gadgets  */
  32. #define GET_GAD 50
  33. #define PUT_GAD 51
  34. #define CLR_GAD 52
  35.  
  36. /*  Define color gadget width and height  */
  37. #define COLOR_GAD_WIDTH  32
  38. #define COLOR_GAD_HEIGHT 16
  39.  
  40. /*  Define proportional gadget width and height  */
  41. #define PROP_GAD_WIDTH  (16 * 7)
  42. #define PROP_GAD_HEIGHT 10
  43.  
  44. /*  Define text gadget width and height  */
  45. #define TEXT_GAD_WIDTH  40
  46. #define TEXT_GAD_HEIGHT 11
  47.  
  48. /*  Needed because Text() assumes YCoord is the baseline  */
  49. #define TEXT_HEIGHT 8
  50.  
  51. /*  This defines the bit pattern for each sprite color  */
  52. struct BitPattern
  53.  {
  54.  UBYTE HighBit;
  55.  UBYTE LowBit;
  56.  };
  57.  
  58. /*  Used for color gadgets  */
  59. struct ColorData
  60.  {
  61.  struct Border ColorBorder;
  62.  struct Points ColorPoints;
  63.  struct BitPattern ColorBits;
  64.  LONG ScreenColor,SpriteColor;
  65.  };
  66.  
  67. /*  Used for text gadgets  */
  68. struct TextData
  69.  {
  70.  struct Border TextGadBorder;
  71.  struct Points TextGadPoints;
  72.  struct IntuiText TextGadIText;
  73.  };
  74.  
  75. /*  Declares for scroll gadgets  */
  76. struct Gadget ScrollGadUp,ScrollGadDown;
  77. struct Gadget ScrollGadLeft,ScrollGadRight;
  78.  
  79. /*  Declares for select gadgets  */
  80. struct Gadget SelectGadPlus,SelectGadMinus;
  81.  
  82. /*  Declares for rotate gadgets  */
  83. struct Gadget RotateGadLeft,RotateGadRight;
  84.  
  85. /*  Declares for color gadgets  */
  86. struct Gadget ColorGad0,ColorGad1;
  87. struct Gadget ColorGad2,ColorGad3;
  88. struct ColorData ColorData0,ColorData1;
  89. struct ColorData ColorData2,ColorData3;
  90.  
  91. /*  Declares for proportional gadgets  */
  92. struct Gadget RedGad,GreenGad,BlueGad;
  93. struct Gadget SpeedGad;
  94. struct PropInfo RedInfo,GreenInfo,BlueInfo;
  95. struct PropInfo SpeedInfo;
  96. struct Image RedImage,GreenImage,BlueImage;
  97. struct Image SpeedImage;
  98.  
  99. /*  Declares for text gadgets  */
  100. struct Gadget GetGad,PutGad;
  101. struct TextData GetGadData,PutGadData;
  102.  
  103. /*  Put all gadgets on screen  */
  104. InitGadgets()
  105. {
  106. /*  Initialize rotate gadgets  */
  107. InitBoolGad(&RotateGadLeft,296,45,&RotateLeftImage,ROTATE_LEFT);
  108. InitBoolGad(&RotateGadRight,324,45,&RotateRightImage,ROTATE_RIGHT);
  109.  
  110. /*  Initialize scroll gadgets  */
  111. InitBoolGad(&ScrollGadUp,390,37,&ScrollUpImage,SCROLL_UP);
  112. InitBoolGad(&ScrollGadRight,403,46,&ScrollRightImage,SCROLL_RIGHT);
  113. InitBoolGad(&ScrollGadLeft,369,46,&ScrollLeftImage,SCROLL_LEFT);
  114. InitBoolGad(&ScrollGadDown,390,51,&ScrollDownImage,SCROLL_DOWN);
  115.  
  116. /*  Initialize select gadgets  */
  117. InitBoolGad(&SelectGadMinus,451,45,&MinusImage,SELECT_MINUS);
  118. InitBoolGad(&SelectGadPlus,482,45,&PlusImage,SELECT_PLUS);
  119.  
  120. /*  Initialize color data structures for color gadgets  */
  121. InitColorData(&ColorData0,COLOR00,COLOR20,0,0);
  122. InitColorData(&ColorData1,COLOR01,COLOR21,1,0);
  123. InitColorData(&ColorData2,COLOR02,COLOR22,0,1);
  124. InitColorData(&ColorData3,COLOR03,COLOR23,1,1);
  125.  
  126. /*  Initialize color gadgets  */
  127. InitColorGad(&ColorGad0,300,75,&ColorData0,SPRCOLOR0);
  128. InitColorGad(&ColorGad1,380,75,&ColorData1,SPRCOLOR1);
  129. InitColorGad(&ColorGad2,460,75,&ColorData2,SPRCOLOR2);
  130. InitColorGad(&ColorGad3,540,75,&ColorData3,SPRCOLOR3);
  131.  
  132. /*  Initialize RGB gadgets and speed gadget  */
  133. InitPropGad(&RedGad,300,113,&RedImage,&RedInfo,RED_GAD);
  134. InitPropGad(&GreenGad,300,128,&GreenImage,&GreenInfo,GREEN_GAD);
  135. InitPropGad(&BlueGad,300,143,&BlueImage,&BlueInfo,BLUE_GAD);
  136. InitPropGad(&SpeedGad,300,169,&SpeedImage,&SpeedInfo,SPEED_GAD);
  137.  
  138. /*  Initialize text gadgets  */
  139. InitTextGad(&GetGad,450,168,&GetGadData,"GET",GET_GAD);
  140. InitTextGad(&PutGad,500,168,&PutGadData,"PUT",PUT_GAD);
  141.  
  142. /*  Initialize titles for gadgets  */
  143. InitGadTitle(&ColorGad0,1,-2,"COL0");
  144. InitGadTitle(&ColorGad1,1,-2,"COL1");
  145. InitGadTitle(&ColorGad2,1,-2,"COL2");
  146. InitGadTitle(&ColorGad3,1,-2,"COL3");
  147. InitGadTitle(&RedGad,-5,0,"R");
  148. InitGadTitle(&GreenGad,-5,0,"G");
  149. InitGadTitle(&BlueGad,-5,0,"B");
  150. InitGadTitle(&SpeedGad,0,-2,"SPEED");
  151. InitGadTitle(&GetGad,20,-2,"BUFFER");
  152. }
  153.  
  154.  
  155. /*  Initialize bool gadgets  */
  156. InitBoolGad(GadPtr,LeftEdge,TopEdge,ImagePtr,GadID)
  157. struct Gadget *GadPtr;
  158. SHORT LeftEdge,TopEdge;
  159. struct Image *ImagePtr;
  160. USHORT GadID;
  161. {
  162. /*  Initialize gadget information  */
  163. GadPtr->LeftEdge = LeftEdge;
  164. GadPtr->TopEdge = TopEdge;
  165. GadPtr->Width = ImagePtr->Width;
  166. GadPtr->Height = ImagePtr->Height;
  167. GadPtr->Flags = GADGHNONE | GADGIMAGE;
  168. GadPtr->Activation = GADGIMMEDIATE | RELVERIFY;
  169. GadPtr->GadgetType = BOOLGADGET;
  170. GadPtr->GadgetRender = (APTR) ImagePtr;
  171. GadPtr->GadgetID = GadID;
  172. GadPtr->NextGadget = NULL;
  173. AddGadget(WindowPtr,GadPtr,-1);    /*  Add gadget to window  */
  174. }
  175.  
  176.  
  177. /*  Initialize ColorData structures for color gadgets  */
  178. InitColorData(ColorDataPtr,ScreenColor,SpriteColor,HighBit,LowBit)
  179. struct ColorData *ColorDataPtr;
  180. LONG ScreenColor,SpriteColor;
  181. UBYTE HighBit,LowBit;
  182. {
  183. UWORD ColorVal;
  184. ULONG RedBits,GreenBits,BlueBits;
  185.  
  186. /*  Set screen and sprite color registers  */
  187. ColorDataPtr->ScreenColor = ScreenColor;
  188. ColorDataPtr->SpriteColor = SpriteColor;
  189.  
  190. /*  Set bit pattern for sprite colors  */
  191. ColorDataPtr->ColorBits.HighBit = HighBit;
  192. ColorDataPtr->ColorBits.LowBit = LowBit;
  193.  
  194. /*  Copy screen color register to Sprite color register  */
  195. ColorVal = GetRGB4(Vp->ColorMap,ScreenColor);
  196. SetPackedRGB(Vp,ColorVal,SpriteColor);
  197. }
  198.  
  199.  
  200. /*  Initilize color gadgets  */
  201. InitColorGad(GadPtr,LeftEdge,TopEdge,ColorDataPtr,GadID)
  202. struct Gadget *GadPtr;
  203. SHORT LeftEdge,TopEdge;
  204. struct ColorData *ColorDataPtr;
  205. USHORT GadID;
  206. {
  207. struct Points *PointsPtr;
  208. struct Border *BorderPtr;
  209. LONG ScreenColor;
  210.  
  211. /*  Initialize border structure for this color gadget  */
  212. PointsPtr = &ColorDataPtr->ColorPoints;
  213. BorderPtr = &ColorDataPtr->ColorBorder;
  214. InitBorder(PointsPtr,BorderPtr,COLOR_GAD_WIDTH,COLOR_GAD_HEIGHT);
  215.  
  216. /*  Initialize gadget information  */
  217. GadPtr->LeftEdge = LeftEdge;
  218. GadPtr->TopEdge = TopEdge;
  219. GadPtr->Width = COLOR_GAD_WIDTH;
  220. GadPtr->Height = COLOR_GAD_HEIGHT;
  221. GadPtr->Flags = GADGHNONE;
  222. GadPtr->Activation = GADGIMMEDIATE;
  223. GadPtr->GadgetType = BOOLGADGET;
  224. GadPtr->GadgetRender = (APTR) BorderPtr;
  225. GadPtr->GadgetID = GadID;
  226. GadPtr->UserData = (APTR) ColorDataPtr;
  227. GadPtr->NextGadget = NULL;
  228. AddGadget(WindowPtr,GadPtr,-1);    /*  Add gadget to window  */
  229.  
  230. /*  Set screen color of this color gadget  */
  231. ScreenColor = ColorDataPtr->ScreenColor;
  232. MinX = GadPtr->LeftEdge;
  233. MinY = GadPtr->TopEdge;
  234. MaxX = MinX + COLOR_GAD_WIDTH;
  235. MaxY = MinY + COLOR_GAD_HEIGHT;
  236. SetAPen(Rp,ScreenColor);
  237. RectFill(Rp,MinX + 1,MinY + 1,MaxX - 1,MaxY - 1);
  238. }
  239.  
  240.  
  241. /*  Initialize proportional gadgets  */
  242. InitPropGad(GadPtr,LeftEdge,TopEdge,ImagePtr,InfoPtr,GadID)
  243. struct Gadget *GadPtr;
  244. SHORT LeftEdge,TopEdge;
  245. struct Image *ImagePtr;
  246. struct PropInfo *InfoPtr;
  247. USHORT GadID;
  248. {
  249.  
  250. /*  Initialize proportional information  */
  251. InfoPtr->Flags = AUTOKNOB | FREEHORIZ;
  252. InfoPtr->HorizBody = 0x1000;
  253. InfoPtr->HorizPot = 0;
  254.  
  255. /*  Initialize gadget information  */
  256. GadPtr->LeftEdge = LeftEdge;
  257. GadPtr->TopEdge = TopEdge;
  258. GadPtr->Width = PROP_GAD_WIDTH;
  259. GadPtr->Height = PROP_GAD_HEIGHT;
  260. GadPtr->Flags = GADGHNONE | GADGIMAGE;
  261. GadPtr->Activation = GADGIMMEDIATE;
  262. GadPtr->GadgetType = PROPGADGET;
  263. GadPtr->GadgetRender = (APTR) ImagePtr;
  264. GadPtr->GadgetID = GadID;
  265. GadPtr->SpecialInfo = (APTR) InfoPtr;
  266. GadPtr->NextGadget = NULL;
  267. AddGadget(WindowPtr,GadPtr,-1);    /*  Add gadget to window  */
  268. }
  269.  
  270.  
  271. /*  Initialize text gadgets  */
  272. InitTextGad(GadPtr,LeftEdge,TopEdge,TextDataPtr,GadTextPtr,GadID)
  273. struct Gadget *GadPtr;
  274. SHORT LeftEdge,TopEdge;
  275. struct TextData *TextDataPtr;
  276. UBYTE *GadTextPtr;
  277. USHORT GadID;
  278. {
  279. struct Points *PointsPtr;
  280. struct Border *BorderPtr;
  281. struct IntuiText *ITextPtr;
  282.  
  283. /*  Create border for gadget  */
  284. PointsPtr = &TextDataPtr->TextGadPoints;
  285. BorderPtr = &TextDataPtr->TextGadBorder;
  286. InitBorder(PointsPtr,BorderPtr,TEXT_GAD_WIDTH - 1,TEXT_GAD_HEIGHT - 1);
  287.  
  288. /*  Initialize gadget IntuiText  */
  289. ITextPtr = &TextDataPtr->TextGadIText;
  290. ITextPtr->FrontPen = COLOR05;
  291. ITextPtr->BackPen = COLOR00;
  292. ITextPtr->DrawMode = JAM1;
  293. ITextPtr->LeftEdge = 8;
  294. ITextPtr->TopEdge = 2;
  295. ITextPtr->ITextFont = NULL;
  296. ITextPtr->IText = GadTextPtr;
  297. ITextPtr->NextText = NULL;
  298.  
  299. /*  Initialize gadget information  */
  300. GadPtr->LeftEdge = LeftEdge;
  301. GadPtr->TopEdge = TopEdge;
  302. GadPtr->Width = TEXT_GAD_WIDTH;
  303. GadPtr->Height = TEXT_GAD_HEIGHT;
  304. GadPtr->Flags = GADGHCOMP;
  305. GadPtr->Activation = RELVERIFY;
  306. GadPtr->GadgetType = BOOLGADGET;
  307. GadPtr->GadgetRender = (APTR) &TextDataPtr->TextGadBorder;
  308. GadPtr->GadgetID = GadID;
  309. GadPtr->GadgetText = &TextDataPtr->TextGadIText;
  310. GadPtr->NextGadget = NULL;
  311. AddGadget(WindowPtr,GadPtr,-1);    /*  Add gadget to window  */
  312. }
  313.  
  314.  
  315. /*  Initialize gadget titles  */
  316. InitGadTitle(GadPtr,LeftOffSet,TopOffSet,Title)
  317. struct Gadget *GadPtr;
  318. SHORT LeftOffSet,TopOffSet;
  319. UBYTE *Title;
  320. {
  321. SHORT Width,Height;
  322. SHORT LeftEdge,TopEdge;
  323. LONG XCoord,YCoord;
  324.  
  325. LeftEdge = GadPtr->LeftEdge;
  326. TopEdge = GadPtr->TopEdge;
  327. Width = GadPtr->Width;
  328. Height = GadPtr->Height;
  329.  
  330. /*  Check sign of LeftOffSet  */
  331. if ( LeftOffSet < 0 )
  332.    XCoord = LeftEdge + Width + (LeftOffSet * - 1);
  333. else
  334.    XCoord = LeftEdge + LeftOffSet;
  335.  
  336. /*  Check sign of TopOffSet  */
  337. if ( TopOffSet < 0 )
  338.    YCoord = TopEdge + Height + (TopOffSet * - 1) + TEXT_HEIGHT;
  339. else
  340.    YCoord = TopEdge + TopOffSet + TEXT_HEIGHT;
  341.  
  342. Move(Rp,XCoord,YCoord);
  343. SetAPen(Rp,COLOR05);
  344. Text(Rp,Title,strlen(Title));
  345. }
  346.  
  347.  
  348.  
  349.