BasicC/Projektor
Uwaga! Od wersji 1.35 uniaBASSDLColorzostała zastąpiona tablicami:Colorjest 3-elementową tablicą liczbUint32, do przechowywania wartości 3 kolorów, zamiast wcześniejszychColor,ColorB,ColorC, aColorBjest tablicą 12-elementową liczb Uint8 wskazującą na ten sam obszar pamięci, za pomocą której można odczytywać poszczególne składowe RGBA tych kolorów, np:ColorB[0]- wartość składowej R koloruColor[0],ColorB[5]- składowa GColor[1].
ColorRGBA(r,g,b,a)
[edytuj]Ustawia kolor rysowania w formacie RGBA. Dotyczy on takich komend jak Cls, Plot, Line... Nie dotyczy np. GPrint, dla którego kolor ustawia się oddzielnie. Jest to podstawowa i najszybsza komenda ustawiania koloru.
Uwaga: komenda nie zmienia wartości zmiennej Color.
Color(k)
[edytuj]Ustawia kolor rysowania w formacie liczby typu Uint32 (całkowita, dodatnia, 32-bitowa). Ustawia również wartość zmiennej Color[0] używanej np. do pisania czcionką TTF.
SDL_Color to struktura przechowująca kolor RGBA o polach:
Uint8 r składowa czerwona w zakresie 0-255
Uint8 g składowa zielona w zakresie 0-255
Uint8 b składowa niebieska w zakresie 0-255
Uint8 a składowa alfa (przezroczystość) w zakresie 0-255
Colors(F,B)
[edytuj]Ustawia zmienne Color[0] i Color[1], czyli wykonuje {Color[0]=F;Color[1]=B;}
ColorSDL(C)
[edytuj]Ustawia kolor rysowania na zapisany w zmiennej C typu SDL_Color. Wywołuje SDL_SetRenderDrawColor(SDLRenderer,C.r,C.g,C.b,C.a);
RGBA(R,G,B,A)
[edytuj]Funkcja zwraca nr koloru podanego w formacie RGBA.
Cls
[edytuj]Czyści ekran. Dokładnie wypełnia projektor (lub inny target) wybranym wcześniej kolorem (domyślnie czarny). Wskazane jest czyszczenie ekranu i wygenerowanie całego widoku ponownie w każdym przebiegu pętli głównej. Wykonuje SDL_RenderClear(SDLRenderer);
ClRect(X,Y,W,H)
[edytuj]Jak Cls, ale dla danego prostokątnego obszaru targetu.
IntScaling(enable)
[edytuj]Gdy włączone wynosi 1 komenda włącza skalowanie całkowite przy rysowaniu niezależnym od rozdzielczości, gdy 0 - wyłącza. Wykonuje SDL_RenderSetIntegerScale(SDLRenderer,enable);
SetScale(scaleX,scaleY)
[edytuj]Ustawia współczynniki skalowania dla rysowania. Wywołuje SDL_RenderSetScale(SDLRenderer,scaleX,scaleY);
Clip(X,Y,W,H)
[edytuj]Ustawia obszar dla rysowania. Obiekty poza tym obszarem nie będą wyświetlane. Wykonuje {DST.x=X;DST.y=Y;DST.w=W;DST.h=H;SDL_RenderSetClipRect(SDLRenderer,&DST);}
ClipOff
[edytuj]Wyłącza obcinanie ustawione komendą Clip.
SDLColor(C,R,G,B,A)
[edytuj]Wpisuje odpowiednie wartości R G B A w zmiennej C typu SDL_Color. Wykonuje {C.r=R;C.g=G;C.b=B;C.a=A;}. Do wersji 1.34 komenda miała postać SDL_Color.
SetDrawBlendMode(Mode)
[edytuj]Ustawia tryb mieszania używany przy operacjach rysunkowych (np. linie). Najpopularniejszy to SDL_BLENDMODE_BLEND czyli 1, 0, to brak mieszania. Wywołuje SDL_SetRenderDrawBlendMode(SDLRenderer,Mode);, szczegóły w dokumentacji.
Zdefiniowany jest dodatkowy tryb zwracany przez SDL_BLENDMODE_REV (jest to makro wywołujące SDL_ComposeCustomBlendMode), obraz w tym trybie (jeśli jest on obsługiwany przez system) skopiowany do targetu w kolorze białym daje obraz w odwróconych kolorach. Wykonuje operację SDL_BLENDOPERATION_REV_SUBTRACT, która, wg dokumentacji SDL, wykonuje odejmowanie kolorów i kanału alfa SRC-DST, gdzie SRC to obraz źródłowy, a DSC - target, wydaję się jednak, że faktycznie wykonywane jest DST-SRC. Kolejny zdefiniowany tryb to SDL_BLENDMODE_SUB wykonujący SDL_BLENDOPERATION_SUBTRACT, powoduje odwrócenie kolorów jeśli nałożymy na dany obraz piksele w białym kolorze.
ShowPage
[edytuj]Powoduje wyświetlenie zawartości projektora, czyli odświeża widok okna. Jeśli VSYNC jest 1 (domyślnie) program jest wstrzymywany do czasu odświeżenia ekranu monitora. Wywołuje SDL_RenderPresent(SDLRenderer);
Viewport(X,Y,W,H)
[edytuj]Ustawia obszar rysowania. Wykonuje {DST.x=X;DST.y=Y;DST.w=W;DST.h=H;SDL_RenderSetViewport(SDLRenderer,&DST);}
Przykład:
#include "BasicSDL.h"
MAIN
SDLOpen(0)
Color(-255)
Viewport(100,100,300,300)
Circle(50,50,100)
PRect(50,100,50,50)
Color(255)
PRect(75,125,50,50)
SetScale(2,2)
Circle(50,50,100)
SetDrawBlendMode(1)
ColorRGBA(255,255,0,127)
PRect(0,0,50,60)
ShowPage
WaitInKey
SDLQuit
ENDMAIN