BasicC/Okno
SDLOpen(flags)
[edytuj]Komenda 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łędem1. - Komendą
SDL_CreateWindowAndRendererotwiera okno i tworzy tzw. renderer, zwany dalej projektorem. Okno ma wymiary zdefiniowane stałymiWINDOWWiWINDOWH, domyślnie640x400pikseli. Parametr flags zawiera właściwości okna opisane poniżej. Wskaźnik na obiekt okna zawiera zmiennaSDLWindow. Wskaźnik na obiekt projektora zawiera zmiennaSDLRenderer. 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łejMAXJOYS, domyślnie4. - Zmiennej
SDLTouchIDprzypisuje wskaźnik pierwszego urządzenia dotykowego. - Inicjuje wybrany system dźwiękowy, jeśli załączona jest odpowiednia biblioteka - BasicSND lub SDL_MIXER.
- Komendą
SDL_LoadBMPładowany jest obrazBASFont.bmpzawierający czcionki bitmapowe i ustawiana jest jego przeźroczystość. Obraz ten jest konwertowany na tzw. teksturę i przypisany do zmiennejBASFont. - 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.
Po wykonaniu SDLOpen zmienna SDLSurface wskazuje na obraz typu SDL_Surface zawierający czcionki. Można to wykorzystać do stworzenia czcionki odwróconej komendą InvertImgSurface(SDLSurface,OC), gdzie OC jest zmienną typu SDL_Texture, która będzie wskazywała na obraz odwróconej czcionki, należy ją wcześniej zadeklarować. Jest to zalecana metoda, gdyż tryb mieszania SDL_BLENDMODE_REV nie zawsze jest dostępny.
GetDisplayMode
[edytuj]Wywołuje komendę SDL_GetCurrentDisplayMode(0,&Display);
W zmiennej Display zapisane zostają parametry 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
[edytuj]Ustawia okno na środku ekranu komendą SDL_SetWindowPosition(SDLWindow, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
CloseWindow
[edytuj]Usuwa okno komendą SDL_DestroyWindow(SDL_Window);
FullscreenWindow
[edytuj]Powiększa okno bez ramek do rozmiarów pulpitu komendą SDL_SetWindowFullscreen(SDLWindow, SDL_WINDOW_FULLSCREEN_DESKTOP);
GetWindowSize(w,h)
[edytuj]Zapisuje w zmiennych w i h wymiary okna głównego komendą SDL_GetWindowSize(SDLWindow,&w,&h);
MaximizeWindow
[edytuj]Powiększa okno do rozmiarów pulpitu (z ramkami) komendą SDL_MaximizeWindow(SDLWindow);
MinimizeWindow
[edytuj]Minimalizuje okno komendą SDL_MinimizeWindow(SDLWindow);
RestoreWindow
[edytuj]Przywraca poprzednią wielkość okna komendą SDL_RestoreWindow(SDLWindow);
WindowPos(x,y)
[edytuj]Ustawia okno w pozycji x,y komendą SDL_SetWindowPosition(SDLWindow,x,y);
WindowSize(w,h)
[edytuj]Ustawia szerokość w i wysokość h okna komendą SDL_SetWindowSize(SDLWindow,w,h);
WindowTitle(t)
[edytuj]Ustawia tytuł t okna.
WindowVirtualSize(w,h)
[edytuj]Ustawia 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