Beispiel #1
0
static void getvisual(void)
{
    if (!(scr = LockPubScreen(0)))
    {
        cleanup("Can't lock pub screen!");
    }

    if (!(dri = GetScreenDrawInfo(scr)))
    {
        cleanup("Can't get screen drawinfo!");
    }

    vp = &scr->ViewPort;
    cm = vp->ColorMap;

    pen1 = ObtainPen(cm, -1, 0, 0, 0, PENF_EXCLUSIVE);
    pen2 = ObtainPen(cm, -1, 0, 0, 0, PENF_EXCLUSIVE);

    pens[0] = pen1;
    pens[1] = pen2;

    if ((pen1 == -1) || (pen2 == -1)) cleanup("Can't obtain 2 pens!");

    if (GetBitMapAttr(scr->RastPort.BitMap, BMA_DEPTH) >= 15) truecolor = TRUE;
}
Beispiel #2
0
IPTR Colorfield__MUIM_Setup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg)
{
    struct Colorfield_DATA *data = INST_DATA(cl,obj);

    if (!(DoSuperMethodA(cl, obj, (Msg)msg))) return 0;

    if (data->flags & FLAG_FIXED_PEN)
    {
    	SetRGB32(&_screen(obj)->ViewPort,
	    	 data->pen,
		 data->rgb[0],
		 data->rgb[1],
		 data->rgb[2]);
    }
    else
    {
    	LONG pen;
	
	pen = ObtainPen(_screen(obj)->ViewPort.ColorMap,
	    	    	(ULONG)-1,
			data->rgb[0],
			data->rgb[1],
			data->rgb[2],
			PENF_EXCLUSIVE);
			
	if (pen == -1)
	{
	    data->flags |= FLAG_NO_PEN;
	    data->pen = 0;
	}
	else
	{
    	    data->pen = (UBYTE)pen;
	    data->flags |= FLAG_PEN_ALLOCATED;
	}
    }
    
    return 1;
}