farbpalette des framebuffers auslesen

stdin
Interessierter
Interessierter
Beiträge: 93
Registriert: Freitag 15. Oktober 2004, 18:40

farbpalette des framebuffers auslesen

Beitrag von stdin »

hi,

ich versuche an die farbpalette des fb zu kommen und raff es irgendwie nicht.

den fb lese ich über die ioctl-funktion aus und erhalte diesbezüglich 414_720 bytes zurück.
diese ergibt sich ja aus der verwendeten auflösung von 720x576 pixel.
somit entspricht 1 pixel einem byte, aber wo und wie komme ich an die farbpalette od. enthält die einzelnen bytes auch noch zugleich die rgb-werte und den aplha-wert)???
es dürfte doch eigentlich nur den verweis zur entsprechenden palettenfarbe enthalten.

könnte mir jemand weiter helfen???

cu...
buribu
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Mittwoch 6. Oktober 2004, 16:52

Beitrag von buribu »

Hallo, ich versuche mal ein wenig zu helfen. Du hast recht, ein Byte entspricht einem Pixel und stellt einen Verweis auf die Palettenfarbe dar.

Die Farbpalette (Colormap) holst und setzt du über ioctl-Aufrufe. Als Parameter wird ein struct fb_cmap genutzt, in der die Palettendaten zurückgegeben bzw. übergeben werden.

Aus dem Gedächtnis müsste das ungefähr so aussehen:

Code: Alles auswählen

#include <linux/fb.h>

static	struct fb_cmap				cmap;
/*	
	cmap.start  : first color in Palette
	cmap.len    : Count of colors in Palette
	cmap.red    : Array of unsigned short for red-value    of color[index] 
	cmap.green  : Array of unsigned short for green-value  of color[index]
	cmap.blue   : Array of unsigned short for blue-value   of color[index]
	cmap.transp : Array of unsigned short for transp-value of color[index]
*/

   // Holen der Palette
	if (ioctl(fb, FBIOGETCMAP, &cmap )<0)
	{
	  printf("Error in GetColormap");
	}	
	
   
   // Setzen der Palette
	if (ioctl(fb, FBIOPUTCMAP, &cmap )<0)
	{
		printf("Error in SetColormap");
	}	


Ich hoffe, das hilft ein wenig weiter.

buribu
stdin
Interessierter
Interessierter
Beiträge: 93
Registriert: Freitag 15. Oktober 2004, 18:40

Beitrag von stdin »

thx, ich habs :D :D :D
hatte ein denkfehler :oops: