static void cleanup(char *msg) { if (msg) printf("colorwheel: %s\n", msg); if (win) { if (wheelgad) RemoveGadget(win, wheelgad); if (gradgad) RemoveGadget(win, gradgad); CloseWindow(win); } if (wheelgad) DisposeObject((Object *)wheelgad); if (gradgad) DisposeObject((Object *)gradgad); if (pen1 != -1) ReleasePen(cm, pen1); if (pen2 != -1) ReleasePen(cm, pen2); if (dri) FreeScreenDrawInfo(scr, dri); if (scr) UnlockPubScreen(0, scr); if (ColorWheelBase) CloseLibrary(ColorWheelBase); if (GradientSliderBase) CloseLibrary(GradientSliderBase); if (UtilityBase) CloseLibrary((struct Library *)UtilityBase); if (GfxBase) CloseLibrary((struct Library *)GfxBase); if (IntuitionBase) CloseLibrary((struct Library *)IntuitionBase); exit(0); }
// Free backfill pattern; pattern must be locked exclusively void FreePattern(PatternData *pattern) { // Mark as invalid pattern->valid=FALSE; // Free object if (pattern->object) { DisposeDTObject(pattern->object); pattern->object=0; } // Got a border pen? if (pattern->border_pen!=0) { if (pattern->border_pen==-1) pattern->border_pen=0; ReleasePen(pattern->screen->ViewPort.ColorMap,pattern->border_pen); pattern->border_pen=0; } // Free friend bitmap if (pattern->pattern_bitmap) { DisposeBitMap(pattern->pattern_bitmap); pattern->pattern_bitmap=0; } // Clear bitmap pointer pattern->bitmap=0; }
// Get border pen void GetPatternBorder(PatternData *pattern,struct Screen *screen,ULONG border_col) { // Do nothing under 37 if (((struct Library *)GfxBase)->lib_Version<39) return; // Free existing border pen if (pattern->border_pen!=0) { if (pattern->border_pen==-1) pattern->border_pen=0; ReleasePen(screen->ViewPort.ColorMap,pattern->border_pen); pattern->border_pen=0; } // Want a border pen? if (border_col&ENVBF_USE_COLOUR) { // Try to allocate pen if ((pattern->border_pen= ObtainBestPen( screen->ViewPort.ColorMap, ENVBF_COL_R_GET(border_col)<<24, ENVBF_COL_G_GET(border_col)<<24, ENVBF_COL_B_GET(border_col)<<24, OBP_Precision,PRECISION_IMAGE, TAG_END))==0) pattern->border_pen=-1; else if (pattern->border_pen==-1) pattern->border_pen=0; } }
IPTR Levelmeter__MUIM_Cleanup(struct IClass *cl, Object *obj, struct MUIP_Cleanup *msg) { struct Levelmeter_DATA *data = INST_DATA(cl, obj); if (data->levelbgpen != -1) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->levelbgpen); data->levelbgpen = -1; } return DoSuperMethodA(cl, obj, (Msg)msg); }
IPTR Colorfield__MUIM_Cleanup(struct IClass *cl, Object *obj, struct MUIP_Cleanup *msg) { struct Colorfield_DATA *data = INST_DATA(cl,obj); if (data->flags & FLAG_PEN_ALLOCATED) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->pen); data->flags &= ~FLAG_PEN_ALLOCATED; data->pen = 0; } data->flags &= ~FLAG_NO_PEN; return DoSuperMethodA(cl, obj, (Msg)msg); }
void statusbar_destroy(video_canvas_t *canvas) { int i; for (i=0; i<b_num; i++) { if (canvas->os->pens[i] != -1) { ReleasePen(canvas->os->window->WScreen->ViewPort.ColorMap, canvas->os->pens[i]); canvas->os->pens[i] = -1; } } if (canvas->os->font != NULL) { CloseFont(canvas->os->font); canvas->os->font = NULL; } canvas->os->has_statusbar = 0; }
void shutdownwnd_close(void) { if (shutdown_wnd) { CloseWindow(shutdown_wnd); shutdown_wnd = NULL; } if (obj) { DisposeObject(obj); obj = NULL; } if (scr) { ReleasePen(scr->ViewPort.ColorMap,pen); UnlockPubScreen(NULL,scr); scr = NULL; } }
IPTR Colorfield__OM_SET(struct IClass *cl, Object *obj, struct opSet *msg) { struct Colorfield_DATA *data; const struct TagItem *tags; struct TagItem *tag; ULONG *rgb; BOOL newcol = FALSE; IPTR retval; data = INST_DATA(cl, obj); for (tags = msg->ops_AttrList; (tag = NextTagItem(&tags)); ) { switch (tag->ti_Tag) { case MUIA_Colorfield_Red: data->rgb[0] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_Green: data->rgb[1] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_Blue: data->rgb[2] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_RGB: rgb = (ULONG *)tag->ti_Data; data->rgb[0] = *rgb++; data->rgb[1] = *rgb++; data->rgb[2] = *rgb++; newcol = TRUE; break; case MUIA_Colorfield_Pen: if (data->flags & FLAG_PEN_ALLOCATED) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->pen); data->flags &= ~(FLAG_PEN_ALLOCATED | FLAG_NO_PEN); } data->pen = (UBYTE)data->pen; data->flags |= FLAG_FIXED_PEN; break; } } retval = DoSuperMethodA(cl, obj, (Msg)msg); if (newcol && (_flags(obj) & MADF_SETUP) && !(data->flags & FLAG_NO_PEN)) { SetRGB32(&_screen(obj)->ViewPort, data->pen, data->rgb[0], data->rgb[1], data->rgb[2]); if (GetBitMapAttr(_rp(obj)->BitMap, BMA_DEPTH) > 8) { MUI_Redraw(obj, MADF_DRAWUPDATE); } } return retval; }