Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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;
	}
}
Ejemplo n.º 4
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
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;
	}
}
Ejemplo n.º 8
0
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;
}