home *** CD-ROM | disk | FTP | other *** search
- #include <classes/BOOPSI/images.h>
- #include <classes/BOOPSI/boopsilib.h>
-
- #pragma -
- #include <pragma/utility_lib.h>
- #include <clib/alib_protos.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/graphics_lib.h>
- #include <graphics/gfxmacros.h>
- #pragma +
-
- struct LineiData {
- BOOL vertical;
- BOOL recessed;
- BOOL frametype;
- };
-
- LineiClass::LineiClass()
- : BoopsiClass(sizeof(struct LineiData),(ULONG (*)()) &dispatcher,IMAGECLASS,NULL)
- {
- }
-
- ULONG LineiClass::dispatcher(Class *cl, Object *o, Msg msg)
- {
- struct LineiData *li;
- ULONG retval = FALSE;
- switch (msg->MethodID)
- {
- case OM_NEW:
- {
- Object *object;
- if (object = (Object *) DoSuperMethodA(cl,o,msg))
- {
- li = (struct LineiData *) INST_DATA(cl,object);
- li->recessed = TRUE;
- li->frametype = FRAME_RIDGE;
- li->vertical = FALSE;
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case IA_Recessed:
- li->recessed = (BOOL) ticData;
- break;
- case IA_FrameType:
- li->frametype = (BOOL) ticData;
- break;
- case LIA_Vertical:
- li->vertical = (BOOL) ticData;
- default:
- break;
- };
- tic.next();
- };
- retval = (ULONG) object;
- };
- break;
- };
- case OM_DISPOSE:
- {
- li = (struct LineiData *) INST_DATA(cl,o);
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case OM_GET:
- {
- li = (struct LineiData *) INST_DATA(cl,o);
- switch (((struct opGet *) msg)->opg_AttrID)
- {
- case IA_Left:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Image *) o)->LeftEdge;
- retval = TRUE;
- break;
- case IA_Top:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Image *) o)->TopEdge;
- retval = TRUE;
- break;
- case IA_Width:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Image *) o)->Width;
- retval = TRUE;
- break;
- case IA_Height:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Image *) o)->Height;
- retval = TRUE;
- break;
- case LIA_Vertical:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) li->vertical;
- retval = TRUE;
- break;
- default:
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- break;
- };
- case OM_SET:
- {
- li = (struct LineiData *) INST_DATA(cl,o);
- /*
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- default:
- break;
- };
- tic.next();
- };
- */
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case IM_DRAW:
- {
- li = (struct LineiData *) INST_DATA(cl,o);
- retval = renderLinei(cl,(struct Image *) o,
- (struct impDraw *) msg,li);
-
- break;
- };
- default:
- {
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- };
- return retval;
- }
-
- ULONG LineiClass::renderLinei(Class *cl, struct Image *im,
- struct impDraw *msg, struct LineiData *data)
- {
- UBYTE shine = 2;
- UBYTE shadow = 1;
- if (msg->imp_DrInfo)
- {
- shine = msg->imp_DrInfo->dri_Pens[SHINEPEN];
- shadow = msg->imp_DrInfo->dri_Pens[SHADOWPEN];
- };
- if (data->recessed)
- {
- UBYTE x = shine;
- shine = shadow;
- shadow = x;
- };
- if (!data->vertical)
- {
- if (im->Height > 0)
- {
- WORD top = im->TopEdge+(im->Height >> 1);
- if (im->Height > 1)
- {
- SetAPen(msg->imp_RPort,shine);
- Move(msg->imp_RPort,im->LeftEdge,top-1);
- Draw(msg->imp_RPort,im->LeftEdge+im->Width,top-1);
- };
- SetAPen(msg->imp_RPort,shadow);
- Move(msg->imp_RPort,im->LeftEdge,top);
- Draw(msg->imp_RPort,im->LeftEdge+im->Width,top);
- };
- }
- else {
- if (im->Width > 0)
- {
- WORD left = im->LeftEdge+(im->Width >> 1);
- if (im->Width > 1)
- {
- SetAPen(msg->imp_RPort,shine);
- Move(msg->imp_RPort,left-1,im->TopEdge);
- Draw(msg->imp_RPort,left-1,im->TopEdge+im->Height);
- };
- SetAPen(msg->imp_RPort,shadow);
- Move(msg->imp_RPort,left,im->TopEdge);
- Draw(msg->imp_RPort,left,im->TopEdge+im->Height);
- };
- };
- return FALSE;
- }
-
- // *************************************************************
-
- LineiClass LineiC::lic;
-
- // *************************************************************
-
- struct PatterniData {
- ULONG standard;
- BOOL multicolor;
- UBYTE apen;
- UBYTE bpen;
- };
-
- PatterniClass::PatterniClass()
- : BoopsiClass(sizeof(struct PatterniData),(ULONG (*)()) &dispatcher,IMAGECLASS,NULL)
- {
- }
-
- ULONG PatterniClass::dispatcher(Class *cl, Object *o, Msg msg)
- {
- struct PatterniData *data;
- ULONG retval = FALSE;
- switch (msg->MethodID)
- {
- case OM_NEW:
- {
- Object *object;
- if (object = (Object *) DoSuperMethodA(cl,o,msg))
- {
- data = (struct PatterniData *) INST_DATA(cl,object);
- data->standard = 0;
- data->multicolor = FALSE;
- data->apen = TEXTPEN;
- data->bpen = BACKGROUNDPEN;
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case PIA_Standard:
- data->standard = (ULONG) ticData;
- break;
- /*
- case PIA_Multicolor:
- data->multicolor = (BOOL) ticData;
- break;
- */
- case IA_FGPen:
- data->apen = (UBYTE) ticData;
- break;
- case IA_BGPen:
- data->bpen = (UBYTE) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = (ULONG) object;
- };
- break;
- };
- case OM_DISPOSE:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case OM_GET:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- switch (((struct opGet *) msg)->opg_AttrID)
- {
- case IA_Left:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->LeftEdge;
- retval = TRUE;
- break;
- case IA_Top:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->TopEdge;
- retval = TRUE;
- break;
- case IA_Width:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Width;
- retval = TRUE;
- break;
- case IA_Height:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Height;
- retval = TRUE;
- break;
- case PIA_Standard:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->standard;
- retval = TRUE;
- break;
- /*
- case PIA_Multicolor:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->multicolor;
- retval = TRUE;
- break;
- */
- default:
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- break;
- };
- case OM_SET:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case PIA_Standard:
- data->standard = ticData;
- break;
- case IA_FGPen:
- data->apen = (UBYTE) ticData;
- break;
- case IA_BGPen:
- data->bpen = (UBYTE) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case IM_DRAW:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- /*
- case IM_HITTEST:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASE:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- break;
- };
- case IM_DRAWFRAME:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- case IM_HITFRAME:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASEFRAME:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- break;
- };
- case IM_FRAMEBOX:
- {
- data = (struct PatterniData *) INST_DATA(cl,o);
- break;
- };
- */
- default:
- {
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- };
- return retval;
- }
-
- ULONG PatterniClass::render(Class *cl, struct Image *im,
- struct impDraw *msg, struct PatterniData *data)
- {
- static struct { UWORD s; UWORD data[16]; } standard[] = {
- { 1, { 0x0000,0x0000 } },
- { 1, { 0x5555,0xaaaa } },
- { 1, { 0x1111,0x4444 } },
- { 3, { 0x8888,0x5454,0x2222,0x1515,0x8888,0x5151,0x2222,0x4545 } },
- { 2, { 0x0000,0x2222,0x0000,0x8888 } },
- { 1, { 0x0000,0xAAAA } },
- { 3, { 0xBBBB,0xFFFF,0xEEEE,0xFFFF,0xBBBB,0xFFFF,0xEEEE,0xFFFF } },
- { 3, { 0x0808,0x1010,0x0000,0x0101,0x8080,0x4040,0x0000,0x0404 } },
- { 3, { 0x0303,0x6363,0x6C6C,0x0C0C,0xC0C0,0xD8D8,0x1919,0x0000 } },
- { 3, { 0x1F1F,0x1F1F,0xEEEE,0x3131,0xF1F1,0xF1F1,0xEEEE,0x1313 } },
- { 3, { 0xA0A0,0x1F1F,0x0404,0x0404,0x0A0A,0xF1F1,0x4040,0x4040 } },
- { 3, { 0x0808,0x1010,0x2020,0x4040,0x8080,0x0101,0x0202,0x0404 } },
- { 3, { 0x0C0C,0x1818,0x3030,0x6060,0xC0C0,0x8181,0x0303,0x0606 } },
- { 3, { 0x8080,0x0000,0x0202,0x0404,0x0808,0x1010,0x2020,0x4040 } },
- { 3, { 0x1111,0xAAAA,0x4444,0xAAAA,0x1111,0xAAAA,0x4444,0xAAAA } },
- { 3, { 0x1111,0x0A0A,0x0404,0x0808,0x1010,0x2020,0x4040,0xA0A0 } },
- { 3, { 0x1E1E,0x1E1E,0x1E1E,0x1E1E,0xE1E1,0xE1E1,0xE1E1,0xE1E1 } },
- { 3, { 0xFFFF,0x4040,0x4040,0x4040,0xFFFF,0x0404,0x0404,0x0404 } },
- { 3, { 0x4444,0x2828,0x1111,0x0000,0x5555,0x0000,0x1111,0x8282 } },
- { 4, { 0xFFFF,0x8000,0xB006,0xB006,0x8000,0x8000,0x8000,0x8000,
- 0x8000,0x8000,0x8000,0x8000,0x8000,0xB006,0xB006,0x8000 } },
- { 3, { 0x1111,0x0000,0x0101,0x0000,0x5555,0x0000,0x0101,0x0000 } },
- { 3, { 0x4040,0x4040,0xFFFF,0x4040,0x4040,0x4040,0x4040,0x4040 } },
- { 3, { 0x4444,0xFFFF,0x2222,0x4444,0x8888,0xFFFF,0x1111,0x8888 } },
- { 3, { 0x5555,0xBBBB,0x5555,0xEEEE,0x5555,0xBBBB,0x5555,0xEEEE } },
- { 4, { 0x0100,0x0100,0x0100,0x1FF8,0x1008,0x1008,0x1008,0xF00F,
- 0x1008,0x1008,0x1008,0x1FF8,0x0100,0x0100,0x0100,0x0100 } },
- { 3, { 0x0000,0x7777,0x7777,0x7777,0x0000,0x7777,0x7777,0x7777 } },
- { 3, { 0x1010,0x0808,0x0404,0x0202,0x0101,0x8080,0x4040,0x2020 } },
- { 3, { 0x8888,0x5050,0x2020,0x1010,0x0808,0x0404,0x0202,0x0505 } },
- { 3, { 0xF8F8,0x7474,0x2222,0x1717,0x8F8F,0x5F5F,0x3E3E,0x7D7D } },
- { 3, { 0x3030,0x1818,0x0C0C,0x0606,0x0303,0x8181,0xC0C0,0x6060 } },
- { 3, { 0x0101,0x0000,0x4040,0x2020,0x1010,0x0808,0x0404,0x0202 } }
- };
- WORD x = msg->imp_Offset.X + im->LeftEdge;
- WORD y = msg->imp_Offset.Y + im->TopEdge;
- if (data->standard >= 0 && data->standard <= 29)
- SetAfPt(msg->imp_RPort,standard[data->standard].data,
- standard[data->standard].s)
- else
- SetAfPt(msg->imp_RPort,standard[0].data,standard[0].s);
- SetDrMd(msg->imp_RPort,JAM2);
- SetAPen(msg->imp_RPort,msg->imp_DrInfo->dri_Pens[data->apen]);
- SetBPen(msg->imp_RPort,msg->imp_DrInfo->dri_Pens[data->bpen]);
- RectFill(msg->imp_RPort,x,y,x + im->Width - 1, y + im->Height - 1);
- return FALSE;
- }
-
- // *************************************************************
-
- PatterniClass PatterniC::pic;
-
- // *************************************************************
-
- struct TapeImagesData {
- ULONG number;
- BOOL recessed;
- BOOL plane;
- BOOL outline;
- };
-
- TapeImagesClass::TapeImagesClass()
- : BoopsiClass(sizeof(struct TapeImagesData),(ULONG (*)()) &dispatcher,IMAGECLASS,NULL)
- {
- }
-
- ULONG TapeImagesClass::dispatcher(Class *cl, Object *o, Msg msg)
- {
- struct TapeImagesData *data;
- ULONG retval = FALSE;
- switch (msg->MethodID)
- {
- case OM_NEW:
- {
- Object *object;
- if (object = (Object *) DoSuperMethodA(cl,o,msg))
- {
- data = (struct TapeImagesData *) INST_DATA(cl,object);
- data->number = 0;
- data->recessed = FALSE;
- data->plane = FALSE;
- data->outline = TRUE;
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case TAPEIA_Number:
- data->number = (ULONG) ticData;
- break;
- case TAPEIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case TAPEIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = (ULONG) object;
- };
- break;
- };
- case OM_DISPOSE:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case OM_GET:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- switch (((struct opGet *) msg)->opg_AttrID)
- {
- case IA_Left:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->LeftEdge;
- retval = TRUE;
- break;
- case IA_Top:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->TopEdge;
- retval = TRUE;
- break;
- case IA_Width:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Width;
- retval = TRUE;
- break;
- case IA_Height:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Height;
- retval = TRUE;
- break;
- case TAPEIA_Number:
- *(((struct opGet *) msg)->opg_Storage) = data->number;
- retval = TRUE;
- break;
- case TAPEIA_Plane:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->plane;
- retval = TRUE;
- break;
- case TAPEIA_Outline:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->outline;
- retval = TRUE;
- break;
- case IA_Recessed:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->recessed;
- retval = TRUE;
- break;
- default:
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- break;
- };
- case OM_SET:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case TAPEIA_Number:
- data->number = ticData;
- break;
- case TAPEIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case TAPEIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case IM_DRAW:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- /*
- case IM_HITTEST:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASE:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_DRAWFRAME:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- case IM_HITFRAME:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASEFRAME:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_FRAMEBOX:
- {
- data = (struct TapeImagesData *) INST_DATA(cl,o);
- break;
- };
- */
- default:
- {
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- };
- return retval;
- }
-
- ULONG TapeImagesClass::render(Class *cl, struct Image *im,
- struct impDraw *msg, struct TapeImagesData *data)
- {
- static struct DrawData playData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData windData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8191,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 8192,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8192,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData rewindData[] = {
- { DRAWCMD_Move, { 8191,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8191,16383 }},
- { DRAWCMD_Move, { 16383,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8192,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData stopData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData pauseData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6144,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6144,16383 }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 10239,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 10239,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData recordData[] = {
- { DRAWCMD_Move, { 8192,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,8191 }},
- { DRAWCMD_Draw, { 8192,16383 }},
- { DRAWCMD_Draw, { 0,8192 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData playbackData[] = {
- { DRAWCMD_Move, { 16383,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData beginningData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,16383 }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 16383,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6144,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData endData[] = {
- { DRAWCMD_Move, { 10240,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 10240,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10239,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData repeatData[] = {
- { DRAWCMD_Move, { 9216, 2048 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,2048 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,2048 }},
- { DRAWCMD_Draw, { 5120,2048 }},
- { DRAWCMD_Draw, { 5120,0 }},
- { DRAWCMD_Draw, { 9215,4096 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 5120,8192 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 5120,6144 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4096,6144 }},
- { DRAWCMD_Draw, { 4096,12287 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12287,12287 }},
- { DRAWCMD_Draw, { 12287,6144 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 9216,6144 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- WORD x = msg->imp_Offset.X + im->LeftEdge;
- WORD y = msg->imp_Offset.Y + im->TopEdge;
- struct DrawData *v;
- switch (data->number)
- {
- case TAPEIC_Play:
- v = playData;
- break;
- case TAPEIC_Wind:
- v = windData;
- break;
- case TAPEIC_Rewind:
- v = rewindData;
- break;
- case TAPEIC_Stop:
- v = stopData;
- break;
- case TAPEIC_Pause:
- v = pauseData;
- break;
- case TAPEIC_Record:
- v = recordData;
- break;
- case TAPEIC_PlayBackward:
- v = playbackData;
- break;
- case TAPEIC_Beginning:
- v = beginningData;
- break;
- case TAPEIC_End:
- v = endData;
- break;
- case TAPEIC_Repeat:
- v = repeatData;
- break;
- default:
- v = NULL;
- break;
- }
- drawOutlineImage(msg->imp_RPort,v,x,y,im->Width,im->Height,msg->imp_DrInfo,
- data->outline,data->plane,data->recessed,msg->imp_State);
- return FALSE;
- }
-
- // *************************************************************
-
- TapeImagesClass TapeImagesC::tic;
-
- // *************************************************************
-
- struct KeyboardImagesData {
- ULONG number;
- BOOL recessed;
- BOOL plane;
- BOOL outline;
- };
-
- KeyboardImagesClass::KeyboardImagesClass()
- : BoopsiClass(sizeof(struct KeyboardImagesData),(ULONG (*)()) &dispatcher,IMAGECLASS,NULL)
- {
- }
-
- ULONG KeyboardImagesClass::dispatcher(Class *cl, Object *o, Msg msg)
- {
- struct KeyboardImagesData *data;
- ULONG retval = FALSE;
- switch (msg->MethodID)
- {
- case OM_NEW:
- {
- Object *object;
- if (object = (Object *) DoSuperMethodA(cl,o,msg))
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,object);
- data->number = 0;
- data->recessed = FALSE;
- data->plane = FALSE;
- data->outline = TRUE;
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case KEYIA_Number:
- data->number = (ULONG) ticData;
- break;
- case KEYIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case KEYIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = (ULONG) object;
- };
- break;
- };
- case OM_DISPOSE:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case OM_GET:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- switch (((struct opGet *) msg)->opg_AttrID)
- {
- case IA_Left:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->LeftEdge;
- retval = TRUE;
- break;
- case IA_Top:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->TopEdge;
- retval = TRUE;
- break;
- case IA_Width:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Width;
- retval = TRUE;
- break;
- case IA_Height:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Height;
- retval = TRUE;
- break;
- case KEYIA_Number:
- *(((struct opGet *) msg)->opg_Storage) = data->number;
- retval = TRUE;
- break;
- case KEYIA_Plane:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->plane;
- retval = TRUE;
- break;
- case KEYIA_Outline:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->outline;
- retval = TRUE;
- break;
- case IA_Recessed:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->recessed;
- retval = TRUE;
- break;
- default:
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- break;
- };
- case OM_SET:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case KEYIA_Number:
- data->number = ticData;
- break;
- case KEYIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case KEYIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case IM_DRAW:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- /*
- case IM_HITTEST:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASE:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_DRAWFRAME:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- case IM_HITFRAME:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASEFRAME:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_FRAMEBOX:
- {
- data = (struct KeyboardImagesData *) INST_DATA(cl,o);
- break;
- };
- */
- default:
- {
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- };
- return retval;
- }
-
- ULONG KeyboardImagesClass::render(Class *cl, struct Image *im,
- struct impDraw *msg, struct KeyboardImagesData *data)
- {
- static struct DrawData lamigaData[] = {
- { DRAWCMD_Move, { 0,15248 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 955,15248 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 2321,14472 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15564,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15291,14609 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15837,15428 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,15428 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,15564 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 11741,15291 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12424,14472 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12697,11059 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6826,11059 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 3822,14609 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 3822,15291 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4915,15564 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4778,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
-
- { DRAWCMD_Move, { 8055,9830 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 13380,3959 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12834,9830 }},
- { DRAWCMD_Fill, { BACKGROUNDPEN, BACKGROUNDPEN }},
-
- { DRAWCMD_End }
- };
- static struct DrawData ramigaData[] = {
- { DRAWCMD_Move, { 0,15248 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 955,15248 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 2321,14472 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15564,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15291,14609 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 15837,15428 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,15428 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,15564 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 11741,15291 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12424,14472 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12697,11059 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6826,11059 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 3822,14609 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 3822,15291 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4915,15564 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4778,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { BACKGROUNDPEN, BACKGROUNDPEN }},
-
- { DRAWCMD_Move, { 8055,9830 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 13380,3959 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12834,9830 }},
- { DRAWCMD_Fill, { BACKGROUNDPEN, BACKGROUNDPEN }},
-
- { DRAWCMD_End }
- };
- static struct DrawData tabData[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 1023,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 1023,16383 }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 1023,8191 }},
- { DRAWCMD_Draw, { 8191,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8191,7168 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,7168 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,9216 }},
- { DRAWCMD_Draw, { 8191,9216 }},
- { DRAWCMD_Draw, { 8191,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData stabData[] = {
- { DRAWCMD_Move, { 15359,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 15359,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Move, { 15359,8191 }},
- { DRAWCMD_Draw, { 8192,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8192,7168 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,7168 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,9216 }},
- { DRAWCMD_Draw, { 8192,9216 }},
- { DRAWCMD_Draw, { 8192,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData backspaceData[] = {
- { DRAWCMD_Move, { 0,8191 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,7168 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,7168 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,9216 }},
- { DRAWCMD_Draw, { 6143,9216 }},
- { DRAWCMD_Draw, { 6143,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData leftData[] = {
- { DRAWCMD_Move, { 0,8191 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,7168 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,7168 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,9216 }},
- { DRAWCMD_Draw, { 6143,9216 }},
- { DRAWCMD_Draw, { 6143,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData rightData[] = {
- { DRAWCMD_Move, { 16383,8191 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,0 }},
- { DRAWCMD_Draw, { 10240,7168 }},
- { DRAWCMD_Draw, { 0,7168 }},
- { DRAWCMD_Draw, { 0,9216 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,9216 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 10240,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData upData[] = {
- { DRAWCMD_Move, { 8191,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,6143 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 7168,6143 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 7168,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 9216,16383 }},
- { DRAWCMD_Draw, { 9216,6143 }},
- { DRAWCMD_Draw, { 16383,6143 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData downData[] = {
- { DRAWCMD_Move, { 8191,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,10240 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 7168,10240 }},
- { DRAWCMD_Draw, { 7168,0 }},
- { DRAWCMD_Draw, { 9216,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 9216,10240 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,10240 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData returnData[] = {
- { DRAWCMD_Move, { 0,12288 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,8192 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,11264 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 14336,11264 }},
- { DRAWCMD_Draw, { 14336,0 }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,13312 }},
- { DRAWCMD_Draw, { 6143,13312 }},
- { DRAWCMD_Draw, { 6143,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData shiftData[] = {
- { DRAWCMD_Move, { 0,10239 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 8191,0 }},
- { DRAWCMD_Draw, { 16383,10239 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 12287,10239 }},
- { DRAWCMD_Draw, { 12287,16383 }},
- { DRAWCMD_Draw, { 4096,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 4096,10239 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Fill, { BACKGROUNDPEN, BACKGROUNDPEN }},
- { DRAWCMD_End }
- };
- WORD x = msg->imp_Offset.X + im->LeftEdge;
- WORD y = msg->imp_Offset.Y + im->TopEdge;
- struct DrawData *v;
- switch (data->number)
- {
- case KEYIC_LeftAmiga:
- v = lamigaData;
- break;
- case KEYIC_RightAmiga:
- v = ramigaData;
- break;
- case KEYIC_Tab:
- v = tabData;
- break;
- case KEYIC_ShiftTab:
- v = stabData;
- break;
- case KEYIC_Backspace:
- v = backspaceData;
- break;
- case KEYIC_CursorLeft:
- v = leftData;
- break;
- case KEYIC_CursorRight:
- v = rightData;
- break;
- case KEYIC_CursorUp:
- v = upData;
- break;
- case KEYIC_CursorDown:
- v = downData;
- break;
- case KEYIC_Return:
- v = returnData;
- break;
- case KEYIC_Shift:
- v = shiftData;
- break;
- default:
- v = NULL;
- break;
- }
- drawOutlineImage(msg->imp_RPort,v,x,y,im->Width,im->Height,msg->imp_DrInfo,
- data->outline,data->plane,data->recessed,msg->imp_State);
- return FALSE;
- }
-
- // *************************************************************
-
- KeyboardImagesClass KeyboardImagesC::kic;
-
- // *************************************************************
-
- struct GUIImagesData {
- ULONG number;
- BOOL recessed;
- BOOL plane;
- BOOL outline;
- };
-
- GUIImagesClass::GUIImagesClass()
- : BoopsiClass(sizeof(struct GUIImagesData),(ULONG (*)()) &dispatcher,IMAGECLASS,NULL)
- {
- }
-
- ULONG GUIImagesClass::dispatcher(Class *cl, Object *o, Msg msg)
- {
- struct GUIImagesData *data;
- ULONG retval = FALSE;
- switch (msg->MethodID)
- {
- case OM_NEW:
- {
- Object *object;
- if (object = (Object *) DoSuperMethodA(cl,o,msg))
- {
- data = (struct GUIImagesData *) INST_DATA(cl,object);
- data->number = 0;
- data->recessed = FALSE;
- data->plane = FALSE;
- data->outline = TRUE;
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case GUIIA_Number:
- data->number = (ULONG) ticData;
- break;
- case GUIIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case GUIIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = (ULONG) object;
- };
- break;
- };
- case OM_DISPOSE:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case OM_GET:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- switch (((struct opGet *) msg)->opg_AttrID)
- {
- case IA_Left:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->LeftEdge;
- retval = TRUE;
- break;
- case IA_Top:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->TopEdge;
- retval = TRUE;
- break;
- case IA_Width:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Width;
- retval = TRUE;
- break;
- case IA_Height:
- *(((struct opGet *) msg)->opg_Storage) = ((struct Gadget *) o)->Height;
- retval = TRUE;
- break;
- case GUIIA_Number:
- *(((struct opGet *) msg)->opg_Storage) = data->number;
- retval = TRUE;
- break;
- case GUIIA_Plane:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->plane;
- retval = TRUE;
- break;
- case GUIIA_Outline:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->outline;
- retval = TRUE;
- break;
- case IA_Recessed:
- *(((struct opGet *) msg)->opg_Storage) = (ULONG) data->recessed;
- retval = TRUE;
- break;
- default:
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- break;
- };
- case OM_SET:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- TagItemCursorC tic(((struct opSet *) msg)->ops_AttrList);
- while (!tic.isDone()) {
- /* register */ ULONG ticData = tic.itemData();
- switch (tic.itemTag())
- {
- case GUIIA_Number:
- data->number = ticData;
- break;
- case GUIIA_Plane:
- data->plane = (BOOL) ticData;
- break;
- case GUIIA_Outline:
- data->outline = (BOOL) ticData;
- break;
- case IA_Recessed:
- data->recessed = (BOOL) ticData;
- break;
- default:
- break;
- };
- tic.next();
- };
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- case IM_DRAW:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- /*
- case IM_HITTEST:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASE:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_DRAWFRAME:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- render(cl,(struct Image *) o, (struct impDraw *) msg, data);
- break;
- };
- case IM_HITFRAME:
- {
- retval = TRUE;
- break;
- };
- case IM_ERASEFRAME:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- break;
- };
- case IM_FRAMEBOX:
- {
- data = (struct GUIImagesData *) INST_DATA(cl,o);
- break;
- };
- */
- default:
- {
- retval = DoSuperMethodA(cl,o,msg);
- break;
- };
- };
- return retval;
- }
-
- ULONG GUIImagesClass::render(Class *cl, struct Image *im,
- struct impDraw *msg, struct GUIImagesData *data)
- {
- static struct DrawData fileselect[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Draw, { 16383,6144 }},
- { DRAWCMD_Draw, { 10239,0 }},
- { DRAWCMD_Attr, { SHINEPEN,TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN,BACKGROUNDPEN }},
- { DRAWCMD_Move, { 10239,0 }},
- { DRAWCMD_Attr, { SHINEPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 10239,6144 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 16383,6144 }},
- { DRAWCMD_Fill, { FILLPEN,BACKGROUNDPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData popupmenu[] = {
- { DRAWCMD_Move, { 0,0 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,8191 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData popupselect[] = {
- { DRAWCMD_Move, { 0,16383 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 0,14335 }},
- { DRAWCMD_Draw, { 16383,14335 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 16383,16383 }},
- { DRAWCMD_Move, { 8191,14335 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 0,8192 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6144,8192 }},
- { DRAWCMD_Draw, { 6144,0 }},
- { DRAWCMD_Draw, { 10240,0 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 10240,8192 }},
- { DRAWCMD_Attr, { SHINEPEN,TEXTPEN }},
- { DRAWCMD_Draw, { 16383,8192 }},
- { DRAWCMD_Attr, { SHADOWPEN,TEXTPEN }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData ok[] = {
- { DRAWCMD_Move, { 0,12288 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,8192 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 6143,11264 }},
- { DRAWCMD_Attr, { SHINEPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 14336,11264 }},
- { DRAWCMD_Draw, { 14336,0 }},
- { DRAWCMD_Draw, { 16383,0 }},
- { DRAWCMD_Attr, { SHADOWPEN, TEXTPEN }},
- { DRAWCMD_Draw, { 16383,13312 }},
- { DRAWCMD_Draw, { 6143,13312 }},
- { DRAWCMD_Draw, { 6143,16383 }},
- { DRAWCMD_Fill, { FILLPEN, TEXTPEN }},
- { DRAWCMD_End }
- };
- static struct DrawData cancel[] = {
- };
- WORD x = msg->imp_Offset.X + im->LeftEdge;
- WORD y = msg->imp_Offset.Y + im->TopEdge;
- struct DrawData *v = NULL;
- switch (data->number)
- {
- case GUIIC_FileSelect:
- v = fileselect;
- break;
- case GUIIC_PopupMenu:
- v = popupmenu;
- break;
- case GUIIC_PopupSelect:
- v = popupselect;
- break;
- case GUIIC_Ok:
- v = ok;
- break;
- case GUIIC_Cancel:
- break;
- default:
- v = NULL;
- break;
- }
- drawOutlineImage(msg->imp_RPort,v,x,y,im->Width,im->Height,msg->imp_DrInfo,
- data->outline,data->plane,data->recessed,msg->imp_State);
- return FALSE;
- }
-
- // *************************************************************
-
- GUIImagesClass GUIImagesC::kic;
-
- // *************************************************************
-
-