BasicC/Okno
SDLOpen(flags)
edytujKomenda inicjuje SDL i otwiera okno graficzne, wykonuje następujące czynności:
- Inicjuje SDL i wszystkie jego komponenty komendą SDL_Init, w razie niepowodzenia przerywa program z błędem 1.
- Komendą SDL_CreateWindowAndRenderer otwiera okno i tworzy tzw. renderer, zwany dalej projektorem. Okno ma wymiary zdefiniowane stałymi WINDOWW i WINDOWH, domyślnie 640x400 pikseli. Parametr flags zawiera właściwości okna opisane poniżej. Wskaźnik na obiekt okna zawiera zmienna SDLWindow. Wskaźnik na obiekt projektora zawiera zmienna SDLRenderer. Projektor jest obiektem związanym z oknem, na którym wyświetlana jest akcelerowana sprzętowo grafika. Domyślnie włączona jest synchronizacja projektora z odświeżaniem monitora.
- Czyści projektor, czyli wypełnia go domyślnym kolorem - czarnym, komendą SDL_RenderClear.
- Zatrzymuje tryb wprowadzania tekstu.
- W zmiennej strukturalnej Display zapisuje parametry wyświetlacza.
- Inicjuje dostępne joysticki komendą SDL_JoystickOpen. Maksymalna ich ilość zapisana jest w stałej MAXJOYS, domyślnie 4.
- Zmiennej SDLTouchID przypisuje wskaźnik pierwszego urządzenia dotykowego.
- Inicjuje mikser dźwiękowy z domyślnymi parametrami komendą Mix_OpenAudio, jeśli załączona jest biblioteka SDL_mixer.
- Komendą SDL_LoadBMP ładowany jest obraz BASFont.bmp zawierający czcionki bitmapowe i ustawiana jest jego przeźroczystość. Obraz ten jest konwertowany na tzw. teksturę i przypisany do zmiennej BASFont.
- Inicjuje obsługę czcionek TTF, jeśli załączona jest biblioteka SDL_ttf.
Parametr flags może być jedną z wartości połączonych alternatywą bitową (|):
SDL_WINDOW_FULLSCREEN okno pełnoekranowe.
SDL_WINDOW_FULLSCREEN_DESKTOP okno pełnoekranowe w bieżącej rozdzielczości pulpitu.
SDL_WINDOW_OPENGL okno do użytku z kontekstem OpenGL.
SDL_WINDOW_HIDDEN okno ukryte.
SDL_WINDOW_BORDERLESS okno bez dodatków.
SDL_WINDOW_RESIZABLE możliwa zmiana wielkości okna.
SDL_WINDOW_MINIMIZED okno zminimalizowane.
SDL_WINDOW_MAXIMIZED okno zmaksymalizowanie.
SDL_WINDOW_INPUT_GRABBED okno z przechwyconym skupieniem wejścia.
SDL_WINDOW_ALLOW_HIGHDPI okno powinno być utworzone w trybie high-DPI, jeśli jest wspierany.
BasicC obsługuje tylko 1 okno. Więcej okien można obsługiwać standardowymi komendami SDL.
W systemach nie obsługujących typowych okien, np. Android, okno ma wymiary całego pulpitu bez względu na wartości WINDOWW i WINDOWH.
Przed wyjściem z programu należy usunąć stworzone obiekty SDL, takie jak obrazy (tekstury), i zakończyć SDL komendą SDLQuit.
GetDisplayMode
edytujWywołuje komendę SDL_GetCurrentDisplayMode(0,&Display);
W zmiennej Display zapisane zostają parmetry wyświetlacza (monitora):
Display.w - rozdzielczość pozioma
Display.h - rozdzielczość pionowa
Display.refresh_rate - częstotliwość odświeżania
Display.driverdata - dane sterownika grafiki
CenterWindow
edytujUstawia okno na środku ekranu komendą SDL_SetWindowPosition(SDLWindow,SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED);
CloseWindow
edytujUsuwa okno komendą SDL_DestroyWindow(SDL_Window);
FullscreenWindow
edytujPowiększa okno bez ramek do rozmiarów pulpitu komendą SDL_SetWindowFullscreen(SDLWindow,SDL_WINDOW_FULLSCREEN_DESKTOP);
GetWindowSize(w,h)
edytujZapisuje w zmiennych w i h wymiary okna głównego komendą SDL_GetWindowSize(SDLWindow,&w,&h);
MaximizeWindow
edytujPowiększa okno do rozmiarów pulpitu (z ramkami) komendą SDL_MaximizeWindow(SDLWindow);
MinimizeWindow
edytujMinimalizuje okno komendą SDL_MinimizeWindow(SDLWindow);
RestoreWindow
edytujPrzywraca poprzednią wielkośc okna komendą SDL_RestoreWindow(SDLWindow);
WindowPos(x,y)
edytujUstawia okno w pozycji x,y komendą SDL_SetWindowPosition(SDLWindow,x,y);
WindowSize(w,h)
edytujUstawia szerokość w i wysokość h okna komendą SDL_SetWindowSize(SDLWindow,w,h);
WindowVirtualSize(w,h)
edytujUstawia wirtualną szerokość w i wysokość h okna komendą SDL_RenderSetLogicalSize(SDLRenderer,w,h);
Okno dowolnej wielkości traktowane jest tak, jak by miało rozmiar w,h. Powoduje odpowiednie skalowanie współrzędnych graficznych.
Przykład:
#include "BasicSDL.h"
MAIN
SDLOpen(0)
GetDisplayMode
WindowSize(Display.w/2,Display.h/2)
CenterWindow
GPrintAt(300,300,"BasicC")
ShowPage
WaitInKey
SDLQuit
ENDMAIN