Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: kamillo121
Udoskonalił: Piotr DejaVu Szawdyński
Biblioteki C/C++

SDL_SetColors

[funkcja] Modyfikuje paletę kolorów powierzchni 8-bitowej.

Składnia

C/C++
#include <sdl/SDL.h>

int SDL_SetColors( SDL_Surface * surface, SDL_Color * colors, int firstcolor, int ncolors );

Argumenty

TypOpis
SDL_Surface* surfacePowierzchnia, która ma zostać zmodyfikowana.
SDL_Color* colorsWskaźnik na tablicę kolorów jakie mają zostać przypisane do wskazanej powierzchni.
int firstcolorIndeks pierwszego modyfikowanego koloru.
int ncolorsLiczba kolorów, która ma zostać zmodyfikowana. Kolory są modyfikowane począwszy od wskazanego indeksu poprzez argument firstcolor.

Zwracana wartość

Jeżeli funkcja jest powierzchnią, która nie posiada palety kolorów to funkcja nie wykonuje niczego i zwraca wartość 0.

Jeżeli wszystkie przekazane kolory są zgodne z dostępną paletą kolorów obecnego trybu graficznego, funkcja zwróci wartość 1.

Jeżeli którykolwiek z przekazywanych kolorów nie jest zgodny z dostępną paletą kolorów obecnego trybu graficznego, funkcja zwróci wartość 0.

Funkcja zawsze zwróci wartość 1 pod warunkiem, że funkcja » SDL 1.2SDL_SetVideoMode została wywołana z flagą SDL_HWPALETTE.

Opis szczegółowy

Funkcja modyfikuje fragment palety dla wskazanej 8-bitowej powierzchni.

Jeżeli przekazana powierzchnia będzie powierzchnią ekranu to domyślna paleta kolorów ekranu zostanie zaktualizowana żądanymi kolorami.

Powierzchnie ekranowe 8-bitowe utworzone z flagą SDL_HWPALETTE posiadają dwie palety kolorów, tj.:
  • paleta logiczna, która jest używana przy operacjach wykonywanych pomiędzy powierzchniami (i nie jest to powierzchnia ekranu);
  • paleta fizyczna, która używana jest przez warstwę sprzętową podczas wyświetlania powierzchni na ekran.

Dodatkowe informacje

Każda składowa koloru (R, G, B) w strukturze » SDL 1.2SDL_Color jest 8-bitowa, co daje możliwość zdefiniowania 16777216 kolorów.

Jeżeli flaga SDL_HWPALLETE została przekazana do funkcji » SDL 1.2SDL_SetVideoMode to powierzchnie rysowane na ekranie posiadają zawsze prawidłowe odwzorowanie kolorów nawet jeżeli wymaga to emulacji kolorów. W przeciwnym wypadku wyświetlane kolory mogą się różnić w stosunku do oryginalnej powierzchni.

Przykład

C/C++
SDL_Surface * screen;
SDL_Color colors[ 256 ];

/* Uzupełniamy dane dotyczące kolorów */
for( int i = 0; i < 256; i++ )
{
    colors[ i ].r = i;
    colors[ i ].g = i;
    colors[ i ].b = i;
}

/* tworzymy powierzchnię ekranową */
screen = SDL_SetVideoMode( 640, 480, 8, SDL_HWPALETTE );

if( !screen ) {
    printf( "Brak powierzchni graficznej: %s\n", SDL_GetError() );
    exit( - 1 );
}

/* Ustawiamy paletę kolorów */
SDL_SetColors( screen, colors, 0, 256 );

Zagadnienia powiązane

SDL_ColorReprezentuje określony kolor niezależnie od używanego formatu pikseli. (struktura)
SDL_SurfacePrzechowuje informacje o powierzchni. (struktura)
SDL_SetVideoModeTworzy bufor będący powierzchnią ekranu. (funkcja)

Linki zewnętrzne