W tym artykule znajdziesz wersję plików bibliotecznych do kolejnych zajęć z nauki programowania grafiki komputerowej.
Opis instalacji środowiska znajdziesz w artykułach OL031, OL032 i OL034.
Parametry dla konsolidatora Dev-C++:
-lmingw32
-mwindows
-lSDLmain
-lSDL
a,b,c | - | współczynniki osi powinowactwa o równaniu ax + by + c = 0 |
k | - | współczynnik powinowactwa |
Funkcja oblicza macierz powinowactwa prostokątnego A względem prostej ax + by + c = 0 i o współczynniku powinowactwa k. Zwraca wskaźnik do obliczonej macierzy. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
gfx2DCopyPoly(p)
p | - | wskaźnik listy łamanych |
Funkcja tworzy kopię listy łamanych i zwraca jej adres - po wykorzystaniu kopię usuwamy. Z funkcji korzystamy przy tworzeniu transformacji geometrycznych, gdy chcemy uzyskać nowy obraz figury bez utraty jej oryginału. Zasada postępowania jest następująca:
- W tablicy F mamy figurę, czyli listę łamanych. Konstrukcję tej listy opisuje artykuł OL051.
- Tworzymy kopię F w nowej tablicy:
Sint32 * NF = gfx2DCopyPoly(F);- Tworzymy macierz przekształcenia G.
- Wykonujemy przekształcenie geometryczne na kopii figury:
gfx2DTransform(NF,G);- Rysujemy wynikową figurę:
gfxDrawPoly(screen,NF,kolor);- Usuwamy niepotrzebne już macierze:
delete [] NF;
delete [] G;
gfx2DDrawPoly(s,p,color)
s | - | wskaźnik struktury SDL_Surface |
p | - | wskaźnik listy łamanych |
color | - | kolor rysowanych linii |
Funkcja rysuje obiekt wektorowy zbudowany z listy łamanych. Konstrukcję tej listy opisuje artykuł OL051. Reaguje na prostokąt obcinania.
gfx2DHomoth(xh,yh,k)
xh,yh | - | współrzędne punktu jednokładności |
k | - | współczynnik skali |
Funkcja oblicza macierz jednokładności H względem punktu (xh,yh) i o współczynniku k. Zwraca wskaźnik do obliczonej macierzy przekształcenia. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
phi | - | kąt obrotu podany w radianach |
Funkcja oblicza macierz rotacji R - obrotu na płaszczyźnie i zwraca wskazanie do niej. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
gfx2DScale(Sx,Sy)
Sx | - | skala na osi OX |
Sy | - | skala na osi OY |
Funkcja oblicza macierz skalowania S wzdłuż osi OX i OY i zwraca wskazanie do niej. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
gfx2DShear(Sx,Sy)
kx | - | współczynnik ścinania na osi OX |
ky | - | współczynnik ścinania na osi OY |
Funkcja oblicza macierz ścinania S wzdłuż osi OX i OY i zwraca wskazanie do niej. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
Tx | - | przesunięcie wzdłuż osi OX |
Ty | - | przesunięcie wzdłuż osi OY |
Funkcja oblicza macierz translacji T - przesunięcia na płaszczyźnie i zwraca wskazanie do niej. Po wykorzystaniu macierz powinna zostać usunięta z pamięci.
gfx2DTransform(p,tmx)
p | - | wskaźnik listy łamanych |
tmx | - | wskaźnik macierzy przekształcenia |
Funkcja przekształca współrzędne wierzchołków poszczególnych list łamanych zgodnie z macierzą transformacji. Operację tę wykonujemy zwykle na kopi obiektu tuż przed rysowaniem. Ponieważ współrzędne są zaokrąglane do liczb całkowitych, funkcja nie nadaje się do sekwencyjnej animacji z uwagi na kumulację błędów zaokrągleń.
gfxBoundaryFill(screen,x,y,fcolor,bcolor)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne ziarna wypełniania |
fcolor | - | 32 bitowy kolor wypełnienia |
bcolor | - | 32 bitowy kolor konturu ograniczającego wypełniany obszar |
Funkcja wypełnia kolorem fcolor obszar wskazany ziarnem x,y. Obszar jest ograniczony konturem (linią) w kolorze bcolor oraz prostokątem obcinającym. Wszystkie piksele o kolorze różnym od bcolor zostaną pomalowane w obszarze na fcolor.
gfxCircle(screen,xs,ys,r,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
xs, ys | - | współrzędne środka okręgu |
r | - | promień okręgu |
color | - | kolor konturu |
Funkcja rysuje okrąg o środku w punkcie (xs,ys), promieniu r i kolorze konturu color. Okrąg w całości musi się mieścić na powierzchni graficznej.
gfxClipCircle(screen,xs,ys,r,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
xs, ys | - | współrzędne środka okręgu |
r | - | promień okręgu |
color | - | kolor konturu |
Funkcja rysuje okrąg o środku w punkcie (xs,ys), promieniu r i kolorze konturu color. Okrąg jest obcinany do prostokąta screen->clip_rect.
gfxClipEllipse(screen,xs,ys,rx,ry,color)
screen | - | wskaźnik struktury SDL_Surface. |
xs ys | - | współrzędne środka elipsy |
rx ry | - | promienie elipsy odpowiednio wzdłuż osi OX i OY |
color | - | kolor obrysu |
Funkcja rysuje elipsę o środku w punkcie (xs,ys), promieniach rx, ry i kolorze konturu color. Elipsa jest obcinana do prostokąta screen->clip_rect.
gfxClipHLine(screen,x,y,color,len)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne lewego końca odcinka |
color | - | 32 bitowy kolor odcinka |
len | - | długość odcinka w pikselach |
Funkcja rysuje odcinek poziomy na obszarze graficznym. Odcinek jest obcinany do prostokąta obcinającego zdefiniowanego w strukturze screen.
gfxClipLine(screen,x1,y1,x2,y2,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x1, y1 | - | współrzędne punktu początkowego odcinka |
x2, y2 | - | współrzędne punktu końcowego |
color | - | 32 bitowy kolor odcinka |
Funkcja rysuje odcinek od punktu początkowego (x1,y1) do punktu końcowego (x2,y2) wykorzystując algorytm Bresenhama. Odcinek jest obcinany do prostokąta obcinającego zdefiniowanego w strukturze screen.
gfxClipLineTo(screen,x,y,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne punktu końcowego odcinka |
color | - | 32 bitowy kolor odcinka |
Funkcja rysuje odcinek od punktu początkowego ustawionego przez funkcję gfxMoveTo() lub punktu końcowego ostatniego wywołania funkcji gfxLineTo() do punktu (x,y). Punkt końcowy (x,y) staje się punktem początkowym dla kolejnego wywołania tej funkcji. Umożliwia to rysowanie łamanych, zbudowanych z odcinków połączonych końcami. Odcinek jest obcinany do prostokąta obcinającego zdefiniowanego w strukturze screen.
gfxClipPlot(screen,x,y,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne rysowanego punktu |
color | - | 32 bitowy kolor punktu. |
Funkcja rysuje jeden punkt na powierzchni graficznej. Jeśli punkt (x,y) znajduje się poza prostokątem obcinającym w strukturze screen, nie będzie rysowany.
gfxClipRectangle(screen,r,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
r | - | wskaźnik struktury SDL_Rect |
color | - | 32 bitowy kolor ramki |
Funkcja rysuje prostokątną ramkę zdefiniowaną strukturą SDL_Rect. Ramka jest obcinana do prostokąta obcinającego w strukturze screen.
gfxClipVLine(screen,x,y,color,len)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne górnego końca odcinka |
color | - | 32 bitowy kolor odcinka |
len | - | długość odcinka w pikselach |
Funkcja rysuje odcinek pionowy na obszarze graficznym. Odcinek jest obcinany do prostokąta obcinającego zdefiniowanego w strukturze screen.
gfxCloseFont(f)
f | - | wskaźnik do zainicjowanej struktury gfxFont. |
Funkcja zamyka czcionkę bitmapową i zwalnia zajmowaną przez nią pamięć.
gfxDrawChar(screen,f,c,x,y,fcolor,bcolor)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
f | - | wskaźnik do zainicjowanej struktury gfxFont |
c | - | znak do narysowania |
x, y | - | współrzędne znaku - odnoszą się do lewego górnego rogu matrycy |
fcolor | - | 32 bitowy kolor tuszu |
bcolor | - | 32 bitowy kolor tła |
Rysuje znak c w kolorze fcolor na tle bcolor na współrzędnych x,y powierzchni graficznej. Jeśli kolory fcolor (tylko dla czcionki bitmapowej) lub bcolor (dla obu typów czcionek - bitmapowej i wektorowej) przyjmą wartość -1, to będą traktowane jako przeźroczyste. Pozwala to rysowanie tekstu bez kasowania tła lub na inne ciekawe efekty graficzne. Rysowana literka powinna w całości mieścić się na powierzchni graficznej. Funkcja zwraca szerokość w pikselach narysowanej literki.
gfxDrawText(screen,f,t,x,y,fcolor,bcolor)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
f | - | wskaźnik do zainicjowanej struktury gfxFont |
t | - | wskaźnik ciągu znaków zakończonych kodem 0 |
x, y | - | współrzędne pierwszego znaku - odnoszą się do lewego górnego rogu matrycy |
fcolor | - | 32 bitowy kolor tuszu |
bcolor | - | 32 bitowy kolor tła |
Rysuje tekst t w kolorze fcolor na tle bcolor na współrzędnych x,y powierzchni graficznej. Jeśli kolory fcolor (tylko dla czcionki bitmapowej) lub bcolor (dla obu typów czcionek - bitmapowej i wektorowej) przyjmą wartość -1, to będą traktowane jako przeźroczyste. Pozwala to rysowanie tekstu bez kasowania tła lub na inne ciekawe efekty graficzne. Rysowany tekst powinien w całości mieścić się na powierzchni graficznej. Jako wynik funkcja zwraca pozycję x leżącą za wypisanym tekstem. Pozycja ta może zostać wykorzystana do kontynuacji rysowania tekstu w następnym wywołaniu tej funkcji.
gfxEllipse(screen,xs,ys,rx,ry,color)
screen | - | wskaźnik struktury SDL_Surface. |
xs ys | - | współrzędne środka elipsy |
rx ry | - | promienie elipsy odpowiednio wzdłuż osi OX i OY |
color | - | kolor obrysu |
Funkcja rysuje elipsę o środku w punkcie (xs,ys), promieniach rx, ry i kolorze konturu color. Elipsa w całości musi się mieścić na powierzchni graficznej.
gfxFillCircle(screen,xs,ys,r,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
xs, ys | - | współrzędne środka koła |
r | - | promień koła |
color | - | kolor wypełnienia |
Funkcja rysuje wypełnione kolorem color koło = o środku w punkcie (xs,ys) i promieniu r. Koło jest obcinane do prostokąta screen->clip_rect.
gfxFillEllipse(screen,xs,ys,rx,ry,color)
screen | - | wskaźnik struktury SDL_Surface. |
xs ys | - | współrzędne środka elipsy |
rx ry | - | promienie elipsy odpowiednio wzdłuż osi OX i OY |
color | - | kolor wypełnienia |
Funkcja rysuje owal o środku w punkcie (xs,ys), promieniach rx, ry i kolorze konturu color. Owal jest obcinany do prostokąta screen->clip_rect.
gfxFillPoly(s,f,color)
s | - | wskaźnik struktury SDL_Surface. |
f | - | wskaźnik listy łamanych, która definiuje prostokąt |
color | - | kolor wypełnienia |
Funkcja wypełnia kolorem color obiekt wektorowy zbudowany z listy łamanych. Konstrukcję tej listy opisuje artykuł OL051. Reaguje na prostokąt obcinania.
type | - | określa rodzaj czcionki: 0 - czcionka bitmapowa, 1 - czcionka wektorowa |
w | - | liczba bajtów na jeden wiersz matrycy znaku |
h | - | liczba wierszy w matrycy znaku |
cp[ ] | - | tablica 256 wskaźników do matryc znaków lub łamanych |
cw[ ] | - | tablica 256 szerokości znaków |
Struktura gfxFont przechowuje matryce bitmapowe literek czcionki bitmapowej lub definicje łamanych dla czcionki wektorowej. Dostęp do matryc lub łamanych jest poprzez tablicę wskaźników cp[ ]. Indeks wskaźnika jest kodem ASCII znaku.
gfxFloodFill(screen,x,y,fcolor)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne ziarna wypełniania |
fcolor | - | 32 bitowy kolor wypełnienia |
Funkcja wypełnia kolorem fcolor obszar wskazany ziarnem x,y. Obszar posiada jednolity kolor oraz jest ograniczony obszarami w innych kolorach i prostokątem obcinającym.
gfxGetPixel(screen,x,y)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne punktu |
Funkcja zwraca 32 bitowy kod koloru piksela umieszczonego na pozycji x,y powierzchni graficznej. Współrzędne x i y muszą zawierać się w obszarze graficznym.
gfxHLine(screen,x,y,color,len)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne lewego końca odcinka |
color | - | 32 bitowy kolor odcinka |
len | - | długość odcinka w pikselach |
Funkcja rysuje odcinek poziomy na obszarze graficznym. Odcinek w całości powinien się zawierać w tym obszarze.
gfxLibVersion()
Funkcja zwraca tekst z numerem wersji biblioteki graficznej SDL_gfx. Istnieje tylko dla celów testowych w trakcie instalacji oprogramowania.
gfxLine(screen,x1,y1,x2,y2,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x1, y1 | - | współrzędne punktu początkowego odcinka |
x2, y2 | - | współrzędne punktu końcowego |
color | - | 32 bitowy kolor odcinka |
Funkcja rysuje odcinek od punktu początkowego (x1,y1) do punktu końcowego (x2,y2) wykorzystując algorytm Bresenhama. Punkt początkowy i końcowy musi zawierać się w powierzchni graficznej.
gfxLineTo(screen,x,y,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne punktu końcowego odcinka |
color | - | 32 bitowy kolor odcinka |
Funkcja rysuje odcinek od punktu początkowego ustawionego przez funkcję gfxMoveTo() lub punktu końcowego ostatniego wywołania funkcji gfxLineTo() do punktu (x,y). Punkt końcowy (x,y) staje się punktem początkowym dla kolejnego wywołania tej funkcji. Umożliwia to rysowanie łamanych, zbudowanych z odcinków połączonych końcami. Punkt początkowy i końcowy rysowanego odcinka muszą zawierać się w powierzchni graficznej screen.
gfxMAdd(n,m,A,B)
n | - | liczba wierszy |
m | - | liczba kolumn |
A,B | - | wskaźniki dodawanych macierzy |
Funkcja dodaje macierz A do macierzy B i zwraca wskazanie do macierzy wynikowe C. Macierze A ,B zawierają elementy typu double.
Cn x m = An x m + Bn x m
gfxMMul(n,r,A,B)
n | - | liczba wierszy macierzy A i C |
m | - | liczba kolumn macierzy A i wierszy macierzy B |
r | - | liczba kolumn macierzy B i C |
A,B | - | wskaźniki mnożonych macierzy |
Funkcja mnoży macierz A przez macierz B i zwraca wskazanie do macierzy wynikowej C. Macierze A ,B zawierają elementy typu double.
Cn x r = An x m x Bm x r
gfxMoveTo(x,y)
x, y | - | współrzędne nowego początku linii |
Funkcja współpracuje z gfxLineTo() oraz gfxClipLine(). Ustawia punkt początkowy odcinka.
gfxOpenFont(filename)
filename | - | nazwa pliku zawierającego definicje matryc. |
Funkcja odczytuje z pliku tekstowe definicje matryc czcionki bitmapowej lub definicje łamanych dla czcionki wektorowej i umieszcza je w strukturze gfxFont. Zwraca adres tej struktury lub NULL w przypadku błędów - najczęściej zła nazwa pliku. Struktura pliku jest dokładnie opisana w rozdziałach OL041 i OL042. Przykładowe czcionki:
bmpbold8x8.fnt
bmpnorm8x8.fnt
bmpprop8x8.fnt
bmppropbold8x8.fnt
vecprop9x12.fntWykorzystywane pliki czcionek najlepiej umieścić w tym samym katalogu co program. W przeciwnym razie należy przekazać funkcji gfxOpenFont() pełną ścieżkę dostępu wraz z nazwą pliku wg konwencji stosowanej w danym systemie operacyjnym. Polskie znaki należy zdefiniować zgodnie z kodowaniem systemowym.
gfxPlot(screen,x,y,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne rysowanego punktu |
color | - | 32 bitowy kolor punktu. |
Funkcja rysuje jeden punkt na powierzchni graficznej. Punkt musi się zawierać w tej powierzchni, tzn jego współrzędne nie mogą wykraczać poza marginesy, w przeciwnym wypadku może dojść do zamknięcia aplikacji z powodu naruszenia praw dostępu do chronionych obszarów pamięci.
gfxRectangle(screen,r,color)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
r | - | wskaźnik struktury SDL_Rect |
color | - | 32 bitowy kolor ramki |
Funkcja rysuje prostokątną ramkę zdefiniowaną strukturą SDL_Rect. Ramka w całości musi się zawierać w obszarze graficznym.
gfxTextLength(f,t)
f | - | wskaźnik do zainicjowanej struktury gfxFont |
t | - | wskaźnik ciągu znaków zakończonych kodem 0 |
Funkcja oblicza szerokość w pikselach podanego jako parametr t tekstu.
gfxVLine(screen,x,y,color,len)
screen | - | wskaźnik do zainicjowanej struktury SDL_Surface. |
x, y | - | współrzędne górnego końca odcinka |
color | - | 32 bitowy kolor odcinka |
len | - | długość odcinka w pikselach |
Funkcja rysuje odcinek pionowy na obszarze graficznym. Odcinek w całości powinien się zawierać w tym obszarze.
I Liceum Ogólnokształcące |
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