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); . . . .