Example #1
0
void Amiga_SetScreenColors(void){
	FILE *file;
	UWORD depth;
	int num_colors_on_file;
	long lokke;
	int lokke2;
	long num_colors=1;
	char temp[100];
	ULONG rgb[3];

	file=fopen("radium:radiumcolors.conf","r");
	if(file==NULL) return;

	depth=GetBitMapAttr(mainscreen->RastPort.BitMap,BMA_DEPTH);
	for(lokke=0;lokke<depth;lokke++){
		num_colors*=2;
	}

	fgets(temp,90,file);
	num_colors_on_file=atoi(temp);

	for(lokke=0;lokke<num_colors_on_file;lokke++){
		if(lokke>=num_colors || lokke==256) break;
		for(lokke2=0;lokke2<3;lokke2++){
			fgets(temp,90,file);
			rgb[lokke2]=strtoul(temp,NULL,10);
		}
		SetRGB32(&mainscreen->ViewPort,lokke,rgb[0],rgb[1],rgb[2]);
	}

	fclose(file);
}
Example #2
0
static void makegads(void)
{
    struct ColorWheelRGB    rgb;
    struct ColorWheelHSB    hsb;
    Object  	    	    *im;
    WORD    	    	    sizeheight = 14;
    WORD    	    	    gradx, grady, gradw, gradh;
    WORD    	    	    wheelx, wheely, wheelw, wheelh;

    im = NewObject(NULL, SYSICLASS, SYSIA_DrawInfo, (IPTR)dri, SYSIA_Which, SIZEIMAGE, TAG_DONE);
    if (im)
    {
        sizeheight = ((struct Image *)im)->Height;
        DisposeObject(im);
    }

    wheelx = scr->WBorLeft + BORDERX;
    wheely = scr->WBorTop + scr->Font->ta_YSize + 1 + BORDERY;
    wheelw = -(scr->WBorLeft + scr->WBorRight + BORDERX * 2 + SPACINGX + GRADWIDTH);
    wheelh = -(scr->WBorTop + scr->Font->ta_YSize + 1 + sizeheight + BORDERY * 2);

    gradx = -(scr->WBorRight + BORDERX + GRADWIDTH) + 1;
    grady = scr->WBorTop + scr->Font->ta_YSize + 1 + BORDERY;
    gradw = GRADWIDTH;
    gradh = -(scr->WBorTop + scr->Font->ta_YSize + 1 + sizeheight + BORDERY * 2);

    gradgad = (struct Gadget *)NewObject(0, "gradientslider.gadget", GA_RelRight	, gradx,
                                         GA_Top		, grady,
                                         GA_Width		, gradw,
                                         GA_RelHeight	, gradh,
                                         GRAD_PenArray	, (IPTR)pens,
                                         GRAD_KnobPixels	, 10,
                                         PGA_Freedom	, LORIENT_VERT,
                                         TAG_DONE);

    if (!gradgad) cleanup("Can't create gradientslider gadget!");

    wheelgad = (struct Gadget *)NewObject(0, "colorwheel.gadget", GA_Left		, wheelx,
                                          GA_Top		, wheely,
                                          GA_RelWidth		, wheelw,
                                          GA_RelHeight		, wheelh,
                                          GA_RelVerify		, TRUE,
                                          WHEEL_Screen		, (IPTR)scr,
                                          WHEEL_BevelBox	, TRUE,
                                          WHEEL_GradientSlider	, (IPTR)gradgad,
                                          GA_Previous		, (IPTR)gradgad,
                                          ICA_TARGET		, ICTARGET_IDCMP,
                                          TAG_DONE);

    if (!wheelgad) cleanup("Can't create colorwheel gadget!");

    GetAttr(WHEEL_HSB, (Object *)wheelgad, (IPTR *)&hsb);
    hsb.cw_Brightness = 0xFFFFFFFF;
    ConvertHSBToRGB(&hsb, &rgb);

    SetRGB32(vp, pen1, rgb.cw_Red, rgb.cw_Green, rgb.cw_Blue);
}
Example #3
0
static void handleall(void)
{
    struct IntuiMessage *msg;
    BOOL		quitme = FALSE;

    while(!quitme)
    {
        WaitPort(win->UserPort);

        while ((msg = (struct IntuiMessage *)GetMsg(win->UserPort)))
        {
            switch(msg->Class)
            {
            case IDCMP_CLOSEWINDOW:
                quitme = TRUE;
                break;

            case IDCMP_IDCMPUPDATE:
            {
                struct ColorWheelRGB rgb;
                struct ColorWheelHSB hsb;
                struct TagItem	     *tags = (struct TagItem *)msg->IAddress;

                hsb.cw_Hue        = GetTagData(WHEEL_Hue, 0, tags);
                hsb.cw_Saturation = GetTagData(WHEEL_Saturation, 0, tags);
                hsb.cw_Brightness = 0xFFFFFFFF;

                ConvertHSBToRGB(&hsb, &rgb);

                SetRGB32(vp, pen1, rgb.cw_Red, rgb.cw_Green, rgb.cw_Blue);

                if (truecolor)
                {
                    RefreshGList(gradgad, win, 0, 1);
                }
            }
            break;

            } /* switch(msg->Class) */

            ReplyMsg((struct Message *)msg);

        } /* while ((msg = (struct IntuiMessage *)GetMsg(win->UserPort))) */

    } /* while(!quitme) */

}
Example #4
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;
}
Example #5
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;
}
Example #6
0
LONG Blank( PrefObject *Prefs )
{
	LONG delay_rate, i, j, counter = 0, RetVal = OK;
	struct RastPort *Rast;
	struct Screen *FTScr;
	struct Window *FTWin;
	struct Window *Wnd;
	
	NumToasters = Prefs[OBJECTS].po_Level;
	delay_rate = 11 - Prefs[SPEED].po_Level;
	
	Toasters = AllocVec( sizeof( Toaster ) * NumToasters, MEMF_CLEAR );
	FTScr = OpenScreenTags( NULL, SA_DisplayID, Prefs[MODE].po_ModeID,
						   SA_Depth, 4, SA_Overscan, OSCAN_STANDARD,
						   SA_Type, CUSTOMSCREEN, SA_Quiet, TRUE,
						   SA_Behind, TRUE, TAG_DONE );
	if( Toasters && FTScr )
	{
		for( i = 0; i < 48; i += 3 )
			if( GfxBase->lib_Version < 39 )
				SetRGB4(&( FTScr->ViewPort ), i/3, ( cmap[i] * 16 ) / 256,
						( cmap[i+1] * 16 ) / 256, ( cmap[i+2] * 16 ) / 256 );
			else
				SetRGB32(&( FTScr->ViewPort ), i/3, cmap[i]<<24, cmap[i+1]<<24,
						 cmap[i+2]<<24 );
		FTWin = OpenWindowTags( 0L, WA_Width, FTScr->Width, WA_Height,
							   FTScr->Height, WA_IDCMP, 0L, WA_Flags,
							   WFLG_SIMPLE_REFRESH|WFLG_BORDERLESS,
							   WA_CustomScreen, FTScr, TAG_DONE );
		if( FTWin )
		{
			Rast = FTWin->RPort;
			SetAPen( Rast, 0 );
			
			for( i = 0; i < NumToasters; i++ )
				if( !FindLaunchPos( i, ( LONG )FTWin->Width,
								   ( LONG )FTWin->Height ))
					Toasters[i].delay = 30;
			
			Wnd = BlankMousePointer( FTScr );
			ScreenToFront( FTScr );
			
			while( RetVal == OK )
			{
				WaitTOF();
				
				if(!( ++counter % 60 ))
					ScreenToFront( FTScr );
				
				if(!( counter % delay_rate ))
				{
					for( i = 0; i < NumToasters; i++ )
					{
						if( !Toasters[i].delay )
						{
							Toasters[i].old_x = Toasters[i].x;
							Toasters[i].old_y = Toasters[i].y;
							Toasters[i].x -= Toasters[i].xspeed;
							Toasters[i].y += Toasters[i].yspeed;
							Toasters[i].xcol = -1;
							Toasters[i].ycol = -1;
						}
					}

					for( i = 0; i < NumToasters; i++ )
					{
						if( !Toasters[i].delay )
						{
							j = -1;
							while(( j = TestExtent( j+1, i, Toasters[i].x,
												   Toasters[i].y )) >= 0 )
							{
								if( abs( Toasters[j].old_x -
										Toasters[i].old_x ) < IM_WIDBUF )
								{
									if( Toasters[i].y < Toasters[j].y )
										Toasters[i].ycol = j;
									if( Toasters[i].xspeed ==
									   Toasters[j].xspeed )
										Toasters[i].xspeed++;
								}
								else
								{
									if( Toasters[i].x > Toasters[j].x )
										Toasters[i].xcol = j;
									if( Toasters[i].yspeed ==
									   Toasters[j].yspeed )
										Toasters[i].yspeed++;
								}
								if( abs( Toasters[j].old_y -
										Toasters[i].old_y ) < IM_HEIBUF )
								{
									if( Toasters[i].x > Toasters[j].x )
										Toasters[i].xcol = j;
									if( Toasters[i].yspeed ==
									   Toasters[j].yspeed )
										Toasters[i].yspeed++;
								}
							}
						}
					}

					for( i = 0; i < NumToasters; i++ )
					{
						if( !Toasters[i].delay )
						{
							Toasters[i].x = Toasters[i].old_x - ActXSpeed( i );
							Toasters[i].y = Toasters[i].old_y + ActYSpeed( i );
						}
					}
					
					for( i = 0; i < NumToasters; i++ )
					{
						if( !Toasters[i].delay )
						{
							j = -1;
							while(( j = TestExtent( j+1, i, Toasters[i].x,
												   Toasters[i].y )) >= 0 )
							{
								if( abs( Toasters[j].old_x -
										Toasters[i].old_x ) < IM_WIDBUF )
									if( Toasters[i].x > Toasters[j].x )
										Toasters[i].x = Toasters[i].old_x;
								else
									if( Toasters[i].y < Toasters[j].y )
										Toasters[i].y = Toasters[i].old_y;
								if( abs( Toasters[j].old_y -
										Toasters[i].old_y ) < IM_HEIBUF )
									if( Toasters[i].y < Toasters[j].y )
										Toasters[i].y = Toasters[i].old_y;
							}
						}
					}

					for( i = 0; i < NumToasters; i++ )
					{
						if( !Toasters[i].delay )
						{
							Toasters[i].phase =
								( Toasters[i].phase + 1 ) % IMAGEMAX;
							EraseRect( Rast, Toasters[i].x + IM_WIDTH,
									  Toasters[i].old_y, Toasters[i].x +
									  IM_WIDTH + Toasters[i].xspeed,
									  Toasters[i].old_y + IM_HEIGHT );
							EraseRect( Rast, Toasters[i].old_x,
									  Toasters[i].old_y,
									  Toasters[i].old_x + IM_WIDTH,
									  Toasters[i].old_y + Toasters[i].yspeed );
							DrawImage( Rast, img[Toasters[i].phase],
									  Toasters[i].x, Toasters[i].y );
							if(( Toasters[i].x < -IM_WIDTH-1 )||
							   ( Toasters[i].y > FTWin->Height ))
								Toasters[i].delay = RangeRand( 50 );
						}
						else
							if(!( --Toasters[i].delay ))
								Toasters[i].delay =
									FindLaunchPos( i, ( LONG )FTWin->Width,
												  ( LONG )FTWin->Height )
										? 0 : 30;
					}
				}
				RetVal = ContinueBlanking();
			}

			SetSignal( 0L, SIGBREAKF_CTRL_C );
			UnblankMousePointer( Wnd );
			CloseWindow( FTWin );
		}
		else
			RetVal = FAILED;
		CloseScreen( FTScr );
	}
	else
		RetVal = FAILED;
	
	FreeVec( Toasters );

	return RetVal;
}
Example #7
0
/**************************************************************************************
** Main 
***************************************************************************************
*/
VOID main()
{

struct Screen *pubscreen;
struct ViewPort *vp;

	if ( !(GfxBase = OpenLibrary("graphics.library",0)) )	
		return(NULL);
		
	if ( !(IntuitionBase = OpenLibrary("intuition.library",0)) )	
	{
		CloseLibrary(GfxBase);
		return(NULL);
	}
	
	pubscreen = LockPubScreen(NULL);
	vp = &pubscreen->ViewPort;	

	SetRGB32 (vp, 4, 123<<24, 123<<24, 123<<24 );
	SetRGB32 (vp, 5, 175<<24, 175<<24, 175<<24 );
	SetRGB32 (vp, 6, 170<<24, 144<<24, 124<<24 );				
	SetRGB32 (vp, 7, 255<<24, 169<<24, 151<<24 );
	SetRGB32 (vp, 8, 0, 0, 255<<24 );
	SetRGB32 (vp, 9, 50<<24, 50<<24, 50<<24 );
	SetRGB32 (vp, 10, 96<<24, 128<<24, 96<<24 );
	SetRGB32 (vp, 11, 226<<24, 209<<24, 119<<24 );
	SetRGB32 (vp, 12, 255<<24, 212<<24, 203<<24 );
	SetRGB32 (vp, 13, 122<<24, 96<<24,  72<<24 );
	SetRGB32 (vp, 14, 210<<24, 210<<24, 210<<24 );
	SetRGB32 (vp, 15, 229<<24, 93<<24, 93<<24 );

	UnlockPubScreen(NULL,pubscreen);

	CloseLibrary(IntuitionBase);
	CloseLibrary(GfxBase);
	return(NULL);
}