Biblioteka GUI dla SDL
        Wersja 004


W tym artykule znajdziesz kolejne pliki biblioteczne graficznego interfejsu użytkownika dla biblioteki SDL.

Opis instalacji biblioteki SDL znajdziesz w artykułach OL031, OL032 i OL034. Pliki biblioteki graficznej znajdziesz w SDL100. Sposób instalacji GUI dla SDL znajdziesz w lekcji OL043.

Poprzednia wersja GUI:   GUI003
Następna wersja GUI: GUI005

Pliki biblioteczne

SDL_gui.h

SDL_gui.cpp

Opis funkcji i struktur danych


gfxGUIObject

Klasa będąca podstawą wszystkich klas kontrolek naszego GUI.

tag  -  pole bez określonego znaczenia, może służyć do identyfikacji obiektu w wywoływanej przez niego funkcji
type  - umożliwia zdefiniowanie typu elementu, jeśli elementy różnią się w ramach danej klasy
enabled  - jeśli element jest aktywny, to zawiera true. Element zablokowany przechowuje tutaj false.
sel  - jeśli element jest wybrany - posiada skupienie wejścia, to pole zawiera true.
open  - niektóre elementy wymagają otwarcia podlisty kontrolek. W takim przypadku pole zawiera true.
screen  - wskaźnik struktury SDL_Surface definiującej używaną przez element powierzchnię graficzną.
font  - wskaźnik do zainicjowanej struktury gfxFont zawierającej opis używanej czcionki do wydruku tekstu
rect  - prostokąt obejmujący element na powierzchni graficznej
text  - wskaźnik bufora zawierającego tekst elementu
call  - funkcja wywoływana przy wyborze elementu. Parametrem funkcji jest wskaźnik wywołującego ją elementu
ShrinkRect()  - funkcja zwraca prostokąt elementu pomniejszony z każdej strony o jeden piksel - przydaje się przy rysowaniu wnętrza elementu
MouseHit()  - funkcja zwraca true, jeśli punkt x,y przekazany w parametrach wywołania znajduje się wewnątrz prostokąta elementu.
Update()  - funkcja uaktualnia obszar ekranu zajęty przez element

gfxButton

Klasa obsługująca przyciski akcji - prostokątne obszary, których kliknięcie powoduje wywołanie określonej funkcji. Dziedziczy wszystkie pola i funkcje z klasy gfxGUIObject.

gfxButton()  -  konstruktor klasy gfxButton:
    gfxButton(tg,en,s,f,r,t,fn)
        tg - identyfikator elementu
        en - określa, czy przycisk ma być aktywny - true, czy zablokowany - false
        s - wskaźnik struktury SDL_Surface, na której będzie rysowany przycisk
        f - wskaźnik struktury gfxFont określającej czcionkę dla tekstu opisującego przycisk
        r - prostokąt definiujący przycisk - wymiary są korygowane do szerokości i wysokości tekstu z marginesem 2 pikseli.
        t - wskaźnik tekstu opisującego przycisk. Tekst powinien kończyć się znakiem o kodzie 0.
        fn - wskaźnik funkcji wywoływanej przy kliknięciu przycisku myszką. Funkcja otrzymuje wskaźnik do przycisku.
DoEvents()  - funkcja obsługuje zdarzenia dla przycisku. Jeśli zdarzenie zostało obsłużone, to zwraca false - jest to informacja dla pętli obsługi zdarzeń, iż danego zdarzenia już dalej nie należy obsługiwać w innych elementach, ale oczywiście wszystko zależy od programisty.
    DoEvents(e)
        e - wskaźnik struktury SDL_Event.
Refresh()  - funkcja rysuje przycisk na powierzchni graficznej

gfxMenuItem

Klasa obsługuje elementy menu. Dziedziczy wszystkie pola i funkcje z klasy gfxGUIObject.

buf  -  wskaźnik obszaru pamięci, który przechowuje fragment powierzchni graficznej przykryty przez podmenu
owner  - zawiera adres klasy gfxMenu, która jest właścicielem tego elementu - umożliwia elementom menu dostęp do powierzchni graficznej oraz zestawu znaków
next  - wskaźnik następnego elementu na tym samych poziomie hierarchii struktury drzewa
sub  - wskaźnik głowy listy podmenu skojarzonego z tym elementem
subrect  - prostokąt podmenu, wykorzystywany do rysowania ramki otaczającej skojarzone elementy podmenu
gfxMenuItem()  - konstruktor klasy
    gfxMenuItem(tg,en,t,fn,nmi,s)
        tg - identyfikator umieszczany w polu tag
        en - określa, czy element będzie wybieralny - true, czy zablokowany - false
        t - wskaźnik tekstu dla elementu menu
        fn - wskaźnik funkcji wywoływanej przy wyborze w menu tego elementu
        nmi - wskaźnik następnego elementu na liście
        s - wskaźnik głowy listy elementów podmenu
~gfxMenuItem()  - destruktor klasy
DoEvents()  - obsługa zdarzeń dla elementów menu.
    DoEvents(e)
        e - wskaźnik struktury SDL_Event
Fix()  - oblicza rozmiar prostokąta subrect dla podmenu. Ustawia wszystkie prostokąty poszczególnych elementów w podmenu i wywołuje dla nich rekurencyjnie funkcję Fix(), co powoduje ustawienie rozmiarów całej gałęzi menu.
Refresh()  - rysuje element na powierzchni graficznej
Unsel()  - zamyka wszystkie podmenu otwarte w bieżącym elemencie. Kasuje wybór elementu.

