home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / icoons / source / windows.c < prev    next >
C/C++ Source or Header  |  1992-11-19  |  30KB  |  861 lines

  1. /*
  2.  *  Source generated with GadToolsBox V1.4
  3.  *  which is (c) Copyright 1991,92 Jaba Development
  4.  */
  5.  
  6. #include <exec/types.h>
  7. #include <intuition/intuition.h>
  8. #include <intuition/classes.h>
  9. #include <intuition/classusr.h>
  10. #include <intuition/imageclass.h>
  11. #include <intuition/gadgetclass.h>
  12. #include <libraries/gadtools.h>
  13. #include <graphics/displayinfo.h>
  14. #include <graphics/gfxbase.h>
  15. #include <clib/exec_protos.h>
  16. #include <clib/intuition_protos.h>
  17. #include <clib/gadtools_protos.h>
  18. #include <clib/graphics_protos.h>
  19. #include <clib/utility_protos.h>
  20. #include <string.h>
  21.  
  22. #include "windows.h"
  23.  
  24. struct Screen         *Scr = NULL;
  25. APTR                   VisualInfo = NULL;
  26. struct Window         *MainWnd = NULL;
  27. struct Window         *KnotInfoWnd = NULL;
  28. struct Window         *ExpandedViewWnd = NULL;
  29. struct Window         *Scale_GroupWnd = NULL;
  30. struct Window         *Rotate_GroupWnd = NULL;
  31. struct Window         *Move_GroupWnd = NULL;
  32. struct Window         *ConfigWnd = NULL;
  33. struct Gadget         *MainGList = NULL;
  34. struct Gadget         *KnotInfoGList = NULL;
  35. struct Gadget         *ExpandedViewGList = NULL;
  36. struct Gadget         *Scale_GroupGList = NULL;
  37. struct Gadget         *Rotate_GroupGList = NULL;
  38. struct Gadget         *Move_GroupGList = NULL;
  39. struct Gadget         *ConfigGList = NULL;
  40. struct Menu           *MainMenus = NULL;
  41. struct Gadget         *MainGadgets[5];
  42. struct Gadget         *KnotInfoGadgets[10];
  43. struct Gadget         *ExpandedViewGadgets[2];
  44. struct Gadget         *Scale_GroupGadgets[5];
  45. struct Gadget         *Rotate_GroupGadgets[3];
  46. struct Gadget         *Move_GroupGadgets[4];
  47. struct Gadget         *ConfigGadgets[12];
  48. UWORD                  MainLeft = 0;
  49. UWORD                  MainTop = 1;
  50. UWORD                  MainWidth = 640;
  51. UWORD                  MainHeight = 244;
  52. UWORD                  KnotInfoLeft = 379;
  53. UWORD                  KnotInfoTop = 16;
  54. UWORD                  KnotInfoWidth = 251;
  55. UWORD                  KnotInfoHeight = 86;
  56. UWORD                  ExpandedViewLeft = 0;
  57. UWORD                  ExpandedViewTop = 0;
  58. UWORD                  ExpandedViewWidth = 640;
  59. UWORD                  ExpandedViewHeight = 245;
  60. UWORD                  Scale_GroupLeft = 403;
  61. UWORD                  Scale_GroupTop = 19;
  62. UWORD                  Scale_GroupWidth = 230;
  63. UWORD                  Scale_GroupHeight = 65;
  64. UWORD                  Rotate_GroupLeft = 418;
  65. UWORD                  Rotate_GroupTop = 22;
  66. UWORD                  Rotate_GroupWidth = 221;
  67. UWORD                  Rotate_GroupHeight = 64;
  68. UWORD                  Move_GroupLeft = 482;
  69. UWORD                  Move_GroupTop = 21;
  70. UWORD                  Move_GroupWidth = 138;
  71. UWORD                  Move_GroupHeight = 72;
  72. UWORD                  ConfigLeft = 0;
  73. UWORD                  ConfigTop = 1;
  74. UWORD                  ConfigWidth = 640;
  75. UWORD                  ConfigHeight = 244;
  76. UBYTE                 *MainWdt = (UBYTE *)"Main Window";
  77. UBYTE                 *KnotInfoWdt = (UBYTE *)"Knot Information";
  78. UBYTE                 *ExpandedViewWdt = (UBYTE *)"ICoons";
  79. UBYTE                 *Scale_GroupWdt = (UBYTE *)"Scale group";
  80. UBYTE                 *Rotate_GroupWdt = (UBYTE *)"Rotate group";
  81. UBYTE                 *Move_GroupWdt = (UBYTE *)"Move group";
  82. UBYTE                 *ConfigWdt = (UBYTE *)"Configuration";
  83.  
  84. UBYTE         *Rotate_Group_Axis4Labels[] = {
  85.     (UBYTE *)"Rotate around X",
  86.     (UBYTE *)"Rotate around Y",
  87.     (UBYTE *)"Rotate around Z",
  88.     NULL };
  89.  
  90. struct TextAttr topaz8 = {
  91.     ( STRPTR )"topaz.font", 8, 0x00, 0x00 };
  92.  
  93. struct IntuiText  ConfigIText[] = {
  94.     11, 1, JAM2,186, 2, &topaz8, (UBYTE *)"   Configuration parameters:   ", &ConfigIText[1],
  95.     4, 0, JAM1,80, 13, &topaz8, (UBYTE *)"Grid :", &ConfigIText[2],
  96.     4, 0, JAM1,236, 13, &topaz8, (UBYTE *)"Graphics :", &ConfigIText[3],
  97.     4, 0, JAM1,410, 13, &topaz8, (UBYTE *)"Interaction :", NULL };
  98.  
  99. struct NewMenu MainNewMenu[] = {
  100.     NM_TITLE, (STRPTR)"Project", NULL, 0, 0L, NULL,
  101.     NM_ITEM, (STRPTR)"About ...", NULL, 0, 0L, NULL,
  102.     NM_ITEM, (STRPTR)"New", NULL, 0, 0L, NULL,
  103.     NM_ITEM, (STRPTR)"Load", NULL, 0, 0L, NULL,
  104.     NM_SUB, (STRPTR)"ICoons object", (STRPTR)"L", 0, 0L, NULL,
  105.     NM_SUB, (STRPTR)"JourneyMan object", NULL, 0, 0L, NULL,
  106.     NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, NULL,
  107.     NM_ITEM, (STRPTR)"Generate", NULL, 0, 0L, NULL,
  108.     NM_SUB, (STRPTR)"TTDDD format", NULL, 0, 0L, NULL,
  109.     NM_ITEM, (STRPTR)"Configuration", NULL, 0, 0L, NULL,
  110.     NM_SUB, (STRPTR)"Load  ", NULL, 0, 0L, NULL,
  111.     NM_SUB, (STRPTR)"Save  ", NULL, 0, 0L, NULL,
  112.     NM_SUB, (STRPTR)"Edit  ", NULL, 0, 0L, NULL,
  113.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, NULL,
  114.     NM_TITLE, (STRPTR)"Display", NULL, 0, 0L, NULL,
  115.     NM_ITEM, (STRPTR)"Zoom in", (STRPTR)"I", 0, 0L, NULL,
  116.     NM_ITEM, (STRPTR)"Zoom out", (STRPTR)"O", 0, 0L, NULL,
  117.     NM_ITEM, (STRPTR)"Center", (STRPTR)"C", 0, 0L, NULL,
  118.     NM_ITEM, (STRPTR)"Rotate P.", NULL, 0, 0L, NULL,
  119.     NM_ITEM, (STRPTR)"Pan        (p)", NULL, 0, 0L, NULL,
  120.     NM_ITEM, (STRPTR)"Grid", NULL, CHECKIT|MENUTOGGLE, 0L, NULL,
  121.     NM_ITEM, (STRPTR)"Grid snap", NULL, CHECKIT|MENUTOGGLE, 0L, NULL,
  122.     NM_ITEM, (STRPTR)"Resolution", NULL, 0, 0L, NULL,
  123.     NM_SUB, (STRPTR)"Up   (+)", NULL, 0, 0L, NULL,
  124.     NM_SUB, (STRPTR)"Down (-)", NULL, 0, 0L, NULL,
  125.     NM_ITEM, (STRPTR)"Redraw     ( )", NULL, 0, 0L, NULL,
  126.     NM_TITLE, (STRPTR)"Windows", NULL, 0, 0L, NULL,
  127.     NM_ITEM, (STRPTR)"Knot...", (STRPTR)"K", 0, 0L, NULL,
  128.     NM_ITEM, (STRPTR)"Scale...", (STRPTR)"Z", 0, 0L, NULL,
  129.     NM_ITEM, (STRPTR)"Rotate...", (STRPTR)"R", 0, 0L, NULL,
  130.     NM_ITEM, (STRPTR)"Move...", (STRPTR)"M", 0, 0L, NULL,
  131.     NM_TITLE, (STRPTR)"Render", NULL, 0, 0L, NULL,
  132.     NM_ITEM, (STRPTR)"Mode", NULL, 0, 8L, NULL,
  133.     NM_SUB, (STRPTR)"Line", NULL, CHECKIT, 14L, NULL,
  134.     NM_SUB, (STRPTR)"Flat", NULL, CHECKIT, 13L, NULL,
  135.     NM_SUB, (STRPTR)"Gouraud", NULL, CHECKIT|CHECKED, 11L, NULL,
  136.     NM_SUB, (STRPTR)"Phong", NULL, CHECKIT, 7L, NULL,
  137.     NM_ITEM, (STRPTR)"Render   (r)", NULL, 0, 0L, NULL,
  138.     NM_ITEM, (STRPTR)"Re-render(R)", NULL, 0, 0L, NULL,
  139.     NM_TITLE, (STRPTR)"Select", NULL, 0, 0L, NULL,
  140.     NM_ITEM, (STRPTR)"Group box    (g)", NULL, 0, 0L, NULL,
  141.     NM_ITEM, (STRPTR)"Group spline (,)", NULL, 0, 0L, NULL,
  142.     NM_ITEM, (STRPTR)"Group all    (.)", NULL, 0, 0L, NULL,
  143.     NM_ITEM, (STRPTR)"Group knot   (;)", NULL, 0, 0L, NULL,
  144.     NM_ITEM, (STRPTR)"Select next  (n)", NULL, 0, 0L, NULL,
  145.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  146.     NM_ITEM, (STRPTR)"Deselect all (Ret)", NULL, 0, 0L, NULL,
  147.     NM_TITLE, (STRPTR)"Commands", NULL, 0, 0L, NULL,
  148.     NM_ITEM, (STRPTR)"Add        (a)", NULL, 0, 0L, NULL,
  149.     NM_ITEM, (STRPTR)"Combine    (C)", NULL, 0, 0L, NULL,
  150.     NM_ITEM, (STRPTR)"Cut        (c)", NULL, 0, 0L, NULL,
  151.     NM_ITEM, (STRPTR)"Delete     (d)", NULL, 0, 0L, NULL,
  152.     NM_ITEM, (STRPTR)"Disconnect (D)", NULL, 0, 0L, NULL,
  153.     NM_ITEM, (STRPTR)"Hide       (h)", NULL, 0, 0L, NULL,
  154.     NM_ITEM, (STRPTR)"Move origin", NULL, 0, 0L, NULL,
  155.     NM_END, NULL, NULL, 0, 0L, NULL };
  156.  
  157. UWORD MainGTypes[] = {
  158.     BUTTON_KIND,
  159.     BUTTON_KIND,
  160.     BUTTON_KIND,
  161.     BUTTON_KIND,
  162.     BUTTON_KIND
  163. };
  164.  
  165. UWORD KnotInfoGTypes[] = {
  166.     BUTTON_KIND,
  167.     STRING_KIND,
  168.     BUTTON_KIND,
  169.     STRING_KIND,
  170.     BUTTON_KIND,
  171.     STRING_KIND,
  172.     NUMBER_KIND,
  173.     TEXT_KIND,
  174.     TEXT_KIND,
  175.     TEXT_KIND
  176. };
  177.  
  178. UWORD ExpandedViewGTypes[] = {
  179.     BUTTON_KIND,
  180.     BUTTON_KIND
  181. };
  182.  
  183. UWORD Scale_GroupGTypes[] = {
  184.     CHECKBOX_KIND,
  185.     CHECKBOX_KIND,
  186.     CHECKBOX_KIND,
  187.     BUTTON_KIND,
  188.     STRING_KIND
  189. };
  190.  
  191. UWORD Rotate_GroupGTypes[] = {
  192.     MX_KIND,
  193.     BUTTON_KIND,
  194.     STRING_KIND
  195. };
  196.  
  197. UWORD Move_GroupGTypes[] = {
  198.     STRING_KIND,
  199.     STRING_KIND,
  200.     STRING_KIND,
  201.     BUTTON_KIND
  202. };
  203.  
  204. UWORD ConfigGTypes[] = {
  205.     STRING_KIND,
  206.     STRING_KIND,
  207.     INTEGER_KIND,
  208.     INTEGER_KIND,
  209.     INTEGER_KIND,
  210.     INTEGER_KIND,
  211.     INTEGER_KIND,
  212.     INTEGER_KIND,
  213.     INTEGER_KIND,
  214.     BUTTON_KIND,
  215.     BUTTON_KIND,
  216.     INTEGER_KIND
  217. };
  218.  
  219. struct NewGadget MainNGad[] = {
  220.     0, 0, 17, 120, (UBYTE *)"Z", NULL, GD_G_Z_Expand, PLACETEXT_IN ,NULL, NULL,
  221.     0, 121, 17, 120, (UBYTE *)"Y", NULL, GD_G_Y_Expand, 0 ,NULL, NULL,
  222.     316, 0, 17, 104, (UBYTE *)"P", NULL, GD_G_Persp_Expand, PLACETEXT_IN ,NULL, NULL,
  223.     316, 121, 17, 120, (UBYTE *)"X", NULL, GD_G_X_Expand, 0 ,NULL, NULL,
  224.     316, 104, 17, 16, (UBYTE *)"R", NULL, GD_G_Persp_Rotate, PLACETEXT_IN ,NULL, NULL
  225. };
  226.  
  227. struct NewGadget KnotInfoNGad[] = {
  228.     16, 35, 117, 13, (UBYTE *)"Tension", NULL, GD_G_Tension, PLACETEXT_IN ,NULL, NULL,
  229.     144, 35, 93, 13, NULL, NULL, GD_G_Tension_Value, 0 ,NULL, NULL,
  230.     16, 51, 117, 13, (UBYTE *)"Bias", NULL, GD_G_Bias, PLACETEXT_IN ,NULL, NULL,
  231.     144, 51, 93, 13, NULL, NULL, GD_G_Bias_Value, 0 ,NULL, NULL,
  232.     16, 67, 117, 13, (UBYTE *)"Continuity", NULL, GD_G_Continuity, PLACETEXT_IN ,NULL, NULL,
  233.     144, 67, 93, 13, NULL, NULL, GD_G_Continuity_Value, 0 ,NULL, NULL,
  234.     120, 2, 57, 13, (UBYTE *)"Point", NULL, GD_G_Point_Id, PLACETEXT_LEFT ,NULL, NULL,
  235.     60, 17, 57, 13, (UBYTE *)"Pos. ", NULL, GD_G_Knot_Pos_X, PLACETEXT_LEFT ,NULL, NULL,
  236.     120, 17, 57, 13, NULL, NULL, GD_G_Knot_Pos_Y, 0 ,NULL, NULL,
  237.     180, 17, 57, 13, NULL, NULL, GD_G_Knot_Pos_Z, 0 ,NULL, NULL
  238. };
  239.  
  240. struct NewGadget ExpandedViewNGad[] = {
  241.     0, 0, 17, 212, (UBYTE *)"B", NULL, GD_G_Unexpand, PLACETEXT_IN ,NULL, NULL,
  242.     0, 212, 17, 30, (UBYTE *)"R", NULL, GD_G_Persp_Rotate_E, PLACETEXT_IN ,NULL, NULL
  243. };
  244.  
  245. struct NewGadget Scale_GroupNGad[] = {
  246.     123, 3, 26, 11, (UBYTE *)"Scale X", NULL, GD_Scale_Group_X, PLACETEXT_LEFT ,NULL, NULL,
  247.     123, 17, 26, 11, (UBYTE *)"Scale Y", NULL, GD_Scale_Group_Y, PLACETEXT_LEFT ,NULL, NULL,
  248.     123, 31, 26, 11, (UBYTE *)"Scale Z", NULL, GD_Scale_Group_Z, PLACETEXT_LEFT ,NULL, NULL,
  249.     4, 45, 133, 13, (UBYTE *)"Scale factor", NULL, GD_Scale_Group_Factor, PLACETEXT_IN ,NULL, NULL,
  250.     144, 45, 73, 13, NULL, NULL, GD_Scale_Group_Factor_Value, 0 ,NULL, NULL
  251. };
  252.  
  253. struct NewGadget Rotate_GroupNGad[] = {
  254.     164, 3, 17, 9, NULL, NULL, GD_Rotate_Group_Axis, PLACETEXT_LEFT ,NULL, NULL,
  255.     8, 45, 109, 13, (UBYTE *)"Angle", NULL, GD_Rotate_Group_Angle, PLACETEXT_IN ,NULL, NULL,
  256.     124, 45, 85, 13, NULL, NULL, GD_Rotate_Group_Angle_Value, 0 ,NULL, NULL
  257. };
  258.  
  259. struct NewGadget Move_GroupNGad[] = {
  260.     32, 3, 89, 13, (UBYTE *)"X", NULL, GD_Move_Group_X_Value, PLACETEXT_LEFT ,NULL, NULL,
  261.     32, 19, 89, 13, (UBYTE *)"Y", NULL, GD_Move_Group_Y_Value, PLACETEXT_LEFT ,NULL, NULL,
  262.     32, 35, 89, 13, (UBYTE *)"Z", NULL, GD_Move_Group_Z_Value, PLACETEXT_LEFT ,NULL, NULL,
  263.     12, 53, 109, 13, (UBYTE *)"Move", NULL, GD_Move_Group_Move, PLACETEXT_IN ,NULL, NULL
  264. };
  265.  
  266. struct NewGadget ConfigNGad[] = {
  267.     98, 25, 67, 14, (UBYTE *)"Grid size", NULL, GD_Grid_Size_Value, PLACETEXT_LEFT ,NULL, NULL,
  268.     464, 25, 71, 14, (UBYTE *)"Draw delay", NULL, GD_Delay_Draw_Value, PLACETEXT_LEFT ,NULL, NULL,
  269.     284, 25, 48, 14, (UBYTE *)"Spl. resol. ", NULL, GD_Spline_Resolution_Value, PLACETEXT_LEFT ,NULL, NULL,
  270.     464, 45, 48, 14, (UBYTE *)"Knot", NULL, GD_MQ_Size_KnotInfo_Value, PLACETEXT_LEFT ,NULL, NULL,
  271.     464, 66, 48, 14, (UBYTE *)"Rot. Persp.", NULL, GD_MQ_Size_Rotate_P_Value, PLACETEXT_LEFT ,NULL, NULL,
  272.     464, 87, 48, 14, (UBYTE *)"Rot. group ", NULL, GD_MQ_Size_Rotate_G_Value, PLACETEXT_LEFT ,NULL, NULL,
  273.     464, 108, 48, 14, (UBYTE *)"Scale group", NULL, GD_MQ_Size_Scale_G_Value, PLACETEXT_LEFT ,NULL, NULL,
  274.     464, 129, 48, 14, (UBYTE *)"Move group", NULL, GD_MQ_Size_Move_G_Value, PLACETEXT_LEFT ,NULL, NULL,
  275.     464, 150, 48, 14, (UBYTE *)"Move", NULL, GD_MQ_Size_Move_Value, PLACETEXT_LEFT ,NULL, NULL,
  276.     0, 169, 315, 15, (UBYTE *)"Ok", NULL, GD_Config_Ok, PLACETEXT_IN ,NULL, NULL,
  277.     317, 169, 315, 15, (UBYTE *)"Cancel", NULL, GD_Config_Cancel, PLACETEXT_IN ,NULL, NULL,
  278.     284, 46, 48, 14, (UBYTE *)"Patch resol.", NULL, GD_Patch_Resolution_Value, PLACETEXT_LEFT ,NULL, NULL
  279. };
  280.  
  281. ULONG MainGTags[] = {
  282.     (TAG_DONE),
  283.     (TAG_DONE),
  284.     (TAG_DONE),
  285.     (TAG_DONE),
  286.     (TAG_DONE)
  287. };
  288.  
  289. ULONG KnotInfoGTags[] = {
  290.     (TAG_DONE),
  291.     (GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
  292.     (TAG_DONE),
  293.     (GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
  294.     (TAG_DONE),
  295.     (GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
  296.     (GTNM_Number), -1, (GTNM_Border), TRUE, (TAG_DONE),
  297.     (GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE),
  298.     (GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE),
  299.     (GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE)
  300. };
  301.  
  302. ULONG ExpandedViewGTags[] = {
  303.     (TAG_DONE),
  304.     (TAG_DONE)
  305. };
  306.  
  307. ULONG Scale_GroupGTags[] = {
  308.     (GTCB_Checked), TRUE, (TAG_DONE),
  309.     (GTCB_Checked), TRUE, (TAG_DONE),
  310.     (GTCB_Checked), TRUE, (TAG_DONE),
  311.     (TAG_DONE),
  312.     (GTST_String), (ULONG)"1.0", (GTST_MaxChars), 10, (TAG_DONE)
  313. };
  314.  
  315. ULONG Rotate_GroupGTags[] = {
  316.     (GTMX_Labels), (ULONG)&Rotate_Group_Axis4Labels[ 0 ], (TAG_DONE),
  317.     (TAG_DONE),
  318.     (GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE)
  319. };
  320.  
  321. ULONG Move_GroupGTags[] = {
  322.     (GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
  323.     (GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
  324.     (GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
  325.     (TAG_DONE)
  326. };
  327.  
  328. ULONG ConfigGTags[] = {
  329.     (GTST_String), (ULONG)"20.0", (GTST_MaxChars), 10, (TAG_DONE),
  330.     (GTST_String), (ULONG)"0.5", (GTST_MaxChars), 10, (TAG_DONE),
  331.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  332.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  333.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  334.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  335.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  336.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
  337.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  338.     (TAG_DONE),
  339.     (TAG_DONE),
  340.     (GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE)
  341. };
  342.  
  343. struct ColorSpec  ScreenColors[] = {
  344.      0, 0x02, 0x02, 0x02,
  345.      1, 0x07, 0x07, 0x07,
  346.      2, 0x0A, 0x0A, 0x0A,
  347.      3, 0x06, 0x08, 0x0B,
  348.      4, 0x0F, 0x00, 0x00,
  349.      5, 0x0F, 0x0F, 0x00,
  350.      6, 0x00, 0x0F, 0x00,
  351.      7, 0x0D, 0x07, 0x06,
  352.      8, 0x0C, 0x05, 0x0C,
  353.      9, 0x0E, 0x05, 0x00,
  354.     10, 0x09, 0x0F, 0x01,
  355.     11, 0x0F, 0x0F, 0x06,
  356.     12, 0x05, 0x05, 0x0F,
  357.     13, 0x09, 0x02, 0x0F,
  358.     14, 0x00, 0x0F, 0x08,
  359.     15, 0x0C, 0x0C, 0x0C,
  360.     ~0, 0x00, 0x00, 0x00 };
  361.  
  362. UWORD             DriPens[] = {
  363.     2,3,11,2,1,3,5,1,4,~0 };
  364.  
  365. int SetupScreen( void )
  366. {
  367.     if ( ! ( Scr = OpenScreenTags( NULL, SA_Left,          0,
  368.                                          SA_Top,           0,
  369.                                          SA_Width,         640,
  370.                                          SA_Height,        256,
  371.                                          SA_Depth,         4,
  372.                                          SA_Colors,        &ScreenColors[0],
  373.                                          SA_Font,          &topaz8,
  374.                                          SA_Type,          CUSTOMSCREEN,
  375.                                          SA_DisplayID,     PAL_MONITOR_ID|HIRES_KEY,
  376.                                          SA_Pens,          &DriPens[0],
  377.                                          SA_Title,         "ICoons",
  378.                                          TAG_DONE )))
  379.         return( 1L );
  380.  
  381.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  382.         return( 2L );
  383.  
  384.     return( 0L );
  385. }
  386.  
  387. void CloseDownScreen( void )
  388. {
  389.     if ( VisualInfo ) {
  390.         FreeVisualInfo( VisualInfo );
  391.         VisualInfo = NULL;
  392.     }
  393.  
  394.     if ( Scr        ) {
  395.         CloseScreen( Scr );
  396.         Scr = NULL;
  397.     }
  398. }
  399.  
  400. void MainRender( void )
  401. {
  402.     UWORD        offx, offy;
  403.  
  404.     offx = MainWnd->BorderLeft;
  405.     offy = MainWnd->BorderTop;
  406.  
  407.  
  408.     DrawBevelBox( MainWnd->RPort, offx + 335, offy + 121, 296, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
  409.     DrawBevelBox( MainWnd->RPort, offx + 334, offy + 0, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
  410.     DrawBevelBox( MainWnd->RPort, offx + 18, offy + 0, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
  411.     DrawBevelBox( MainWnd->RPort, offx + 18, offy + 121, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
  412. }
  413.  
  414. int OpenMainWindow( void )
  415. {
  416.     struct NewGadget     ng;
  417.     struct Gadget       *g;
  418.     UWORD                lc, tc;
  419.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  420.  
  421.     if ( ! ( g = CreateContext( &MainGList )))
  422.         return( 1L );
  423.  
  424.     for( lc = 0, tc = 0; lc < Main_CNT; lc++ ) {
  425.  
  426.         CopyMem((char * )&MainNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  427.  
  428.         ng.ng_VisualInfo = VisualInfo;
  429.         ng.ng_TextAttr   = &topaz8;
  430.         ng.ng_LeftEdge  += offx;
  431.         ng.ng_TopEdge   += offy;
  432.  
  433.         MainGadgets[ lc ] = g = CreateGadgetA((ULONG)MainGTypes[ lc ], g, &ng, ( struct TagItem * )&MainGTags[ tc ] );
  434.  
  435.         while( MainGTags[ tc ] ) tc += 2;
  436.         tc++;
  437.  
  438.         if ( NOT g )
  439.         return( 2L );
  440.     }
  441.  
  442.     if ( ! ( MainMenus = CreateMenus( MainNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  443.         return( 3L );
  444.  
  445.     LayoutMenus( MainMenus, VisualInfo, GTMN_TextAttr, &topaz8, TAG_DONE );
  446.  
  447.     if ( ! ( MainWnd = OpenWindowTags( NULL,
  448.                     WA_Left,          MainLeft,
  449.                     WA_Top,           MainTop,
  450.                     WA_Width,         MainWidth,
  451.                     WA_Height,        MainHeight + offy,
  452.                     WA_IDCMP,         BUTTONIDCMP|IDCMP_GADGETDOWN|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  453.                     WA_Flags,         WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_REPORTMOUSE|WFLG_ACTIVATE,
  454.                     WA_Gadgets,       MainGList,
  455.                     WA_Title,         MainWdt,
  456.                     WA_ScreenTitle,   "ICoons",
  457.                     WA_CustomScreen,  Scr,
  458.                     TAG_DONE )))
  459.         return( 4L );
  460.  
  461.     SetMenuStrip( MainWnd, MainMenus );
  462.     GT_RefreshWindow( MainWnd, NULL );
  463.  
  464.     MainRender();
  465.  
  466.     return( 0L );
  467. }
  468.  
  469. void CloseMainWindow( void )
  470. {
  471.     if ( MainMenus      ) {
  472.         ClearMenuStrip( MainWnd );
  473.         FreeMenus( MainMenus );
  474.         MainMenus = NULL;    }
  475.  
  476.     if ( MainWnd        ) {
  477.         CloseWindow( MainWnd );
  478.         MainWnd = NULL;
  479.     }
  480.  
  481.     if ( MainGList      ) {
  482.         FreeGadgets( MainGList );
  483.         MainGList = NULL;
  484.     }
  485. }
  486.  
  487. int OpenKnotInfoWindow( void )
  488. {
  489.     struct NewGadget     ng;
  490.     struct Gadget       *g;
  491.     UWORD                lc, tc;
  492.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  493.  
  494.     if ( ! ( g = CreateContext( &KnotInfoGList )))
  495.         return( 1L );
  496.  
  497.     for( lc = 0, tc = 0; lc < KnotInfo_CNT; lc++ ) {
  498.  
  499.         CopyMem((char * )&KnotInfoNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  500.  
  501.         ng.ng_VisualInfo = VisualInfo;
  502.         ng.ng_TextAttr   = &topaz8;
  503.         ng.ng_LeftEdge  += offx;
  504.         ng.ng_TopEdge   += offy;
  505.  
  506.         KnotInfoGadgets[ lc ] = g = CreateGadgetA((ULONG)KnotInfoGTypes[ lc ], g, &ng, ( struct TagItem * )&KnotInfoGTags[ tc ] );
  507.  
  508.         while( KnotInfoGTags[ tc ] ) tc += 2;
  509.         tc++;
  510.  
  511.         if ( NOT g )
  512.         return( 2L );
  513.     }
  514.  
  515.     if ( ! ( KnotInfoWnd = OpenWindowTags( NULL,
  516.                     WA_Left,          KnotInfoLeft,
  517.                     WA_Top,           KnotInfoTop,
  518.                     WA_Width,         KnotInfoWidth,
  519.                     WA_Height,        KnotInfoHeight + offy,
  520.                     WA_IDCMP,         BUTTONIDCMP|STRINGIDCMP|NUMBERIDCMP|TEXTIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  521.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  522.                     WA_Gadgets,       KnotInfoGList,
  523.                     WA_Title,         KnotInfoWdt,
  524.                     WA_ScreenTitle,   "ICoons",
  525.                     WA_CustomScreen,  Scr,
  526.                     TAG_DONE )))
  527.         return( 4L );
  528.  
  529.     GT_RefreshWindow( KnotInfoWnd, NULL );
  530.  
  531.     return( 0L );
  532. }
  533.  
  534. void CloseKnotInfoWindow( void )
  535. {
  536.     if ( KnotInfoWnd        ) {
  537.         CloseWindow( KnotInfoWnd );
  538.         KnotInfoWnd = NULL;
  539.     }
  540.  
  541.     if ( KnotInfoGList      ) {
  542.         FreeGadgets( KnotInfoGList );
  543.         KnotInfoGList = NULL;
  544.     }
  545. }
  546.  
  547. int OpenExpandedViewWindow( void )
  548. {
  549.     struct NewGadget     ng;
  550.     struct Gadget       *g;
  551.     UWORD                lc, tc;
  552.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  553.  
  554.     if ( ! ( g = CreateContext( &ExpandedViewGList )))
  555.         return( 1L );
  556.  
  557.     for( lc = 0, tc = 0; lc < ExpandedView_CNT; lc++ ) {
  558.  
  559.         CopyMem((char * )&ExpandedViewNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  560.  
  561.         ng.ng_VisualInfo = VisualInfo;
  562.         ng.ng_TextAttr   = &topaz8;
  563.         ng.ng_LeftEdge  += offx;
  564.         ng.ng_TopEdge   += offy;
  565.  
  566.         ExpandedViewGadgets[ lc ] = g = CreateGadgetA((ULONG)ExpandedViewGTypes[ lc ], g, &ng, ( struct TagItem * )&ExpandedViewGTags[ tc ] );
  567.  
  568.         while( ExpandedViewGTags[ tc ] ) tc += 2;
  569.         tc++;
  570.  
  571.         if ( NOT g )
  572.         return( 2L );
  573.     }
  574.  
  575.     if ( ! ( ExpandedViewWnd = OpenWindowTags( NULL,
  576.                     WA_Left,          ExpandedViewLeft,
  577.                     WA_Top,           ExpandedViewTop,
  578.                     WA_Width,         ExpandedViewWidth,
  579.                     WA_Height,        ExpandedViewHeight + offy,
  580.                     WA_IDCMP,         BUTTONIDCMP|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  581.                     WA_Flags,         WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_REPORTMOUSE|WFLG_ACTIVATE,
  582.                     WA_Gadgets,       ExpandedViewGList,
  583.                     WA_Title,         ExpandedViewWdt,
  584.                     WA_ScreenTitle,   "ICoons",
  585.                     WA_CustomScreen,  Scr,
  586.                     TAG_DONE )))
  587.         return( 4L );
  588.  
  589.     GT_RefreshWindow( ExpandedViewWnd, NULL );
  590.  
  591.     return( 0L );
  592. }
  593.  
  594. void CloseExpandedViewWindow( void )
  595. {
  596.     if ( ExpandedViewWnd        ) {
  597.         CloseWindow( ExpandedViewWnd );
  598.         ExpandedViewWnd = NULL;
  599.     }
  600.  
  601.     if ( ExpandedViewGList      ) {
  602.         FreeGadgets( ExpandedViewGList );
  603.         ExpandedViewGList = NULL;
  604.     }
  605. }
  606.  
  607. int OpenScale_GroupWindow( void )
  608. {
  609.     struct NewGadget     ng;
  610.     struct Gadget       *g;
  611.     UWORD                lc, tc;
  612.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  613.  
  614.     if ( ! ( g = CreateContext( &Scale_GroupGList )))
  615.         return( 1L );
  616.  
  617.     for( lc = 0, tc = 0; lc < Scale_Group_CNT; lc++ ) {
  618.  
  619.         CopyMem((char * )&Scale_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  620.  
  621.         ng.ng_VisualInfo = VisualInfo;
  622.         ng.ng_TextAttr   = &topaz8;
  623.         ng.ng_LeftEdge  += offx;
  624.         ng.ng_TopEdge   += offy;
  625.  
  626.         Scale_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Scale_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Scale_GroupGTags[ tc ] );
  627.  
  628.         while( Scale_GroupGTags[ tc ] ) tc += 2;
  629.         tc++;
  630.  
  631.         if ( NOT g )
  632.         return( 2L );
  633.     }
  634.  
  635.     if ( ! ( Scale_GroupWnd = OpenWindowTags( NULL,
  636.                     WA_Left,          Scale_GroupLeft,
  637.                     WA_Top,           Scale_GroupTop,
  638.                     WA_Width,         Scale_GroupWidth,
  639.                     WA_Height,        Scale_GroupHeight + offy,
  640.                     WA_IDCMP,         CHECKBOXIDCMP|BUTTONIDCMP|STRINGIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  641.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  642.                     WA_Gadgets,       Scale_GroupGList,
  643.                     WA_Title,         Scale_GroupWdt,
  644.                     WA_ScreenTitle,   "ICoons",
  645.                     WA_CustomScreen,  Scr,
  646.                     TAG_DONE )))
  647.         return( 4L );
  648.  
  649.     GT_RefreshWindow( Scale_GroupWnd, NULL );
  650.  
  651.     return( 0L );
  652. }
  653.  
  654. void CloseScale_GroupWindow( void )
  655. {
  656.     if ( Scale_GroupWnd        ) {
  657.         CloseWindow( Scale_GroupWnd );
  658.         Scale_GroupWnd = NULL;
  659.     }
  660.  
  661.     if ( Scale_GroupGList      ) {
  662.         FreeGadgets( Scale_GroupGList );
  663.         Scale_GroupGList = NULL;
  664.     }
  665. }
  666.  
  667. int OpenRotate_GroupWindow( void )
  668. {
  669.     struct NewGadget     ng;
  670.     struct Gadget       *g;
  671.     UWORD                lc, tc;
  672.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  673.  
  674.     if ( ! ( g = CreateContext( &Rotate_GroupGList )))
  675.         return( 1L );
  676.  
  677.     for( lc = 0, tc = 0; lc < Rotate_Group_CNT; lc++ ) {
  678.  
  679.         CopyMem((char * )&Rotate_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  680.  
  681.         ng.ng_VisualInfo = VisualInfo;
  682.         ng.ng_TextAttr   = &topaz8;
  683.         ng.ng_LeftEdge  += offx;
  684.         ng.ng_TopEdge   += offy;
  685.  
  686.         Rotate_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Rotate_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Rotate_GroupGTags[ tc ] );
  687.  
  688.         while( Rotate_GroupGTags[ tc ] ) tc += 2;
  689.         tc++;
  690.  
  691.         if ( NOT g )
  692.         return( 2L );
  693.     }
  694.  
  695.     if ( ! ( Rotate_GroupWnd = OpenWindowTags( NULL,
  696.                     WA_Left,          Rotate_GroupLeft,
  697.                     WA_Top,           Rotate_GroupTop,
  698.                     WA_Width,         Rotate_GroupWidth,
  699.                     WA_Height,        Rotate_GroupHeight + offy,
  700.                     WA_IDCMP,         MXIDCMP|BUTTONIDCMP|STRINGIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  701.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  702.                     WA_Gadgets,       Rotate_GroupGList,
  703.                     WA_Title,         Rotate_GroupWdt,
  704.                     WA_ScreenTitle,   "ICoons",
  705.                     WA_CustomScreen,  Scr,
  706.                     TAG_DONE )))
  707.         return( 4L );
  708.  
  709.     GT_RefreshWindow( Rotate_GroupWnd, NULL );
  710.  
  711.     return( 0L );
  712. }
  713.  
  714. void CloseRotate_GroupWindow( void )
  715. {
  716.     if ( Rotate_GroupWnd        ) {
  717.         CloseWindow( Rotate_GroupWnd );
  718.         Rotate_GroupWnd = NULL;
  719.     }
  720.  
  721.     if ( Rotate_GroupGList      ) {
  722.         FreeGadgets( Rotate_GroupGList );
  723.         Rotate_GroupGList = NULL;
  724.     }
  725. }
  726.  
  727. int OpenMove_GroupWindow( void )
  728. {
  729.     struct NewGadget     ng;
  730.     struct Gadget       *g;
  731.     UWORD                lc, tc;
  732.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  733.  
  734.     if ( ! ( g = CreateContext( &Move_GroupGList )))
  735.         return( 1L );
  736.  
  737.     for( lc = 0, tc = 0; lc < Move_Group_CNT; lc++ ) {
  738.  
  739.         CopyMem((char * )&Move_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  740.  
  741.         ng.ng_VisualInfo = VisualInfo;
  742.         ng.ng_TextAttr   = &topaz8;
  743.         ng.ng_LeftEdge  += offx;
  744.         ng.ng_TopEdge   += offy;
  745.  
  746.         Move_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Move_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Move_GroupGTags[ tc ] );
  747.  
  748.         while( Move_GroupGTags[ tc ] ) tc += 2;
  749.         tc++;
  750.  
  751.         if ( NOT g )
  752.         return( 2L );
  753.     }
  754.  
  755.     if ( ! ( Move_GroupWnd = OpenWindowTags( NULL,
  756.                     WA_Left,          Move_GroupLeft,
  757.                     WA_Top,           Move_GroupTop,
  758.                     WA_Width,         Move_GroupWidth,
  759.                     WA_Height,        Move_GroupHeight + offy,
  760.                     WA_IDCMP,         STRINGIDCMP|BUTTONIDCMP|IDCMP_GADGETDOWN|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  761.                     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  762.                     WA_Gadgets,       Move_GroupGList,
  763.                     WA_Title,         Move_GroupWdt,
  764.                     WA_ScreenTitle,   "ICoons",
  765.                     WA_CustomScreen,  Scr,
  766.                     TAG_DONE )))
  767.         return( 4L );
  768.  
  769.     GT_RefreshWindow( Move_GroupWnd, NULL );
  770.  
  771.     return( 0L );
  772. }
  773.  
  774. void CloseMove_GroupWindow( void )
  775. {
  776.     if ( Move_GroupWnd        ) {
  777.         CloseWindow( Move_GroupWnd );
  778.         Move_GroupWnd = NULL;
  779.     }
  780.  
  781.     if ( Move_GroupGList      ) {
  782.         FreeGadgets( Move_GroupGList );
  783.         Move_GroupGList = NULL;
  784.     }
  785. }
  786.  
  787. void ConfigRender( void )
  788. {
  789.     UWORD        offx, offy;
  790.  
  791.     offx = ConfigWnd->BorderLeft;
  792.     offy = ConfigWnd->BorderTop;
  793.  
  794.     PrintIText( ConfigWnd->RPort, ConfigIText, offx, offy );
  795.  
  796.     DrawBevelBox( ConfigWnd->RPort, offx + 184, offy + 1, 250, 10, GT_VisualInfo, VisualInfo, TAG_DONE );
  797. }
  798.  
  799. int OpenConfigWindow( void )
  800. {
  801.     struct NewGadget     ng;
  802.     struct Gadget       *g;
  803.     UWORD                lc, tc;
  804.     UWORD                offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  805.  
  806.     if ( ! ( g = CreateContext( &ConfigGList )))
  807.         return( 1L );
  808.  
  809.     for( lc = 0, tc = 0; lc < Config_CNT; lc++ ) {
  810.  
  811.         CopyMem((char * )&ConfigNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  812.  
  813.         ng.ng_VisualInfo = VisualInfo;
  814.         ng.ng_TextAttr   = &topaz8;
  815.         ng.ng_LeftEdge  += offx;
  816.         ng.ng_TopEdge   += offy;
  817.  
  818.         ConfigGadgets[ lc ] = g = CreateGadgetA((ULONG)ConfigGTypes[ lc ], g, &ng, ( struct TagItem * )&ConfigGTags[ tc ] );
  819.  
  820.         while( ConfigGTags[ tc ] ) tc += 2;
  821.         tc++;
  822.  
  823.         if ( NOT g )
  824.         return( 2L );
  825.     }
  826.  
  827.     if ( ! ( ConfigWnd = OpenWindowTags( NULL,
  828.                     WA_Left,          ConfigLeft,
  829.                     WA_Top,           ConfigTop,
  830.                     WA_Width,         ConfigWidth,
  831.                     WA_Height,        ConfigHeight + offy,
  832.                     WA_IDCMP,         STRINGIDCMP|INTEGERIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  833.                     WA_Flags,         WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  834.                     WA_Gadgets,       ConfigGList,
  835.                     WA_Title,         ConfigWdt,
  836.                     WA_ScreenTitle,   "ICoons",
  837.                     WA_CustomScreen,  Scr,
  838.                     TAG_DONE )))
  839.         return( 4L );
  840.  
  841.     GT_RefreshWindow( ConfigWnd, NULL );
  842.  
  843.     ConfigRender();
  844.  
  845.     return( 0L );
  846. }
  847.  
  848. void CloseConfigWindow( void )
  849. {
  850.     if ( ConfigWnd        ) {
  851.         CloseWindow( ConfigWnd );
  852.         ConfigWnd = NULL;
  853.     }
  854.  
  855.     if ( ConfigGList      ) {
  856.         FreeGadgets( ConfigGList );
  857.         ConfigGList = NULL;
  858.     }
  859. }
  860.  
  861.