Moduł Graph
Moduł Graph obsługuje operacje ekranowej grafiki punktowej (pikselowej).
Zawiera on procedury i funkcje, które umożliwiają rysowanie na ekranie monitora
krzywych różnych kształtów i kolorów, wypełnianie obszarów określonym wzorem i
kolorem jak również wykreślanie tekstów o zdefiniowanej przez użytkownika wielkości
wybraną czcionką w poziomie lub pionie. Umiejętne wykorzystanie zasobów modułu
pozwala również na tworzenie rysunków animowanych
Z przeważającej większości procedur i funkcji można korzystać dopiero po
zainicjowaniu graficznego trybu pracy monitora (procedura InitGraph).
Przejście do trybu graficznego powoduje przydzielenie części pamięci operacyjnej dla
potrzeb realizacji operacji graficznych. Po zakończeniu ich wykonywania należy
zwolnić tę część pamięci i przywrócić poprzedni tryb tekstowy za pomocą procedury
CloseGraph.
Dla prawidłowej pracy monitora w trybie graficznym potrzebne są programy
obsługujące zainstalowaną w komputerze kartę graficzną. Programy takie nazwano
sterownikami (ang. Drivers). W systemie TP zdefiniowano sterowniki dla 8
najpopularniejszych kart graficznych komputerów klasy IBM: CGA, MCGA, EGA,
VGA, Hercules, ATT400, IBM8514, IBM3270PC. Sterownikom tym nadano
rozszerzenie BGI (Borland Graphics Interface).
Okno graficzne
Wszystkie operacje graficzne wykonywane są w obrębie okna graficznego. W
momencie inicjacji trybu graficznego okno zajmuje cały ekran. Lewy, górny róg ekranu
ma współrzędne (0,0) i jest początkiem układu, którego oś pionowa jest skierowana w
dół, a oś pozioma - w prawo. Współrzędne prawego dolnego rogu są określone przez
funkcje GetMaxX i GetMaxY i zależą od rozdzielczości ekranu i jego trybu pracy.
Rozdzielczość ekranu, mająca istotny wpływ na współczynnik kształtu obrazu (ang.
aspect ratio), jest definiowana przez rodzaj monitora i rodzaj obsługującej go karty
graficznej.
Użytkownik ma możliwość definiowania wielkości i położenia okna
graficznego w obrębie ekranu i wykonywania w ramach tego okna operacji graficznych.
Kursor graficzny jest niewidoczny i w chwili określenia okna graficznego lub
inicjacji trybu graficznego umieszczany w punkcie (0,0).
Każdy punkt może być „zapalony” lub „zgaszony” - wtedy odpowiadający mu
bit zmiennej wzorca ekranu ma wartość odpowiednio 1
∨
0.
Rodzaje krojów czcionki.
W celu wykreślenia na ekranie graficznym tekstów można skorzystać z 5
rodzajów czcionek (ang. fonts), udostępnionych przez moduł Graph. Jedna z nich jest
czcionką punktową (ang. 8x8 bit - mapped), pozostałe są czcionkami kreskowymi (ang.
stroked). Pierwszy rodzaj czcionki jest zdefiniowany jako macierz o wym. 8x8
punktów. Czcionki kreskowe to ciąg wektorów, który informuje system o tym jak mają
być rysowane jej znaki. Jakość tekstu czcionki kreskowej jest lepsza, szczególnie przy
wyprowadzaniu dużych napisów.
Definicja czcionki punktowej ładowana jest do pamięci operacyjnej w trakcie
inicjacji trybu graficznego i rezyduje w niej do momentu wykonania procedury
CloseGraph. Definicja wybranej czcionki kreskowej umieszczana jest w pamięci tylko
wtedy, jeśli jest do niej odwołanie w procedurze SetTextStyle, a usuwana przy
odwołaniu się do innego kroju czcionki. Użytkownik ma możliwość uczynienia kroju
czcionek rezydentnym (por. opis procedury RegisterBGIfont).
Stałe kolorów
Identyfikator
Wartość
Kolor
Black
0
Czarny
Blue
1
Niebieski
Green
2
Zielony
Cyan
3
Morski
Red
4
Czerwony
Magenta
5
Fioletowy
Brown
6
Brązowy
LightGray
7
Jasnoszary
DarkGray
8
Ciemnoszary
LightBlue
9
Jasnoniebieski
LightGreen
10
Jasnozielony
LightCyan
11
Jasnomorski
LightRed
12
Jasnoczerwony
LightMagenta
13
Jasnofioletowy
Yellow
14
śółty
White
15
Biały
Stałe rodzajów linii
Identyfikator
Wartość
Wzorzec
SolidLn
0
linia ciągła
DottedLn
1
linia kropkowana
CenterLn
2
linia przerywana
DashedLn
3
linia przerywana
UsesBitLn
4
wzorzec definiowany
przez użytkownika
Grubość linii
Identyfikator
Wartość
Grubość
NormWidth
1
normalna(domyślna)
ThickWidth
3
pogrubiona
S
tałe sposobu wykreślania tekstów
Identyfikator
Wartość
Znaczenie
HorizDir
0
poziomo - od lewej do prawej
VertDir
1
pionowo - od dołu do góry
Stałe justowania
Justowanie jest pojęciem stosowanym przy określaniu sposobu wykreślania tekstu i
oznacza wstawianie odstępów między znakami, wyrazami i wierszami dla zachowania
odpowiedniej wielkości szpalty. Pojęcie to używane jest wymiennie z pojęciem
wyrównywania lub centrowania.
Identyfikator
Wartość
Znaczenie
LeftText
0
Wyrównywanie do lewej
CenterText
1
Centrowanie w poziomie
RightText
2
Wyrównywanie do prawej
BottomText
0
Wyrównywanie do dołu
CenterText
1
Centrowanie w pionie
TopText
2
Wyrównywanie do góry
Stałe wzorca wypełnienia
Stosowane przy określaniu sposobu wypełniania obszarów i używane w
wywołaniu procedur: GetFillSettings i SetFillStyle.
Identyfikator
Wartość
Wzorzec
EmptyFill
0
brak wypełnienia
SolidFill
1
wypełnienie pełne
LineFill
2
w poziome linie
LtSlashFill
3
ukośne linie
SlashFill
4
ukośne linie
BkSlashFill
5
ukośne linie
LtBkSlashFill
6
ukośne linie
HatchFill
7
kratka
XHatchFill
8
kratka ukośna
InterleaveFill
9
falowane pionowe linie
WideDotFill
10
kropki
CloseDotFi;;
11
gęste kropki
UserFill
12
wzorzec definiowany przez
użytkownika
Stałe kroju czcionki
Identyfikator
Wartość
Wzorzec
DefaultFont
0
TriplexFont
1
SmallFont
2
SansSerifFont
3
GothicFont
4
Funkcje i procedury modułu Graph
Funkcje i procedury organizacyjne:
CloseGraph
zakończenie pracy w trybie graficznym
DetectGraph(sterownik,tryb)
rozpoznanie karty graficznej
GraphDefaults
wznowienie domyślnego środowiska
graficznego
GraphResult
ujawnienie kodu błędu operacji graficznej
GraphErrorMsg(kod_błędu)
udostępnienie komunikatu o błędzie operacji
graficznej
InitGraph(sterownik, tryb,
skorowidz)
zainicjowanie trybu graficznego
InstallUserDriver
instalowanie nowego sterownika
InstallUserFont
instalowanie nowego fontu
RegisterBGIdriver(sterownik)
zarejestrowanie programu obsługi karty
graficznej
RegisterBGIfont(krój)
zarejestrowanie programu czcionki kreskowej
RestoreCrtMode
przywrócenie trybu tekstowego
SetGraphBufSize
określenie rozmiaru bufora dla wypełniania
obszarów
SetGraphMode(tryb)
ustanowienie graficznego trybu pracy
Funkcje i procedury obrazowe:
GetImage(x1, y1, x2, y2, obraz) zapamiętanie obrazu graficznego
ImageSize(x1, y1, x2, y2)
wyznaczenie rozmiaru pamięci potrzebnego
dla przechowania obrazu
PutImage(X, Y, obraz,
wyświetlenie zapamiętanego obrazu
operacja)
graficznego
Funkcje i procedury informujące o środowisku
graficznym:
GetDriverName
ujawnienie nazwy sterownika graficznego
GetGraphMode
ujawnienie numeru bieżącego trybu
graficznego
GetMaxMode
ujawnienie najwyższego trybu graficznego
GetModeName(numer_trybu)
ujawnienie nazwy trybu graficznego
GetModeRange(sterownik,
trb_min, tryb_max)
określenie skrajnych wartości trybu
graficznego wyspecjalizowanego sterownika
Funkcje i procedury informujące o parametrach
graficznych:
GetAspectRatio
ujawnienie współczynnika kształtu ekranu
GetArcCoords
ujawnienie współrzędnych łuku
GetBkColor
wyznaczenie numeru koloru tła
GetColor
wyznaczenie numeru koloru atramentu
GetDefautPalette
ujawnienie liczby kolorów i ich numerów w
palecie domyślnej
GetFillPattern
udostępnienie wzorca wypełnienia
GetFillSettings
udostępnienie wzorca i koloru wypełnienia
GetLineSettings
udostępnienie wzorca linii
GetMaxColor
wyznaczenie maksymalnego numeru koloru
palety
GetPalette
udostępnienie informacji o kolorach i
rozmiarze palety
GetPaletteSize
ujawnienie rozmiaru palety bieżącego trybu
graficznego
Procedury ustalające parametry graficzne:
SetAllPalette(paleta)
zdefiniowanie kolorów palett
SetAspectRatio(szerokość,wyso
kość)
ustalenie współczynników kształtu obrazu
SetBkColor(kolor)
ustalenie koloru tła trybu graficznego
SetColor(kolor)
ustalenie koloru atramentu trybu graficznego
SetFillPattern(wzór
zdefiniowany,kolor)
zdefiniowanie wzorca wypełnienia
SetFillStyle(wzór, kolor)
wybór wzorca wypełnienia
SetLineStyle(rodzaj linii, wzór,
grubość)
ustalenie wzorca linii
SetPalette(nr_koloru, kolor)
zmiana koloru w palecie karty graficznej
SetRGBPalette(nr_koloru,
czerwony, zielony, niebieski)
zmiana koloru w palecie karty graficznej
VGA/IBM8514
SetWriteMode
(tyrb_rysowania)
określenie sposobu nakładania linii
Procedury wspomagające operacje graficzne:
ClearDevice
wyczyszczenie ekranu graficznego
ClearViewPort
wyczyszczenie okna graficznego
GetViewSettings
udostępnienie parametrów okna graficznego
SetActivePage(strona)
wybranie aktywnej strony ekranu graficznego
SetVisualPage(strona)
wyświetlenie na ekranie wskazanej strony
ekranu graficznego
SetViewPort(x1, y1, x2, y2,
obcięcie)
ustanowienie okna graficznego
Funkcje i procedury tekstowe:
GetTextSettings
ujawnienie parametrów wykreślanego tekstu
OutText(łańcuch)
wykreślenie tekstu
OutTextXY(x,y, łańcuch)
wykreślenie tekstu w określonym miejscu
SetTextJustify(poziom, pion)
określenie sposobu justowania wykreślanego
tekstu
SetTextStyle(krój, kierunek,
rozmiar)
określenie parametrów wykreślanego tekstu
SetUserCharSize
określenie rozmiaru znaków fontów
kreskowych
TextHeight
wyznaczenie wysokości wykreślanego tekstu
TextWidth
wyznaczenie szerokości wykreślanego tekstu
Operacje graficzne:
Arc(x,y,kąt1, kat2, r)
wykreślenie łuku okręgu
Bar(x1, y1, x2, y2)
wykreślenie wypełnionego słupka
Bar3D(x1, y1, x2, y2, głębokość,
wierzchołek)
wykreślenie wypełnionego słupka
trójwymiarowego
Circle(x, y, r)
wykreślenie okręgu
DrawPoly(liczba_punktów,
współrzędne_punktów)
rysowanie łamanej
Ellipse(x,y, kąt1, kąt2, xr,yr)
wykreślenie łuku elipsy
FillEllipse
wykreślenie wypełnionej elipsy
FillPoly(liczba_punktów,
współrzędne_punktow)
wykreślenie wypełnionej łamanej
zamkniętej
FloodFill(x, y, brzeg)
wypełnienie zdefiniowanego obszaru
zawierającego x,y
GetMaxX
ujawnienie max. współrz. poziomej
ekranu graficznego
GetMaxY
ujawnienie max. współrz. pionowej
ekranu graficznego
GetPixel(x, y)
ujawnienie numeru koloru piksela
GetX
ujawnienie poziomej współrz. aktualnej
pozycji kursora
GetY
ujawnienie pionowej współrz. aktualnej
pozycji kursora
Line(x1,y1,x2,y2)
wykreślenie odcinka linii prostej
Lineto(x,y)
wykreślenie odcinka linii prostej
LineRel(wektor1,wektor2)
wykreślenie odcinka linii prostej
MoveRel(wektor1, wektor2)
względne przesunięcie kursora
graficznego
MoveTo(x,y)
bezwzględne przesunięcie kursora
graficznego
PieSlice(x,y,kąt1, kat2, r)
wykreślenie wypełnionego wycinka koła
PutPixel(x,y,kolor)
wyświetlenie piksela
Rectangle(x1,y1,x2, y2)
wykreślenie prostokąta
Sektor(x,y, kąt1, kąt2, półoś_x,
półoś_y
wykreślenie wypełnionego wycinka
elipsy