ZL31ARM: implementacja funkcji graficznych 2D

Funkcja czyszcząca ekran przyjmuje jako parametr wartość koloru z palety BRG, strukturę wartości którego opisane wyżej, i wypełnia nim cały ekran. Ostatnia funkcja z danej biblioteki ustawia kontrast. W celu jej regulacji można wykorzystać następujący fragment kodu w pętli while i który sprawdza czy włączony jest przycisk JOY_UP lub JOY_DOWN i odpowiednio dostraja wartość:

Warto zauważyć, że zmienna contrast przekazywana jako parametr przyjmuje wartości z zakresu od (-64) do 63. Wynika to z budowy sterownika PCF8833 odpowiedzialnego za pracę wyświetlacza. Poniższy kod rysuje kilka punktów testowych na ekranie:

W zależności od tego czym został wypełniony ekran funkcją LCDClearScreen(), niektóre kolory mogą być słabo widoczne/rozróżnialne na danym tle.

Rysowanie linii

W prezentowanym projekcie za początek układu współrzędnych OXY został przyjęty punkt centralny ekranu i w tym celu na początku pliku graphics.c umieszczono następującą definicję, którą będzie wykorzystywana w funkcjach rysujących opisanych w danym pliku:

W funkcjach rysujących zawartych w pliku graphics.c w przypadku podawania współrzędnych wartość powinna zawierać się w przedziale od -65 do 64 włącznie co pozwoli na prawidłowe wyświetlenie wszystkich punktów.
Pierwszą i elementarną funkcją w pliku graphics.c jest funkcja rysująca linię drawLine(). Wywołuje się ją z podaniem dwóch punktów końcowych i koloru linii, a jej struktura wygląda w następujący sposób:

Cała procedura polega na wybraniu zmiennej niezależnej x (lub y) znalezieniu współczynników funkcji liniowej opisanej równaniem y=ax+b oraz narysowaniu punktów zgodnie z funkcją y=f(x) (lub x=f(y)) za pomocą wcześniej opisanej funkcji LCDSetPixel(). Przykład rysujący 3 przekątne linie:

Rysowanie prostokąta

Rysowanie danej figury jest realizowane na dwa sposoby, z których pierwszy (standardowy) wyświetla tylko same boki prostokąta (za pomocą funkcji LCDSetPixel()), a drugi wypełnia zadanym kolorem obszar wyznaczony przez tą figurę. Podobnie jak w przypadku linii należy podać 2 punkty (x,y) leżące na przekątnej prostokąta. Wybór między tymi sposobami jest dokonywany przez podanie parametru style (podanie 1 powoduje rysowanie „pełnego” prostokąta, w innym wypadku będzie on „pusty”). Struktura danej funkcji wygląda następująco:

Przykład rysowania „pustych” i „pełnych” prostokątów:

O autorze