Hi Denis,
   I did as you suggested and to my suprise i am getting the pixelformat as
      DSPF_RGB16,

I don't know why, i am using desktop PC, using Linux Framebuffer device,

So no how can i set the pixel format for DSPF_LUT8,

I am attaching the sample code that i modifed to bare minimum.

Please help me with this.

regards
animesh


On Thu, Mar 20, 2008 at 3:23 AM, Denis Oliver Kropp <[EMAIL PROTECTED]>
wrote:

> animesh wrote:
> > Hi,
> >   My code is not working, it always crashes at the SetColorIndex giving
> > the following message
> >
> > (#) DirectFBError [primary->SetColorIndex(primary, 0)]: Not supported!
> >
> > Can anyone provide me with an working code or suggest any modification
> > in present code, so that SetColorIndex, can work.
> >
> > Basicaly i am trying to do this.
> > 1) Create on surface with Palette support.
> > 2) Set the palette to the surface.
> > 3) Then access a particular color in the Palette uing setcolorindex.
> > 4) Draw a rectangle using that color.
> >
> > Can anyone suggest where i am getting wrong.
>
> Your code looks fine. Can you add a primary->GetPixelFormat() and report
> back?
>
> --
> Best regards,
>   Denis Oliver Kropp
>
> .------------------------------------------.
> | DirectFB - Hardware accelerated graphics |
> | http://www.directfb.org/                 |
> "------------------------------------------"
>



-- 
Regards,
Animesh Bhadra,
+91-9880868571
#include <stdio.h>
#include <unistd.h>
#include <directfb.h>

static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;
static IDirectFBPalette     *palette = NULL;

static int screen_width  = 0;
static int screen_height = 0;



#define DFBCHECK(x...)                                         	\
{                                                            	\
	DFBResult err = x;                                   	\
								\
	if (err != DFB_OK)                                   	\
	{                                                        \
		fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \
		DirectFBErrorFatal( #x, err );                         \
	}                                                        \
}

int main (int argc, char **argv)
{
    	DFBColor  colors[256];
    	DFBColor  plt_colors[256];
    	unsigned int       i = 0;
	DFBSurfaceDescription dsc;
	DFBSurfacePixelFormat dfbpixelformat;

	/*Create the super interface*/
	DFBCHECK (DirectFBInit (&argc, &argv));
	DFBCHECK (DirectFBCreate (&dfb));
	DFBCHECK (dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN));

	/*Configure Palette*/
	/* colors[0].a = 0xff;
	 colors[0].r = 0xFF;
	 colors[0].g = 0x00;
	 colors[0].b = 0x00;

	 colors[1].a = 0xFF;
	 colors[1].r = 0x00;
	 colors[1].g = 0xFF;
	 colors[1].b = 0x00;

	 colors[2].a = 0xFF;
	 colors[2].r = 0x00;
	 colors[2].g = 0x00;
	 colors[2].b = 0xFF;
*/

	for (i = 0; i < 256; i++)
	{
	 colors[i].a = 0xFF;
	 colors[i].r = 0x00;
	 colors[i].g = 0xFF;
	 colors[i].b = 0x00;
	}

	dsc.flags = DSDESC_CAPS | DSDESC_PIXELFORMAT | DSDESC_PALETTE;
	dsc.caps  = DSCAPS_PRIMARY;
	dsc.pixelformat = DSPF_LUT8;
	dsc.palette.size = 256;
	dsc.palette.entries = colors;
	
	DFBCHECK (dfb->CreateSurface( dfb, &dsc, &primary ));
	printf("CreateSurface \n");
	DFBCHECK (primary->GetSize (primary, &screen_width, &screen_height));
	
	/* get access to the palette */
	DFBCHECK(primary->GetPalette(primary, &palette ));
	i = 0;
	
	DFBCHECK(palette->GetSize(palette, &i ));
	printf("palette size = %d\n", i);
	
	DFBCHECK(palette->GetEntries(palette, plt_colors, i, 0 ));
	printf("alpha = %x....Red = %x, Green = %x Blue = %x\n", plt_colors[0].a, plt_colors[0].r, plt_colors[0].g, plt_colors[0].b);
	
	DFBCHECK(palette->SetEntries( palette, colors, 256, 0 ));
	DFBCHECK(palette->GetEntries(palette, plt_colors, i, 0 ));
	printf("alpha = %x....Red = %x, Green = %x Blue = %x\n", plt_colors[0].a, plt_colors[0].r, plt_colors[0].g, plt_colors[0].b);
	printf("Screen Width = %d, Screen Height = %d\n",screen_width, screen_height );
	
	DFBCHECK(primary->GetPixelFormat(primary, &dfbpixelformat));

	switch (dfbpixelformat)
	{
		case DSPF_UNKNOWN:
			printf("DSPF_UNKNOWN \n");
			break;
		case DSPF_ARGB1555:
			printf("DSPF_ARGB1555 \n");
			break;
		case DSPF_RGB16:
			printf("DSPF_RGB16 \n");
			break;
		case DSPF_RGB24:
			printf("DSPF_RGB24 \n");
			break;
		case DSPF_RGB32:
			printf("DSPF_RGB32 \n");
			break;
		case DSPF_ARGB:
			printf("DSPF_ARGB \n");
			break;
		case DSPF_A8:
			printf("DSPF_A8 \n");
			break;
		case DSPF_YUY2:
			printf("DSPF_YUY2 \n");
			break;
		case DSPF_RGB332:
			printf("DSPF_RGB332 \n");
			break;
		case DSPF_UYVY:
			printf("DSPF_UYVY \n");
			break;
		case DSPF_I420:
			printf("DSPF_I420 \n");
			break;
		case DSPF_YV12:
			printf("DSPF_YV12 \n");
			break;
		case DSPF_LUT8:
			printf("DSPF_LUT8 \n");
			break;
		default:
			printf("pixel format not found \n");
	}

	DFBCHECK(primary->SetColorIndex(primary, 0));
	DFBCHECK (primary->FillRectangle (primary, 200, 100, 100, 100));
	printf("Rectangle With Blue Color\n");

	DFBCHECK (primary->Flip (primary, NULL, 0));
	sleep (4);
	
	palette->Release(palette);
	primary->Release( primary );
	dfb->Release( dfb );

	return 23;
}
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to