SDL SetColors
Inhaltsverzeichnis
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);
.
.
.
.