home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 269.lha / MelaniePaint_v.60 / sources / windows.c < prev    next >
C/C++ Source or Header  |  1989-07-16  |  12KB  |  411 lines

  1. /*============================================================================*/
  2. /* Windows.c: By Kevin T. Seghetti                          */
  3. /*============================================================================*/
  4.  
  5. #include "equates.h"
  6. #include <functions.h>
  7. #include <exec/types.h>
  8. #include <intuition/intuition.h>
  9.  
  10. #include <graphics/gfx.h>
  11.  
  12. extern struct Gadget *CreateTextGadgets(),*CreateInvisibleGadgets(),*CreatePropGadget(),*CreateIntGadget(),*CreateTextGadget();
  13. extern struct Remember *MenuRemember,*ToolRemember,*PaletteRemember,*HistRemember,*CoordRemember;
  14. extern struct Window *MPaintWindow,*ToolWindow,*PaletteWindow,*HistWindow,*CoordWindow;
  15. extern struct IntuitionBase *IntuitionBase;
  16. extern struct GfxBase *GfxBase;
  17. extern struct Screen *MPaintScreen;
  18. extern long ForeColor,BackColor,OutlineColor,DrawMode;
  19. extern int MaxColor;
  20. extern struct Menu *MPaintMenu;
  21. extern SHORT PaintWidth,PaintHeight;
  22. extern FLAG Grid,ValidFileName,ChoosingBackColor,PatternOn;
  23. extern struct IntuiText *CreateIntuiText();
  24.  
  25. struct IntuiText *CoordIntuiText;
  26. char Crd[20];
  27.  
  28. /*============================================================================*/
  29.  
  30. struct NewWindow NewPaintWindow =
  31. {
  32.     0,0,320,200,        /* leftedge, topedge, width, height */
  33.     0,1,            /* DetailPen, BlockPen */
  34.     CLOSEWINDOW|MOUSEBUTTONS|MENUPICK|MOUSEMOVE,  /* IDCMP flags */
  35.     SMART_REFRESH|BACKDROP|BORDERLESS|ACTIVATE|REPORTMOUSE,   /* Flags */
  36.     NULL,            /* Gadget List */
  37.     NULL,            /* checkmark pointer */
  38.     NULL,        /* window title */
  39.     NULL,            /* screen pointer */
  40.     NULL,            /* bitmap pointer */
  41.     20,20,            /* minwidth, minheight */
  42.     320,200,            /* maxwidth, maxheight */
  43.     CUSTOMSCREEN
  44. };
  45.  
  46. /*============================================================================*/
  47.  
  48. struct NewWindow NewToolWindow =
  49. {
  50.     200,60,100,137,           /* leftedge, topedge, width, height */
  51.     0,1,            /* DetailPen, BlockPen */
  52.     CLOSEWINDOW|MENUPICK|GADGETUP|MOUSEMOVE,           /* IDCMP flags */
  53.     WINDOWDRAG|SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|REPORTMOUSE,        /* Flags */
  54.     NULL,            /* Gadget List */
  55.     NULL,            /* checkmark pointer */
  56.     (UBYTE *)"Tools",               /* window title */
  57.     NULL,            /* screen pointer */
  58.     NULL,            /* bitmap pointer */
  59.     100,124,              /* minwidth, minheight */
  60.     100,124,            /* maxwidth, maxheight */
  61.     CUSTOMSCREEN
  62. };
  63.  
  64. /*============================================================================*/
  65.  
  66. struct NewWindow NewPaletteWindow =
  67. {
  68.     100,60,100,104,           /* leftedge, topedge, width, height */
  69.     0,1,            /* DetailPen, BlockPen */
  70.     CLOSEWINDOW|MENUPICK|GADGETDOWN|GADGETUP|MOUSEMOVE,           /* IDCMP flags */
  71.     WINDOWDRAG|SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|REPORTMOUSE,        /* Flags */
  72.     NULL,            /* Gadget List */
  73.     NULL,            /* checkmark pointer */
  74.     (UBYTE *)"Palette",               /* window title */
  75.     NULL,            /* screen pointer */
  76.     NULL,            /* bitmap pointer */
  77.     100,104,              /* minwidth, minheight */
  78.     100,104,            /* maxwidth, maxheight */
  79.     CUSTOMSCREEN
  80. };
  81.  
  82. /*============================================================================*/
  83.  
  84. struct NewWindow NewHistWindow =
  85. {
  86.     50,20,230,124,          /* leftedge, topedge, width, height */
  87.     0,1,            /* DetailPen, BlockPen */
  88.     CLOSEWINDOW|MENUPICK|GADGETDOWN|GADGETUP|MOUSEMOVE,           /* IDCMP flags */
  89.     WINDOWDRAG|SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|REPORTMOUSE,        /* Flags */
  90.     NULL,            /* Gadget List */
  91.     NULL,            /* checkmark pointer */
  92.     (UBYTE *)"Histogram",               /* window title */
  93.     NULL,            /* screen pointer */
  94.     NULL,            /* bitmap pointer */
  95.     200,104,              /* minwidth, minheight */
  96.     200,104,            /* maxwidth, maxheight */
  97.     CUSTOMSCREEN
  98. };
  99.  
  100. /*============================================================================*/
  101.  
  102. struct NewWindow NewCoordWindow =
  103. {
  104.     10,40,85,50,        /* leftedge, topedge, width, height */
  105.     0,1,            /* DetailPen, BlockPen */
  106.     CLOSEWINDOW|MENUPICK|GADGETUP|MOUSEMOVE,           /* IDCMP flags */
  107.     WINDOWDRAG|SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|REPORTMOUSE,        /* Flags */
  108.     NULL,            /* Gadget List */
  109.     NULL,            /* checkmark pointer */
  110.     (UBYTE *)"Coords",               /* window title */
  111.     NULL,            /* screen pointer */
  112.     NULL,            /* bitmap pointer */
  113.     85,50,            /* minwidth, minheight */
  114.     85,50,          /* maxwidth, maxheight */
  115.     CUSTOMSCREEN
  116. };
  117.  
  118. /*============================================================================*/
  119.  
  120. void
  121. InitWindow()
  122. {
  123.     struct Window *TempWindow;
  124.     NewPaintWindow.Screen = MPaintScreen;
  125.     NewPaintWindow.Width = PaintWidth;
  126.     NewPaintWindow.Height = PaintHeight;
  127.     TempWindow = OpenWindow(&NewPaintWindow);
  128.     if(!TempWindow)
  129.     cleanup("Cannot open paint window",5);
  130.  
  131.     SetMenuStrip(TempWindow,MPaintMenu);
  132.     MPaintWindow = TempWindow;
  133.     ValidFileName = FALSE;
  134. }
  135.  
  136. /*============================================================================*/
  137.  
  138. char *ToolBoxText[] =
  139. {
  140.     "Undo",
  141.     "Dot",
  142.     "CLine",
  143.     "Line",
  144.     "UBox",
  145.     "FBox",
  146.     NULL
  147. };
  148.  
  149. char *ToolBoxText2[] =
  150. {
  151.     "Circl",
  152.     "Ellip",
  153.     "Fill",
  154.     "Flood",
  155.     "Clear",
  156.     "Pick",
  157.     NULL
  158. };
  159.  
  160.  
  161. char *PaletteText[] =
  162. {
  163.     "R+",
  164.     "G+",
  165.     "B+",
  166.     NULL
  167. };
  168.  
  169. char *PaletteText2[] =
  170. {
  171.     "R-",
  172.     "G-",
  173.     "B-",
  174.     NULL
  175. };
  176.  
  177. char *PaletteText3[] =
  178. {
  179.     "Copy",
  180.     "Xchg",
  181.     NULL
  182. };
  183.  
  184. /*============================================================================*/
  185.  
  186. void
  187. OpenToolWindow()
  188. {   int i;
  189.     struct Window *TempWindow;
  190.     struct Gadget *TempGadget;
  191.     ToolRemember = NULL;
  192.     NewToolWindow.Screen = MPaintScreen;
  193.     NewToolWindow.FirstGadget = CreateTextGadgets(ToolBoxText,5,12,&ToolRemember,TOOL_GADG_UNDO);
  194.     TempGadget = CreateTextGadgets(ToolBoxText2,50,12,&ToolRemember,TOOL_GADG_CIRCLE);
  195.     AddGadgetsToList(NewToolWindow.FirstGadget,TempGadget);
  196.  
  197.     TempGadget = CreateTextGadget("B",85,95,&ToolRemember,TOOL_GADG_BACK);
  198.     AddGadgetsToList(NewToolWindow.FirstGadget,TempGadget);
  199.     TempGadget->Activation |= TOGGLESELECT;
  200.     if(ChoosingBackColor)
  201.     TempGadget->Flags |= SELECTED;
  202.  
  203.     TempGadget = CreateTextGadget("P",85,110,&ToolRemember,TOOL_GADG_PATTERN);
  204.     AddGadgetsToList(NewToolWindow.FirstGadget,TempGadget);
  205.     TempGadget->Activation |= TOGGLESELECT;
  206.     if(PatternOn)
  207.     TempGadget->Flags |= SELECTED;
  208.  
  209.     if(MaxColor == 2)
  210.      {    TempGadget = CreateInvisibleGadgets(2,5,TOOL_COLOR_HEIGHT+9,7,6,&ToolRemember,(USHORT)0);
  211.     AddGadgetsToList(NewToolWindow.FirstGadget,TempGadget);
  212.      }
  213.     else for(i=0;i<(MaxColor/4);++i)
  214.      {    TempGadget = CreateInvisibleGadgets(4,5+(10*i),TOOL_COLOR_HEIGHT+9,7,6,&ToolRemember,(USHORT)4*i);
  215.     AddGadgetsToList(NewToolWindow.FirstGadget,TempGadget);
  216.      }
  217.  
  218.     TempWindow = OpenWindow(&NewToolWindow);
  219.     if(!TempWindow)
  220.     CloseToolWindow();
  221.  
  222.     if(MaxColor == 2)
  223.     DrawColoredRow(TempWindow->RPort,2,5L,(long)TOOL_COLOR_HEIGHT+9,6L,0L);
  224.     else for(i=0;i<(MaxColor/4);++i)
  225.     DrawColoredRow(TempWindow->RPort,4,5L+(10*i),(long)TOOL_COLOR_HEIGHT+9,6L,(long)i*4);
  226.  
  227.     ToolWindow = TempWindow;
  228.     SetForeColor((long)ForeColor);
  229.     SetBackColor((long)BackColor);
  230.  
  231.     SetMenuStrip(ToolWindow,MPaintMenu);
  232. }
  233.  
  234. /*============================================================================*/
  235.  
  236. CloseToolWindow()
  237. {
  238. /*    NewToolWindow.LeftEdge = ToolWindow->LeftEdge;
  239.     NewToolWindow.TopEdge = ToolWindow->TopEdge;
  240. */
  241.     if(ToolWindow)
  242.      {
  243.     ClearMenuStrip(ToolWindow);
  244.     CloseWindow(ToolWindow);
  245.      }
  246.     ToolWindow = NULL;
  247.     if(ToolRemember)
  248.     FreeRemember(&ToolRemember,(long)TRUE);
  249. }
  250.  
  251. /*============================================================================*/
  252.  
  253. void
  254. OpenPaletteWindow()
  255. {
  256.     int i;
  257.     struct Window *TempWindow;
  258.     struct Gadget *TempGadget;
  259.     PaletteRemember = NULL;
  260.     NewPaletteWindow.Screen = MPaintScreen;
  261.  
  262.     NewPaletteWindow.FirstGadget = CreateTextGadgets(PaletteText,52,12,&PaletteRemember,PALETTE_GADG_RED_PLUS2);
  263.  
  264.     TempGadget = CreateTextGadgets(PaletteText2,75,12,&PaletteRemember,PALETTE_GADG_RED_MINUS2);
  265.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  266.     TempGadget = CreateTextGadgets(PaletteText3,52,48,&PaletteRemember,PALETTE_GADG_COPY);
  267.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  268.  
  269.     TempGadget = CreatePropGadget(10,12,10,45,&PaletteRemember,PALETTE_GADG_PROP_RED);
  270.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  271.     TempGadget = CreatePropGadget(20,12,10,45,&PaletteRemember,PALETTE_GADG_PROP_GREEN);
  272.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  273.     TempGadget = CreatePropGadget(30,12,10,45,&PaletteRemember,PALETTE_GADG_PROP_BLUE);
  274.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  275.  
  276.     if(MaxColor == 2)
  277.      {    TempGadget = CreateInvisibleGadgets(2,5,71,7,6,&PaletteRemember,(USHORT)0);
  278.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  279.      }
  280.     else for(i=0;i<(MaxColor/4);++i)
  281.      {    TempGadget = CreateInvisibleGadgets(4,5+(10*i),71,7,6,&PaletteRemember,(USHORT)4*i);
  282.     AddGadgetsToList(NewPaletteWindow.FirstGadget,TempGadget);
  283.      }
  284.     TempWindow = OpenWindow(&NewPaletteWindow);
  285.     if(!TempWindow)
  286.     ClosePaletteWindow();
  287.  
  288.     if(MaxColor == 2)
  289.     DrawColoredRow(TempWindow->RPort,2,5L,71L,6L,0L);
  290.     for(i=0;i<(MaxColor/4);++i)
  291.     DrawColoredRow(TempWindow->RPort,4,5L+(10*i),71L,6L,(long)i*4);
  292.  
  293.     PaletteWindow = TempWindow;
  294.     SetForeColor((long)ForeColor);
  295.  
  296.     SetMenuStrip(PaletteWindow,MPaintMenu);
  297. }
  298.  
  299. /*============================================================================*/
  300.  
  301. ClosePaletteWindow()
  302. {
  303. /*    NewPaletteWindow.LeftEdge = PaletteWindow->LeftEdge;
  304.     NewPaletteWindow.TopEdge = PaletteWindow->TopEdge;
  305. */
  306.     if(PaletteWindow)
  307.      {
  308.     ClearMenuStrip(PaletteWindow);
  309.     CloseWindow(PaletteWindow);
  310.      }
  311.     PaletteWindow = NULL;
  312.     if(PaletteRemember)
  313.     FreeRemember(&PaletteRemember,(long)TRUE);
  314. }
  315.  
  316. /*============================================================================*/
  317.  
  318. OpenHistWindow()
  319. {
  320.     int i;
  321.     struct Window *TempWindow;
  322.     struct Gadget *TempGadget;
  323.     HistRemember = NULL;
  324.     NewHistWindow.Screen = MPaintScreen;
  325.  
  326.     TempWindow = OpenWindow(&NewHistWindow);
  327.     if(!TempWindow)
  328.     CloseHistWindow();
  329.  
  330.     HistWindow = TempWindow;
  331.  
  332.     SetMenuStrip(HistWindow,MPaintMenu);
  333.  
  334.     DoHist();
  335.     PrintHist();
  336. }
  337.  
  338. /*============================================================================*/
  339.  
  340. CloseHistWindow()
  341. {
  342. /*    NewHistWindow.LeftEdge = HistWindow->LeftEdge;
  343.     NewHistWindow.TopEdge = HistWindow->TopEdge;
  344. */
  345.     if(HistWindow)
  346.      {
  347.     ClearMenuStrip(HistWindow);
  348.     CloseWindow(HistWindow);
  349.      }
  350.     HistWindow = NULL;
  351.     if(HistRemember)
  352.     FreeRemember(&HistRemember,(long)TRUE);
  353. }
  354.  
  355. /*============================================================================*/
  356.  
  357. OpenCoordWindow()
  358. {
  359.     int i;
  360.     struct Window *TempWindow;
  361.     struct Gadget *TempGadget;
  362.     CoordRemember = NULL;
  363.     NewCoordWindow.Screen = MPaintScreen;
  364.  
  365.     TempGadget = CreateTextGadget("Grid",20,24,&CoordRemember,COORD_GADG_GRID);
  366.     TempGadget->Activation = RELVERIFY|TOGGLESELECT;
  367.     if(Grid)
  368.     TempGadget->Flags |= SELECTED;
  369.  
  370.     NewCoordWindow.FirstGadget = TempGadget;
  371.  
  372.     TempGadget = CreateIntGadget("10",5,37,&CoordRemember,COORD_GADG_GRIDX);
  373.     AddGadgetsToList(NewCoordWindow.FirstGadget,TempGadget);
  374.  
  375.     TempGadget = CreateIntGadget("10",45,37,&CoordRemember,COORD_GADG_GRIDY);
  376.     AddGadgetsToList(NewCoordWindow.FirstGadget,TempGadget);
  377.  
  378.     CoordIntuiText = CreateIntuiText(Crd,&CoordRemember);
  379.     CoordIntuiText->DrawMode = JAM2;
  380.  
  381.     TempWindow = OpenWindow(&NewCoordWindow);
  382.     if(!TempWindow)
  383.     CloseCoordWindow();
  384.  
  385.     CoordWindow = TempWindow;
  386.  
  387.     SetAPen(TempWindow->RPort,1L);
  388.     Move(TempWindow->RPort,0L,20L);
  389.     Draw(TempWindow->RPort,81L,20L);
  390.  
  391.     SetMenuStrip(CoordWindow,MPaintMenu);
  392. }
  393.  
  394. /*============================================================================*/
  395.  
  396. CloseCoordWindow()
  397. {
  398. /*    NewCoordWindow.LeftEdge = CoordWindow->LeftEdge;
  399.     NewCoordWindow.TopEdge = CoordWindow->TopEdge;
  400. */
  401.     if(CoordWindow)
  402.      {
  403.     ClearMenuStrip(CoordWindow);
  404.     CloseWindow(CoordWindow);
  405.      }
  406.     CoordWindow = NULL;
  407.     if(CoordRemember)
  408.     FreeRemember(&CoordRemember,(long)TRUE);
  409. }
  410.  
  411.