gfxMenu

Klasa obsługuje pasek menu. Dziedziczy wszystkie pola i funkcje z klasy gfxGUIObject.

item  -  wskaźnik głowy listy elementów menu znajdujących się w pasku menu
gfxMenu()  - konstruktor
    gfxMenu(s,f,mi)
        s - wskaźnik struktury SDL_Surface
        f - wskaźnik struktury gfxFont
        mi - wskaźnik głowy listy elementów menu
~gfxMenu()  - destruktor
DoEvents()  - obsługa zdarzeń dla menu.
    DoEvents(e)
        e - wskaźnik struktury SDL_Event
Fix()  - wylicza prostokąty dla wszystkich elementów menu.
Refresh()  - rysuje pasek menu u góry ekranu
Unsel()  - zamyka całe menu

gfxEdit

Klasa prostego edytora jednowierszowego. Dziedziczy wszystkie pola i funkcje z klasy gfxGUIObject.

cstart  -  jeśli tekst jest dłuższy niż rozmiar okienka, to wyświetlany jest tylko fragment począwszy od pozycji cstart.
maxlen  - maksymalna liczba znaków tekstu w tablicy text[]
ctextlen  - aktualna liczba znaków przechowywanych w tablicy text[]
cpos  - pozycja wstawiania i usuwania znaków - ogólnie pozycja kursora
cxpos  - współrzędna x kursora na ekranie graficznym
gfxEdit()  - konstruktor klasy
    gfxEdit(tg,en,s,f,r,t,len,fn)
        tg - identyfikator kontrolki edytora
        en - określa, czy kontrolka ma być aktywna - true, czy zablokowana - false
        s - wskaźnik struktury SDL_Surface, na której będzie rysowana kontrolka edytora
        f - wskaźnik struktury gfxFont określającej czcionkę dla tekstu kontrolki
        r - prostokąt definiujący obszar kontrolki - wymiary są korygowane do wysokości tekstu z marginesem 4 pikseli.
        t - wskaźnik tekstu początkowego, który pojawi się w oknie edytora
        fn - wskaźnik funkcji wywoływanej przy naciśnięciu klawisza Enter.
~gfxEdit()  - destruktor
DoEvents()  - obsługa zdarzeń dla edytora
    DoEvents(e)
        e - wskaźnik struktury SDL_Event.
KeyboardHandler()  - zwraca kod naciśniętego klawisza uwzględniający CapsLock, Shift i Alt.
    KeyboardHandler(e)
        e - wskaźnik struktury SDL_Event.
Refresh()  - wyświetla okno edytora

gfxOptElement

Klasa obsługuje element opcji. Dziedziczy wszystkie pola i metody z gfxGUIObject. Pola i funkcje składowe klasy posiadają następujące znaczenie:

idgroup  -  dla elementów radio buttons określa numer grupy. W obrębie danej grupy może być wybrana tylko jedna opcja.
next  - wskaźnik następnego elementu opcji na liście.
owner  - wskaźnik zmiennej klasy gfxOption, do której należy dany element.
option  - określa stan opcji danego elementu
gfxOptElement()  - konstruktor
    gfxOptElement(tg,tp,id,opt,en,t,fn,nopt)
        tg - numer elementu
        tp - typ, 0 - opcja niezależna, 1 - opcja zależna
        id - w przypadku typu 1 określa numer grupy opcji zależnej
        opt - stan początkowy opcji
        en - true - element aktywny, false - element wyłączony
        t - tekst elementu opcji
        fn - wskaźnik funkcji wywoływanej przy zmianie opcji
        nopt - wskaźnik następnego elementu opcji
~gfxOptElement()  - destruktor
DoEvents()  - obsługuje zdarzenia dla elementu opcji. Jeśli zdarzenie zostanie obsłużone, zwraca false.
    DoEvents(e)
        e - wskaźnik struktury SDL_Event.
Refresh()  - wyświetla element opcji
Unsel()  - kasuje wybór elementu - stan opcji się nie zmienia.

gfxOption

Klasa obsługuje listę połączonych ze sobą elementów opcji. Elementy są wyświetlane jeden pod drugim na panelu. Szerokość i wysokość panelu jest obliczana automatycznie. Położenie listy opcji określa prostokąt, w którym należy zainicjować pola x i y. Jeśli pole w będzie posiadało wartość większą od wymaganej szerokości kontrolki, to kontrolka przyjmie tę szerokość, w przeciwnym razie pole w zostanie dopasowane do szerokości elementów opcji.

item  -  wskaźnik pierwszego elementu na liście opcji
gfxOption()  - konstruktor
    gfxOption(s,f,r,it)
        s - wskaźnik struktury SDL_Surface, na której będzie rysowana kontrolka edytora
        f - wskaźnik struktury gfxFont określającej czcionkę dla tekstu kontrolki
        r - prostokąt definiujący położenie listy opcji
        it - głowa listy opcji
DoEvents()  - obsługuje zdarzenia dla listy opcji. Jeśli zdarzenie zostanie obsłużone, zwraca false.
    DoEvents(e)
        e - wskaźnik struktury SDL_Event.
Refresh()  - wyświetla listę opcji
Unsel()  - kasuje wybór elementu na liście opcji - stan opcji się nie zmienia.

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe