SDL SetColors

Aus DGL Wiki
Wechseln zu: Navigation, Suche

SDL_SetColors

Name

SDL_SetColors - Setzt einen Teil der Farbpalette für eine gegebene 8-bit Surface


Delphi-Spezifikation

function SDL_SetColors(surface: PSDL_Surface; colors: PSDL_Color; firstcolor : Integer; ncolors: Integer) : Integer;


Parameter

surface 8-Bit Surface
colors Zeiger auf ein Array von PSDL_Color
firstcolor Erster Eintrag der Palette welcher geändert werden soll.
ncolors Anzahl der Einträge die ab firstcolor geändert werden sollen.


Beschreibung

Setzt einen Teil der Farbpalette für eine gegebene 8-bit Surface.

Falls surface die aktuelle Displaysurface ist, so wird die Displayfarbpalette auf die angeforderten Farben geänert. Falls SDL_HWPALETTE bei SDL_SetVideoMode gesetzt wurde, so wird SDL_SetColors immer 1 zurückgeben und es wird garantiert, dass die Palette wie gewünscht gesetzt wird, auch wenn die Displaypalette verbogen werden muss oder es unter Emulation laufen muss.

The Farbkomponenten einer SDL_Color-Struktur sind 8-Bit gross, womit man 256³ = 16777216 Farben zur Verfügung hat.

Palettierte (8-bit) Displaysurface mit SDL_HWPALETTE Flag haben zwei Paletten, eine logische Palette, welche für das Blitten aus/in die Surface benutzt wird, und eine physikalische Palette, welche bestimmt wie die Hardware die Farben auf das Display bringt. SDL_SetColors verändert beide Paletten (falls vorhanden), und ist äquivalent zu einem Aufruf von SDL_SetPalette mit (SDL_LOGPAL or SDL_PHYSPAL) als Flag.


Rückgabewert

Falls surface keine palettierte Surface ist, macht diese Funktion nichts und gibt 0 zurück. Falls alle Farben korrekt gesetzt wurden, wird 1 zurückgesetzt. Falls nicht alle Farbeinträge gesetzt werden konnten wird 0 zurückgegeben und man sollte sich die Surface-Palette anschauen um die aktuelle Palette festzustellen.


Beispiel

// Erstellt eine Displaysurface mit einer Graufarbenpalette.
var
	screen: PSDL_Surface;
	colors: Array[0..255] of TSDL_Color;
	i: Integer;
begin
	.
	.
	.
	// Fülle colors mit den Farbinformationen
	for i:=0 to 255 do
	begin
		colors[i].r := i;
		colors[i].g := i;
		colors[i].b := i;
	end;

	// Erstelle das Display 
	screen := SDL_SetVideoMode(640, 480, 8, SDL_HWPALETTE);
	if not Assigned(screen) then
	begin
	  writeln('Couldn''t set video mode: ', SDL_GetError());
	  exit;
	end;

	// Setzt die Palette
	SDL_SetColors(screen, @colors[0], 0, 256);
	.
	.
	.
	.


Siehe auch

SDL_Color, SDL_Surface, SDL_SetPalette, SDL_SetVideoMode