crunch@well.UUCP (John Draper) (12/03/86)
/***************************** Imagdcl.c ************************************ * * Image editor declarations for the Gadget Editor. * * This module by * Ray R. Larson * * This module contains the global definitions for the gadgets and * menus used by the Image_Ed routines. The main routine Image_Ed * can be found in Image.c and support routines in Imagfunc.c * ****************************************************************************/ /* The usual header files */ #include <intuition/intuition.h> #include <libraries/dosextens.h> #include <graphics/gfxbase.h> #include <graphics/gfx.h> #include <graphics/display.h> #include <exec/memory.h> #include <workbench/workbench.h> #include <workbench/startup.h> #include <devices/narrator.h> #include <devices/audio.h> #include <libraries/translator.h> /*------------------- work rasters and bitmaps -----------*/ struct RastPort smallraster; struct BitMap smallbitmap; /*------------------- color table definitions ------------------*/ UWORD defaultCT[32], CTable[32]; struct ColorMap *cmap; /************************************************************************** * Definitions and declarations for all them gadgets ***************************************************************************/ /* image editor window dimensions */ #define WINDWIDTH 640 #define WINDHEIGHT 200 /* size of the image editing area */ #define FRAMETOP 11 #define FRAMELEFT 3 #define FRAMEBOT 173 #define FRAMERIGHT 401 #define FRAMEHEIGHT FRAMEBOT-FRAMETOP #define FRAMEWIDTH FRAMERIGHT-FRAMELEFT /* size of small image display area */ #define SMALLTOP 50 #define SMALLLEFT 450 #define SMALLBOT 105 #define SMALLRIGHT 610 #define SMALLHEIGHT (SMALLBOT-SMALLTOP) #define SMALLWIDTH (SMALLRIGHT-SMALLLEFT) /* gadget numbers */ #define PALETTEG 1 #define MAGMINUSG 2 #define MAGPLUSG 3 #define UPDOWNG 4 #define LEFTRIGHTG 5 #define BIGEDG 6 #define RESETG 7 /* no longer used - put in menu */ #define BLUECTLG 8 #define GREENCTLG 9 #define REDCTLG 10 #define TOOLOFFSET 11 /* menu items - menu declarations follow the gadgets */ #define PROJMEN 0 #define EDITMEN 1 #define OPTMEN 2 #define TOOLMEN 3 #define RETURNM 0 #define CANCELM 1 #define CLREDWIN 0 #define CLREDALL 1 #define RESETIMAG 2 #define RESETCOLOR 3 #define SHOWSMALL 0 #define HIDESMALL 1 #define FREEHTOOL 0 #define LINETOOL 1 #define BOXTOOL 2 #define CIRCLETOOL 3 #define FILLTOOL 4 /* Text for the proportional gadgets */ struct IntuiText red_label = {2,1,JAM2,-7,2,NULL,(UBYTE *)"R",NULL}; struct IntuiText green_label = {2,1,JAM2,-7,2,NULL,(UBYTE *)"G",NULL}; struct IntuiText blue_label = {2,1,JAM2,-7,2,NULL,(UBYTE *)"B",NULL}; /* text for the button gadgets */ struct IntuiText magplustxt = {2,1,JAM2,9,3,NULL, (UBYTE *)" + MAGNIFY + ",NULL}; struct IntuiText magmintxt = {2,1,JAM2,9,3,NULL, (UBYTE *)" - MAGNIFY - ",NULL}; struct IntuiText brushtxt = {1,0,COMPLEMENT,485,138,NULL, (UBYTE *)"BRUSH COLOR",NULL}; SHORT brushpairs[]= { -1,-1, 161,-1, 161,15, -1,15, -1,-1}; struct Border boxborder = {450,135,1,0,JAM1,5,&brushpairs[0],NULL}; SHORT smallimpairs[]= { -1,-1, 162,-1, 162,57, -1,57, -1,-1}; struct Border smallimborder = {450,50,1,0,JAM1,5,&smallimpairs[0],NULL}; /* Images for the color proportional gadgets - filled in later */ struct Image r_shape, g_shape, b_shape; /* Proportional info for the color prop gadgets */ struct PropInfo r_prop, g_prop, b_prop; /* The color prop gadgets themselves */ struct Gadget blue_control = { NULL, /* next in the line */ 450, 185, /* Left and Top Edges */ 160, 11, /* Width, Height */ GADGHCOMP, /* Flags (complement) */ GADGIMMEDIATE | RELVERIFY, /* activation */ PROPGADGET, /* GadgetType */ (APTR)&b_shape, /* GadgetRender image */ NULL, /* no SelectRender */ &blue_label, /* GadgetText */ NULL, /* no MutualExclude */ (APTR)&b_prop, /* SpecialInfo */ BLUECTLG, /* GadgetID */ NULL, /* No UserData */ }; struct Gadget green_control = { &blue_control, /* next in the line */ 450, 170, /* Left and Top Edges */ 160, 11, /* Width, Height */ GADGHCOMP, /* Flags (complement) */ GADGIMMEDIATE | RELVERIFY, /* activation */ PROPGADGET, /* GadgetType */ (APTR)&g_shape, /* GadgetRender image */ NULL, /* no SelectRender */ &green_label, /* GadgetText */ NULL, /* no MutualExclude */ (APTR)&g_prop, /* SpecialInfo */ GREENCTLG, /* GadgetID */ NULL, /* No UserData */ }; struct Gadget red_control = { &green_control, /* next in the line */ 450, 155, /* Left and Top Edges */ 160, 11, /* Width, Height */ GADGHCOMP, /* Flags (complement) */ GADGIMMEDIATE | RELVERIFY, /* activation */ PROPGADGET, /* GadgetType */ (APTR)&r_shape, /* GadgetRender image */ NULL, /* no SelectRender */ &red_label, /* GadgetText */ NULL, /* no MutualExclude */ (APTR)&r_prop, /* SpecialInfo */ REDCTLG, /* GadgetID */ NULL, /* No UserData */ }; struct Image UpDown_Shape; struct PropInfo UpDownProp ; struct Gadget UpDownGadg = { &red_control, 402, 10, 23, 164, GADGHCOMP, RELVERIFY | GADGIMMEDIATE, PROPGADGET, (APTR)&UpDown_Shape, NULL , NULL,/* intuitext */ 0x0, (APTR)&UpDownProp, UPDOWNG, NULL }; struct Image L_R_Shape; struct PropInfo L_R_Prop ; struct Gadget L_R_Gadg = { &UpDownGadg, 2, 174, 401, 10, GADGHCOMP, RELVERIFY | GADGIMMEDIATE, PROPGADGET, (APTR)&L_R_Shape, NULL, NULL,/* intuitext */ 0x0, (APTR)&L_R_Prop, LEFTRIGHTG, NULL }; SHORT edgadPairs_1[] = { 0, 0, 160, 0, 160, 20, 0, 20, 0, 0 }; struct Border edgadBord_1 = { -1, -1, 1, 3, JAM2, 5, (SHORT *)&edgadPairs_1, NULL }; struct Gadget paletteGadg = { &L_R_Gadg, 450, 110, 160, 20, GADGHNONE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&edgadBord_1, NULL, NULL,/* intuitext */ 0x0, NULL, PALETTEG, NULL }; SHORT edgadPairs_2[] = { 0, 0, 126, 0, 126, 14, 0, 14, 0, 0 }; struct Border edgadBord_2 = { -1, -1, 1, 3, JAM2, 5, (SHORT *)&edgadPairs_2, NULL }; struct Gadget MagniMinus = { &paletteGadg, 465, 32, 126, 14, GADGHCOMP, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&edgadBord_2, NULL, &magmintxt,/* intuitext */ 0, NULL, MAGMINUSG, NULL }; SHORT edgadPairs_3[] = { 0, 0, 126, 0, 126, 14, 0, 14, 0, 0 }; struct Border edgadBord_3 = { -1, -1, 1, 3, JAM2, 5, (SHORT *)&edgadPairs_3, NULL }; struct Gadget MagniPlus = { &MagniMinus, 465, 12, 126, 14, GADGHCOMP, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&edgadBord_3, NULL, &magplustxt, /* intuitext */ 0, NULL, MAGPLUSG, NULL }; /* Image structures for tool selection gadgets - defined in imagimag.c */ extern struct Image freehand_image, linetool_image, boxtool_image, circtool_image, recttool_image; SHORT toolpairs[]= { 0,0, 49, 0, 49,24, 0,24, 0,1, -1,-1, 50,-1, 50,25, -1,25, -1,0, -2,-2, 51,-2, 51,26, -2,26, -2,-1}; struct Border toolgadbord = {0,0,1,0,COMPLEMENT,15,&toolpairs[0],NULL}; struct Gadget freehandGadg = { &MagniPlus, 450, 53, 50, 25, GADGHNONE | GADGIMAGE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&freehand_image, NULL, NULL,/* intuitext */ 0x0000001E, NULL, TOOLOFFSET+FREEHTOOL, NULL }; struct Gadget linetoolGadg = { &freehandGadg, 505, 53, 50, 25, GADGHNONE | GADGIMAGE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&linetool_image, NULL, NULL,/* intuitext */ 0x0000002E, NULL, TOOLOFFSET+LINETOOL, NULL }; struct Gadget boxtoolGadg = { &linetoolGadg, 560, 53, 50, 25, GADGHNONE | GADGIMAGE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&boxtool_image, NULL, NULL,/* intuitext */ 0x00000036, NULL, TOOLOFFSET+BOXTOOL, NULL }; struct Gadget circtoolGadg = { &boxtoolGadg, 478, 81, 50, 25, GADGHNONE | GADGIMAGE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&circtool_image, NULL, NULL,/* intuitext */ 0x0000003A, NULL, TOOLOFFSET+CIRCLETOOL, NULL }; struct Gadget recttoolGadg = { &circtoolGadg, 532, 81, 50, 25, GADGHNONE | GADGIMAGE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&recttool_image, NULL, NULL,/* intuitext */ 0x0000003C, NULL, TOOLOFFSET+FILLTOOL, NULL }; SHORT edgadPairs_4[] = { 0, 0, 400, 0, 400, 163, 0, 163, 0, 0 }; struct Border edgadBord_4 = { -1, -1, 1, 3, JAM2, 5, (SHORT *)&edgadPairs_4, NULL }; struct Gadget Big_Ed_Gadg = { &recttoolGadg, FRAMELEFT, FRAMETOP, 399, 163, GADGHNONE, RELVERIFY | GADGIMMEDIATE, BOOLGADGET, (APTR)&edgadBord_4, NULL, NULL, 0x0, 0x0, BIGEDG, NULL }; struct NewWindow gwind = { 0,0, /* Left and Top edges */ WINDWIDTH, /* Width and Height */ WINDHEIGHT, 0,1, /* DetailPen and BlockPen colors */ /* IDCMPFlags for the window - */ MOUSEMOVE | GADGETUP | GADGETDOWN | MENUPICK | CLOSEWINDOW, /* Flags for the window */ ACTIVATE | REPORTMOUSE | WINDOWCLOSE, &Big_Ed_Gadg, /* First gadget in list */ NULL, /* Checkmark - use the default check */ (UBYTE *)"Image Editor Window",/* Title */ NULL, /* Screen - set if this is a custom one. */ NULL, /* No Custom bitmap here either */ 0, /* MinWidth, MinHeight, MaxW & MaxH */ 0, /* no window sizing so these should be ignored */ 640, 200, WBENCHSCREEN, /* May be tweaked to custom later */ }; /************************************************************************ * Menu Definitions for the Image editor portion of the Gadget Editor. * Designed by Ray Larson and... * Created with Menu Creator * by * David Pehrson * * Copyright (C) 1986 David Pehrson * Mantis Development * * ... Which is a very useful Freeware tool, that nicely complements * the gadget editor. * *********************************************************************/ char stTopaz[] = "topaz.font"; struct TextAttr taPlain = { (STRPTR)stTopaz, 8, FS_NORMAL, FPF_ROMFONT }; struct IntuiText im_ItemText[] = { { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Return Image", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Cancel Edit", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Clear Edit Area", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Clear Whole Image", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Reset Input Image", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)"Reset Colors", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Show Small Image", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Hide Small Image", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Freehand Draw", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Line Draw", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Box Draw", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Circle Draw", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Filled Box", NULL }, { 0, 1, JAM1, 0, 1, &taPlain, (UBYTE *)" Flood Fill", NULL }, }; struct MenuItem im_Items[] = { { &im_Items[1], 0, 0, 139, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP, 0, (APTR)&im_ItemText[0], NULL, 'R', NULL, NULL }, { NULL, 0, 10, 139, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOM P, 0, (APTR)&im_ItemText[1], NULL, 'Q', NULL, NULL }, { &im_Items[3], 0, 0, 179, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP, 0, (APTR)&im_ItemText[2], NULL, 'K', NULL, NULL }, { &im_Items[4], 0, 10, 179, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP, 0, (APTR)&im_ItemText[3], NULL, 'Z', NULL, NULL }, { &im_Items[5], 0, 20, 179, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP, 0, (APTR)&im_ItemText[4], NULL, 'I', NULL, NULL }, { NULL, 0, 30, 179, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOM P, 0, (APTR)&im_ItemText[5], NULL, 'C', NULL, NULL }, { &im_Items[7], 0, 0, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP, 2, (APTR)&im_ItemText[6], NULL, 'S', NULL, NULL }, { NULL, 0, 10, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP | CHECKED, 1, (APTR)&im_ItemText[7], NULL, 'H', NULL, NULL }, { &im_Items[9], 0, 0, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP | CHECKED, 62, (APTR)&im_ItemText[8], NULL, 'F', NULL, NULL }, { &im_Items[10], 0, 10, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP, 61, (APTR)&im_ItemText[9], NULL, 'L', NULL, NULL }, { &im_Items[11], 0, 20, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP, 59, (APTR)&im_ItemText[10], NULL, 'B', NULL, NULL }, { &im_Items[12], 0, 30, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP, 55, (APTR)&im_ItemText[11], NULL, 'O', NULL, NULL }, { &im_Items[13], 0, 40, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKIT | HIGHCOMP, 47, (APTR)&im_ItemText[12], NULL, 'P', NULL, NULL }, { NULL, 0, 50, 171, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | CHECKI T | HIGHCOMP, 31, (APTR)&im_ItemText[13], NULL, 'X', NULL, NULL }, }; struct Menu im_Titles[] = { { &im_Titles[1], 3, 0, 78, 10, MENUENABLED, (BYTE *)" Project", &im_Item s[0] }, { &im_Titles[2], 80, 0, 54, 10, MENUENABLED, (BYTE *)" Edit", &im_Items[ 2] }, { &im_Titles[3], 133, 0, 78, 10, MENUENABLED, (BYTE *)" Options", &im_It ems[6] }, { NULL, 210, 0, 62, 0, MENUENABLED, (BYTE *)" Tools", &im_Items[8] }, };