[comp.sys.amiga] imagdcl.c - 8 of 21

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] },
};