home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / dev / visualarts-1.0.lha / VisualArts-1.0 / Demo / Source / Basic.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-09  |  9.9 KB  |  332 lines

  1. /* ******************************************************************** */
  2. /* C code generated by:                            */
  3. /* Visual Arts Version 1.0                        */
  4. /* Copyright 1994 Danny Y. Wong  All rights reserved            */
  5. /* Calgary, Alberta (CANADA)                                    */
  6. /* Partial of the code is copyright by Jaba Development            */
  7. /* ******************************************************************** */
  8.  
  9. #include <exec/types.h>
  10. #include <exec/memory.h>
  11. #include <exec/lists.h>
  12. #include <exec/nodes.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <graphics/gfxmacros.h>
  18. #include <libraries/gadtools.h>
  19. #include <libraries/dos.h>
  20. #include <libraries/asl.h>
  21.  
  22. #include <clib/exec_protos.h>
  23. #include <clib/intuition_protos.h>
  24. #include <clib/gadtools_protos.h>
  25. #include <clib/graphics_protos.h>
  26. #include <clib/utility_protos.h>
  27. #include <clib/alib_protos.h>
  28. #include <clib/dos_protos.h>
  29. #include <clib/asl_protos.h>
  30. #include "string.h" 
  31.  
  32. #define ID_button                                     0
  33. #define ID_button1                                    1
  34. #define ID_string                                     2
  35. #define ID_integer                                    3
  36. #define ID_check                                      4
  37. #define ID_mxmodel                                    5
  38. #define ID_cycle                                      6
  39. #define ID_slider                                     7
  40. #define ID_scroller                                   8
  41. #define ID_scroller1                                  9
  42. #define ID_modellist                                  10
  43. #define ID_color                                      11
  44. #define ID_text                                       12
  45. #define ID_number                                     13
  46.  
  47. #define BasicNumGads            14
  48. #include "Basic.h" 
  49.  
  50. int buttonObj(struct VAobject VAObject);
  51. int button1Obj(struct VAobject VAObject);
  52. int stringObj(struct VAobject VAObject);
  53. int integerObj(struct VAobject VAObject);
  54. int checkObj(struct VAobject VAObject);
  55. int mxmodelObj(struct VAobject VAObject);
  56. int cycleObj(struct VAobject VAObject);
  57. int sliderObj(struct VAobject VAObject);
  58. int scrollerObj(struct VAobject VAObject);
  59. int scroller1Obj(struct VAobject VAObject);
  60. int modellistObj(struct VAobject VAObject);
  61. int colorObj(struct VAobject VAObject);
  62.  
  63. int GetPubScreen(void);
  64. void ClosePubScreen(void);
  65. int OpenBasicWindow(char windtitle[80]);
  66. void CloseBasicWindow(void);
  67. int BasicHandler(void);
  68. int BasicMainHandler(void);
  69. void DrawBasicObjs(void);
  70. int main(int argc, char *argv[]);
  71.  
  72. UBYTE                *PubScrName = NULL;
  73. APTR                 VisualInfo = NULL;
  74. struct Screen            *Scr = NULL;
  75. struct Window            *BasicWnd = NULL;
  76. struct Gadget            *BasicGList = NULL;
  77. struct Gadget            *BasicGadgets[14];
  78. struct IntuiMessage         BasicMsg;
  79. UWORD                 BasicLeft = 34;
  80. UWORD                 BasicTop = 22;
  81. UWORD                 BasicWidth = 559;
  82. UWORD                 BasicHeight = 136;
  83. struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
  84. struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
  85.  
  86. UBYTE *modelsLabels[] = {
  87.     (UBYTE *)"Amiga 500", 
  88.     (UBYTE *)"Amiga 600", 
  89.     (UBYTE *)"Amiga 1000", 
  90.     (UBYTE *)"Amiga 1200", 
  91.     (UBYTE *)"Amiga 2000", 
  92.     (UBYTE *)"Amiga 2500", 
  93.     (UBYTE *)"Amiga 2500HD", 
  94.     (UBYTE *)"Amiga 3000", 
  95.     (UBYTE *)"Amiga 4000", 
  96.     (UBYTE *)"Amiga CDTV", 
  97.     (UBYTE *)"Amiga CD32", 
  98.     (UBYTE *)"Amiga 4000T", 
  99.     NULL
  100. };
  101.  
  102. WORD BasicGadTypes[] = {
  103.     BUTTON_KIND,
  104.     BUTTON_KIND,
  105.     STRING_KIND,
  106.     INTEGER_KIND,
  107.     CHECKBOX_KIND,
  108.     MX_KIND,
  109.     CYCLE_KIND,
  110.     SLIDER_KIND,
  111.     SCROLLER_KIND,
  112.     SCROLLER_KIND,
  113.     LISTVIEW_KIND,
  114.     PALETTE_KIND,
  115.     TEXT_KIND,
  116.     TEXT_KIND,
  117. };
  118.  
  119. struct NewGadget BasicNGads[] = {
  120.     6, 2, 105, 13, (UBYTE *)"Button",&topaz800, ID_button, PLACETEXT_IN, NULL, (APTR)buttonObj,
  121.     113, 2, 108, 13, (UBYTE *)"Toggle Button",&topaz800, ID_button1, PLACETEXT_IN, NULL, (APTR)button1Obj,
  122.     289, 13, 125, 12, (UBYTE *)"Name", &topaz800, ID_string, PLACETEXT_LEFT, NULL, (APTR)stringObj,
  123.     289, 26, 124, 12, (UBYTE *)"Version", &topaz800, ID_integer, PLACETEXT_LEFT, NULL, (APTR)integerObj,
  124.     289, 1, 26, 11, (UBYTE *)"Visual Arts", &topaz800, ID_check, PLACETEXT_RIGHT, NULL, (APTR)checkObj,
  125.     426, 2, 17, 118, (UBYTE *)"model", &topaz800, ID_mxmodel, PLACETEXT_RIGHT, NULL, (APTR)mxmodelObj,
  126.     269, 66, 148, 14, (UBYTE *)"Models", &topaz800, ID_cycle, PLACETEXT_LEFT, NULL, (APTR)cycleObj,
  127.     109, 111, 310, 10, (UBYTE *)"Slider   ", &topaz800, ID_slider, PLACETEXT_LEFT, NULL, (APTR)sliderObj,
  128.     175, 65, 20, 42, (UBYTE *)"", &topaz800, ID_scroller, PLACETEXT_RIGHT, NULL, (APTR)scrollerObj,
  129.     7, 97, 164, 10, (UBYTE *)"", &topaz800, ID_scroller1, PLACETEXT_LEFT, NULL, (APTR)scroller1Obj,
  130.     7, 16, 211, 44, (UBYTE *)"", &topaz800, ID_modellist, PLACETEXT_ABOVE, NULL, (APTR)modellistObj,
  131.     291, 40, 124, 24, (UBYTE *)"", &topaz800, ID_color, PLACETEXT_ABOVE, NULL, (APTR)colorObj,
  132.     270, 82, 147, 12, (UBYTE *)"Text", &topaz800, ID_text, PLACETEXT_LEFT, NULL, NULL,
  133.     270, 97, 147, 13, (UBYTE *)"Version", &topaz800, ID_number, PLACETEXT_LEFT, NULL, NULL,
  134. };
  135.  
  136. ULONG BasicNTags[] = {
  137.     TAG_DONE,
  138.     TAG_DONE,
  139.     (GTST_String), (ULONG)"Visual Arts", GTST_MaxChars, 40, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE,
  140.     (GTIN_Number), (ULONG)1, (GTIN_MaxChars), 10, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE,
  141.     (GTCB_Checked), TRUE, TAG_DONE,
  142.     (GTMX_Labels), (ULONG)&modelsLabels[0], (GTMX_Active), 4, (GTMX_Spacing), 2, TAG_DONE,
  143.     (GTCY_Labels), (ULONG)&modelsLabels[0], (GTCY_Active), 0, TAG_DONE,
  144.     (GTSL_Min), 20, (GTSL_Max), 100, (GTSL_Level), 20, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_MaxLevelLen), 0, (GTSL_LevelPlace), PLACETEXT_LEFT, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_HORIZ, TAG_DONE,
  145.     (GTSC_Top), -20, (GTSC_Total), 30, (GTSC_Visible), 10, (GTSC_Arrows), 8, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_VERT, TAG_DONE,
  146.     (GTSC_Top), 0, (GTSC_Total), 40, (GTSC_Visible), 10, (GTSC_Arrows), 16, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_HORIZ, TAG_DONE,
  147.     (GTLV_Labels), NULL, (GTLV_Top), 0, (GTLV_ScrollWidth), 16, (GTLV_ShowSelected), NULL, (LAYOUTA_Spacing), 0, TAG_DONE,
  148.     (GTPA_Depth), 2, (GTPA_Color), 1, (GTPA_ColorOffset), 0, (GTPA_IndicatorWidth), 20, TAG_DONE,
  149.     (GTTX_Text),(ULONG)"Visual Arts", (GTTX_Border), TRUE, TAG_DONE,
  150.     (GTTX_Text),(ULONG)"1", (GTTX_Border), TRUE, TAG_DONE,
  151. };
  152.  
  153.  
  154. int GetPubScreen(void)
  155. {
  156.   if (!(Scr = LockPubScreen(PubScrName)))
  157.     return(1L);
  158.  
  159.   if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
  160.     return(2L);
  161.   return(0L);
  162. }
  163.  
  164. void ClosePubScreen(void)
  165. {
  166.   if (VisualInfo)
  167.     FreeVisualInfo(VisualInfo);
  168.   if (Scr)
  169.     UnlockPubScreen(NULL,  Scr);
  170. }
  171.  
  172. int OpenBasicWindow(char windtitle[80])
  173. {
  174.   struct NewGadget    NewGad;
  175.   struct Gadget       *Gad;
  176.   register UWORD i, j;
  177.   UWORD offsetx = Scr->WBorLeft;
  178.   UWORD offsety = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  179.  
  180.   if (!(Gad = CreateContext(&BasicGList)))
  181.       return(1L);
  182.  
  183.   for (i=0, j=0; i < BasicNumGads; i++)
  184.   {
  185.     CopyMem((char *)&BasicNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
  186.  
  187.     NewGad.ng_VisualInfo = VisualInfo;
  188.     NewGad.ng_LeftEdge += offsetx;
  189.     NewGad.ng_TopEdge  += offsety;
  190.  
  191.     BasicGadgets[i] = Gad = CreateGadgetA((ULONG)BasicGadTypes[i], Gad,&NewGad,
  192.     (struct TagItem *)&BasicNTags[j]);
  193.     while (BasicNTags[j])
  194.         j +=2;
  195.     j++;
  196.     if (!Gad)
  197.        return(2L);
  198.   }
  199.   BasicGadgets[1]->Activation |= GACT_TOGGLESELECT;
  200.   if (!(BasicWnd = OpenWindowTags(NULL,
  201.       WA_Left,    BasicLeft,
  202.       WA_Top,     BasicTop,
  203.       WA_Width,    BasicWidth,
  204.       WA_Height,    BasicHeight - Scr->WBorTop,
  205.       WA_IDCMP,    IDCMP_CLOSEWINDOW |  IDCMP_NEWSIZE | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_REFRESHWINDOW | IDCMP_INTUITICKS ,
  206.       WA_Flags,    WFLG_CLOSEGADGET | WFLG_DEPTHGADGET  |  WFLG_SMART_REFRESH |  WFLG_RMBTRAP |  WFLG_ACTIVATE |  WFLG_DRAGBAR ,
  207.       WA_Gadgets,    BasicGList,
  208.       WA_Title,    windtitle,
  209.       WA_ScreenTitle,    "Visual Arts V1.0 Copyright 1994 Danny Y. Wong  All Rights Reserved.",
  210.       WA_PubScreen,    Scr,
  211.       WA_MinWidth,    20,
  212.       WA_MinHeight,    10,
  213.       WA_MaxWidth,    640,
  214.       WA_MaxHeight,    200,
  215.       TAG_DONE)))
  216.           return(3L);
  217.  
  218.   DrawBasicObjs();
  219.   GT_RefreshWindow(BasicWnd, NULL);
  220.   CreateBasicLists();
  221.   GT_SetGadgetAttrs(BasicGadgets[10], BasicWnd, NULL,
  222.      GTLV_Labels, BasicLists[0], TAG_END);
  223.   RefreshGadgets(BasicGadgets[0], BasicWnd, NULL);
  224.   return(0L);
  225. }
  226.  
  227. void CloseBasicWindow(void)
  228. {
  229.   if (BasicWnd)
  230.     CloseWindow(BasicWnd);
  231.   if (BasicGList)
  232.     FreeGadgets(BasicGList);
  233. }
  234.  
  235. int BasicHandler(void)
  236. {
  237.   struct IntuiMessage    *msg;
  238.   struct VAobject    VAObject;
  239.   int running    = 1;
  240.   int (*func)(struct VAobject VAObject);
  241.   ULONG class;
  242.   UWORD code;
  243.  
  244.   while (msg=GT_GetIMsg(BasicWnd->UserPort))
  245.   {
  246.     CopyMem((char *)msg, (char *)&BasicMsg, (long)sizeof(struct IntuiMessage));
  247.     class = msg->Class;
  248.     code  = msg->Code;
  249.  
  250.     GT_ReplyIMsg(msg);
  251.     switch(class)
  252.     {
  253.  
  254.       case IDCMP_MOUSEBUTTONS :
  255.         break;
  256.  
  257.       case IDCMP_MOUSEMOVE :
  258.         break;
  259.  
  260.       case IDCMP_GADGETDOWN :
  261.         break;
  262.  
  263.       case IDCMP_INTUITICKS :
  264.         break;
  265.  
  266.       case IDCMP_REFRESHWINDOW:
  267.         GT_BeginRefresh(BasicWnd);
  268.         DrawBasicObjs();
  269.         GT_EndRefresh(BasicWnd, NULL);
  270.         break;
  271.  
  272.       case IDCMP_CLOSEWINDOW:
  273.          return(0);
  274.          break;
  275.  
  276.       case IDCMP_GADGETUP:
  277.         VAObject.va_Window = (struct Window *)BasicWnd;
  278.         VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
  279.         VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
  280.         VAObject.va_Flags = 0;
  281.         VAObject.va_UserData = 0;
  282.         func = (void *)((struct Gadget *)BasicMsg.IAddress)->UserData;
  283.         running =  func(VAObject);
  284.         break;
  285.  
  286.     }
  287.   }
  288.   return(running);
  289. }
  290.  
  291. void DrawBasicObjs(void)
  292. {
  293.   BasicDrawRects(BasicWnd);
  294.  
  295. }
  296.  
  297. int BasicMainHandler(void)
  298. {
  299.   int running = 1;
  300.   ULONG windsig, signals;
  301.  
  302.   while (running == 1)
  303.   {
  304.     windsig = 1L << BasicWnd->UserPort->mp_SigBit;
  305.     signals = Wait( windsig );
  306.     if (signals & windsig)
  307.     {
  308.       running = BasicHandler();
  309.     }
  310.   }
  311.   return(running);
  312. }
  313.  
  314. int main(int argc, char *argv[])
  315. {
  316.   int rc;
  317.  
  318.   if (!(GetPubScreen()))
  319.   {
  320.     for (rc=0; rc < 1; rc++)
  321.       BasicLists[rc]=GetNewList();
  322.     if (!(OpenBasicWindow("Basic Demo")))
  323.     {
  324.       rc = BasicMainHandler();
  325.       CloseBasicWindow();
  326.     }
  327.     for (rc=0; rc < 1; rc++)
  328.       FreeList(BasicLists[rc]);
  329.     ClosePubScreen();
  330.   }
  331. }
  332.