Ãëàâà 19. Èñïîëüçîâàíèå ãðàôè÷åñêîãî èíòåðôåéñà Borland

             Ìîäóëü Graph ðåàëèçóåò ïîëíóþ áèáëèîòåêó  èç  áîëåå  ÷åì  50

        ãðàôè÷åñêèõ  ïðîãðàìì  -  îò  âûçîâîâ ïðîöåäóð è ôóíêöèé âûñîêîãî

        óðîâíÿ, êàê, íàïðèìåð, SetViewPort, Bàr3D, DràwPoly, äî ïðîãðàìì,

        îðèåíòèðîâàííûõ  íà  ðàáîòó  ñ  áèòàìè,  òàêèõ,  êàê GetImage èëè

        ÐutImage. Ïîääåðæèâàåòñÿ íåñêîëüêî âèäîâ çàêðàøèâàíèÿ è òèïîâ ëè-

        íèé, è èìååòñÿ íåñêîëüêî øðèôòîâ, êîòîðûå ìîæíî èçìåíÿòü ïî âåëè-

        ÷èíå,  âûðàâíèâàòü è îðèåíòèðîâàòü ãîðèçîíòàëüíî èëè âåðòèêàëüíî.

 

             Äëÿ êîìïèëÿöèè ïðîãðàììû,  èñïîëüçóþùåé ìîäóëü Gràph, âàì íå

        ïîòðåáóåòñÿ  íèêàêèõ  âíåøíèõ ôàéëîâ (êðîìå,  êîíå÷íî,  èñõîäíîãî

        òåêñòà âàøåé ïðîãðàììû, êîìïèëÿòîðà è äîñòóïà ê ñòàíäàðòíûì ìîäó-

        ëÿì  â  áèáëèîòåêå èñïîëíÿþùåé ñèñòåìû).

Èìåíà áèáëèîòåê è ìîäóëÿ Graph

                          Òàáëèöà 19.1

            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

            ³ Òèï ïðîãðàììû     ³ Áèáëèîòåêà    ³ Èìÿ ìîäóëÿ Graph ³

            ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

            ³ Ðåàëüíûé ðåæèì    ³ TURBO.TPL     ³ GRAPH.TPU        ³

            ³ Çàùèùåííûé ðåæèì  ³ TPP.TPL       ³ GRAPH.TPP        ³

            ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Äëÿ çàïóñêà ïðîãðàììû,  èñïîëüçóþùåé ìîäóëü Gràðh, êðîìå âà-

        øåé ïðîãðàììû ñ ðàñøèðåíèåì .EXE âàì ïîòðåáóþòñÿ îäèí  èëè  áîëåå

        ãðàôè÷åñêèõ äðàéâåðîâ (ñì. äàëåå ôàéëû .BGI). Êðîìå òîãî âàì ïîò-

        ðåáóåòñÿ òàêæå îäèí èëè áîëåå ôàéëîâ øðèôòîâ (.CÍR), åñëè â âàøåé

        ïðîãðàììå èñïîëüçóþòñÿ êàêèå-ëèáî øðèôòû.

 

                   Ïðèìå÷àíèå:   ñîîòâåòñòâèè  ñ ëèöåíçèîííûìè óñëîâèÿìè

              âû ìîæåòå ðàñïðîñòðàíÿòü ôàéëû .CHR è .BGI íàðÿäó ñî ñâîèìè

              ïðîãðàììàìè.

 

                                    Äðàéâåðû

        ÄÄÄÄÄÄÄ

 

             Äëÿ ïåðå÷èñëåííûõ  íèæå  ãðàôè÷åñêèõ  àäàïòåðîâ  è ïîëíîñòüþ

        ñîâìåñòèìûõ ñ íèìè ïðåäóñìîòðåíû ñëåäóþùèå  ãðàôè÷åñêèå äðàéâåðû:

 

                         CGA                  Íårcules

                         ÌÑGA                 AT&T 400

                         EGA                  3270 PC

                         VGA                  IBM 8514

 

             Êàæäûé äðàéâåð  ñîäåðæèò âûïîëíÿåìûé êîä è äàííûå è õðàíèòñÿ

        â îòäåëüíîì ôàéëå íà äèñêå.  Âî âðåìÿ ðàáîòû ïðîöåäóðà  InitGraph

        èäåíòèôèöèðóåò  ãðàôè÷åñêóþ  àïïàðàòóðó  è  ïðîèçâîäèò çàãðóçêó è

        èíèöèàëèçàöèþ ñîîòâåòñòâóþùåãî ãðàôè÷åñêîãî  äðàéâåðà,  ïåðåâîäèò

        ñèñòåìó â ãðàôè÷åñêèé ðåæèì,  à çàòåì âîçâðàùàåò óïðàâëåíèå âûçû-

        âàþùåé ïðîãðàììå. Ïðîöåäóðà CloseGraph âûãðóæàåò äðàéâåð èç ïàìÿ-

        òè  è  âîññòàíàâëèâàåò ïðåäûäóùèé âèäåîðåæèì.  Ñ ïîìîùüþ ïðîãðàìì

        RåstoreCrtMode è SetGraphMode âû ìîæåòå ïåðåêëþ÷àòüñÿ ìåæäó òåêñ-

        òîâûì è ãðàôè÷åñêèì ðåæèìîì.  Ñì. Ãëàâó 1 â "Ñïðàâî÷íîì ðóêîâîäñ-

        òâå ïðîãðàììèñòà".

 

             Ìîäóëü Gràph ìîæåò òàêæå ðàáîòàòü íà êîìïüþòåðàõ ñ äâóìÿ ìî-

        íèòîðàìè.  Ïðè èíèöèàëèçàöèè ìîäóëÿ  Graph  ñ  ïîìîùüþ  ïðîöåäóðû

        InitGraph  äëÿ  ãðàôè÷åñêîãî  äðàéâåðà  è òðåáóåìîãî ðåæèìà áóäåò

        âûáðàí íóæíûé ìîíèòîð. Ïðè çàâåðøåíèè ðàáîòû ãðàôè÷åñêîé ïðîãðàì-

        ìû ïðåäûäóùèé âèäåîðåæèì áóäåò âîññòàíîâëåí. Åñëè äëÿ ãðàôè÷åñêîé

        àïïàðàòóðû ñ äâóìÿ ìîíèòîðàìè òðåáóåòñÿ àâòîìàòè÷åñêîå  ðàñïîçíà-

        âàíèå,  òî ïðîöåäóðà InitGraph âûáåðåò ìîíèòîð è ãðàôè÷åñêóþ ïëà-

        òó,  ïðè êîòîðîé áóäåò ïîëó÷àòüñÿ  íàèëó÷øåå  êà÷åñòâî  âûâîäèìîé

        ãðàôè÷åñêîé èíôîðìàöèè.

 

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³    Äðàéâåð   ³           Àïïàðàòóðà                           ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  CGA.BGI     ³ Äðàéâåð äëÿ àäàïòåðîâ CGA, MCGA ôèðìû IBM.     ³

        ³  EGAVGA.BGI  ³ Äðàéâåð äëÿ àäàïòåðîâ EGA, VGA ôèðìû IBM.      ³

        ³  HERC.BGI    ³ Äðàéâåð äëÿ ìîíîõðîìíîãî àäàïòåðà Hercules ôèð-³

        ³              ³ ìû IBM.                                        ³

        ³  ATT.BGI     ³ Äðàéâåð äëÿ AT&T 6300 (400 ñòðîê).             ³

        ³  PC3270.BGI  ³ Äðàéâåð äëÿ IBM 3270 ÐÑ.                       ³

        ³  IBM8514.BGI ³ Äðàéâåð äëÿ IBM 8514.                          ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Ïîääåðæêà óñòðîéñòâà IBM 8514

             Borland Pascal ïîääåðæèâàåò ãðàôè÷åñêóþ ïëàòó IBM 8514,  êî-

        òîðàÿ ïðåäñòàâëÿåò ñîáîé íîâóþ ãðàôè÷åñêóþ ïëàòó ñ âûñîêèì ðàçðå-

        øåíèåì,  ïîçâîëÿþùóþ ïîëó÷èòü ðàçðåøàþùóþ ñïîñîáíîñòü äî 1024õ768

        òî÷åê  è  ïàëèòðó,  ñîäåðæàùóþ  256 îòòåíêîâ èç 256 öâåòîâ.  Ôàéë

        äðàéâåðà äëÿ ýòîé ãðàôè÷åñêîé ïëàòû íàçûâàåòñÿ IBM8514.BGI.

 

             Ãðàôè÷åñêàÿ ïëàòà IBM 8514 íå ìîæåò ïðàâèëüíî ðàñïîçíàâàòüñÿ

        Borland Pascal  ïðè àâòîìàòè÷åñêîì îáíàðóæåíèè (îíà áóäåò ðàñïîç-

        íàâàòüñÿ àëãîðèòìàìè àâòîîáíàðóæåíèÿ, êàê ïëàòà VGA). Òàêèì îáðà-

        çîì,  ÷òîáû  èñïîëüçîâàòü ïëàòó IBM 8514,  ïåðåìåííîé GraphDriver

        ïðè âûçîâå InitGraph íóæíî ïðèñâîèòü  çíà÷åíèå  IBM8514  (êîòîðîå

        îïðåäåëåíî â ìîäóëå Graph).  Ïðè ðàáîòå ñ ïëàòîé IBM 8514 íå ñëå-

        äóåò èñïîëüçîâàòü ñ InitGraph DetectGraph èëè DETECT (åñëè òîëüêî

        âû íå õîòèòå ýìóëèðîâàòü ðåæèì VGA).

 

            Äëÿ ïëàòû IBM 8514 ïîääåðæèâàþòñÿ ñëåäóþùèå ðåæèìû: IBM8514LO

        (640õ480 ýëåìåíòîâ èçîáðàæåíèÿ) è IBM8514HI  (1024õ768  ýëåìåíòîâ

        èçîáðàæåíèÿ). Îáå êîíñòàíòû ðåæèìà îïðåäåëåíû â èíòåðôåéñíîé ÷àñ-

        òè GRAPH.TPU.

 

            Äëÿ îïðåäåëåíèÿ öâåòîâ â  ïëàòå  IBM  8514  èñïîëüçóþòñÿ  òðè

        6-áèòîâûõ çíà÷åíèÿ. Äëÿ êàæäîãî îïðåäåëÿåìîãî öâåòà èìåþòñÿ 6-áè-

        òîâûå êîìïîíåíòû Red (êðàñíûé), Green (çåëåíûé) è Blue (ãîëóáîé).

        Äëÿ òîãî,  ÷òîáû ïðè ðàáîòå ñ ãðàôè÷åñêîé ïëàòîé IBM 8514 ïîëüçî-

        âàòåëü ìîã çàäàâàòü öâåòà, â áèáëèîòåêó BGI äîáàâëåíà íîâàÿ ïðîã-

        ðàììà.  Ýòà  ïðîãðàììà  îïðåäåëÿåòñÿ â ìîäóëå GRAPH.TPU ñëåäóþùèì

        îáðàçîì:

 

            procedure SetRGBPalette(ColorNum, Red, Green, Blue: Word);

 

            Àðãóìåíò ColorNum çàäàåò çàïèñü ïàëèòðû, êîòîðóþ íóæíî çàãðó-

        çèòü. Ýòîò àðãóìåíò ïðåäñòàâëÿåò ñîáîé öåëîå çíà÷åíèå â äèàïàçîíå

        îò 0 äî 255 (äåñ.). Àðãóìåíòû Red, Green è Blue îïðåäåëÿþò êîìïî-

        íåíòû  öâåòîâ â çàïèñè ïàëèòðû.  Èñïîëüçóåòñÿ òîëüêî ìëàäøèé áàéò

        ýòèõ çíà÷åíèé è òîëüêî 6 ñòàðøèõ áèòîâ ýòîãî áàéòà  çàãðóæàþòñÿ â

        ïàëèòðó.

 

            Äðóãèå ïðîãðàììû,   ìîäèôèöèðóþùèå   ïàëèòðó  (SetAllPalette,

        SetPalette, GetPalette), ïðè ðàáîòå ñ ãðàôè÷åñêîé ïëàòîé IBM 8514

        èñïîëüçîâàòü íå ñëåäóåò.

 

            Äëÿ ñîâìåñòèìîñòè ñ ãðàôè÷åñêèìè àäàïòåðàìè ôèðìû IBM äðàéâå-

        ðû ôîðìàòà BGI îïðåäåëÿþò äëÿ ïåðâûõ 16 öâåòîâ ïàëèòðû  IBM  8514

        çíà÷åíèÿ öâåòîâ, ïðèíÿòûå ïî óìîë÷àíèþ äëÿ àäàïòåðîâ EGA/VGA. Ýòè

        çíà÷åíèÿ ìîãóò èñïîëüçîâàòüñÿ â íåèçìåíåííîì âèäå èëè ìîäèôèöèðî-

        âàòüñÿ ñ ïîìîùüþ ïðîöåäóðû SetGRBPalette.

Ñèñòåìà êîîðäèíàò

             Ïî ñîãëàøåíèþ âåðõíèé ëåâûé  óãîë  ýêðàíà  èìååò  êîîðäèíàòó

        (0,0).  Ó áîëåå ïðàâîãî ñòîëáöà êîîðäèíàòà õ áîëüøå, ó áîëåå íèæ-

        íåé ñòðîêè áîëüøå êîîðäèíàòà y. Òî åñòü êîîðäèíàòà õ óâåëè÷èâàåò-

        ñÿ ïðè ïåðåìåùåíèè âïðàâî, à êîîðäèíàòà y - ïðè ïåðåìåùåíèè âíèç.

        Òàêèì îáðàçîì êîîðäèíàòû êàæäîãî èç ÷åòûðåõ  óãëîâ  è  êîíêðåòíîé

        òî÷êè (ñåðåäèíû ýêðàíà) áóäóò âûãëÿäåòü ñëåäóþùèì îáðàçîì:

 

                         (0,0)                   (319,0)

                            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

                            ³                       ³

                            ³       (159,99)        ³

                            ³           .           ³

                            ³                       ³

                            ³                       ³

                            ³                       ³

                            ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

                          (0,199)                  (319,199)

 

             Ðèñ. 19.1 Ýêðàí ñ êîîðäèíàòàìè xy.

Òåêóùèé óêàçàòåëü

             Ïîíÿòèå òåêóùåãî  óêàçàòåëÿ èñïîëüçóåòñÿ âî ìíîãèõ ãðàôè÷åñ-

        êèõ ñèñòåìàõ.  Ïîíÿòèå òåêóùåãî óêàçàòåëÿ àíàëîãè÷íî ïîíÿòèþ êóð-

        ñîðà äëÿ òåêñòîâîãî ðåæèìà, çà èñêëþ÷åíèåì òîãî, ÷òî òåêóùèé óêà-

        çàòåëü íåâèäèì.

 

             Write('ABC');

             Â òåêñòîâîì ðåæèìå  ïðåäøåñòâóþùèé  îïåðàòîð  Write  îñòàâèò

        êóðñîð  â  êîëîíêå,  íåïîñðåäñòâåííî ñëåäóþùèì çà áóêâîé C.  Åñëè

        áóêâà C áûëà ââåäåíà â êîëîíêå 80,  òî êóðñîð ïåðåéäåò íà êîëîíêó

        1 ñëåäóþùåé ñòðîêè. Åñëè áóêâà c áûëà ââåäåíà â ïîçèöèè 80 ñòðîêè

        25, òî ïðîèçîéäåò ïðîëèñòûâàíèå (ïðîêðóòêà)  ýêðàíà  ââåðõ  íà  1

        ñòðîêó è êóðñîð áóäåò íàõîäèòñÿ â 1 ïîçèöèè 25 ñòðîêè.

 

             MoveTo(0,0);

             LineTo(20,20)

 

              ãðàôè÷åñêîì ðåæèìå äàííûé îïåðàòîð LinåÒî  îñòàâèò òåêóùèé

        óêàçàòåëü â ïîñëåäíåé çàäàííîé òî÷êå (20,20).  Åñëè äåéñòâóåò ðå-

        æèì îòñå÷åíèÿ,  òî ðåàëüíî âûâîäèìàÿ ïðÿìàÿ áóäåò îòñå÷åíà äî òå-

        êóùåé òî÷êè.  Çàìåòèì, ÷òî òåêóùèé óêàçàòåëü íèêîãäà íå îòñåêàåò-

        ñÿ.

 

             Êîìàíäà ÌîvåÒî ÿâëÿåòñÿ ýêâèâàëåíòîì êîìàíäû GotoXY.  Åäèíñ-

        òâåííîå åå íàçíà÷åíèå - ýòî ïåðåìåùåíèå òåêóùåãî óêàçàòåëÿ. Ïåðå-

        ìåùåíèå  òåêóùåãî óêàçàòåëÿ ìîæåò èñïîëüçîâàòüñÿ òîëüêî â ñëåäóþ-

        ùèõ êîìàíäàõ,  èñïîëüçóþùèõ òåêóùèé óêàçàòåëü: MoveTo, InitGraph,

        MoveRel,  LineTo,  LineRel,  OutText,  SetGraphMode, ClearDevice,

        SetViewPort è ClearViewPort.  Ïîñëåäíèå 5 èç íèõ ïåðåìåùàþò òåêó-

        ùèé óêàçàòåëü â òî÷êó (0,0).

Òåêñò

              ãðàôè÷åñêîì ðåæèìå äëÿ âûâîäà òåêñòà èñïîëüçóåòñÿ  øðèôò ñ

        ðàñòðîì 8õ8 è íåñêîëüêî âåêòîðíûõ øðèôòîâ. Ðàñòðîâûé ñèìâîë çàäà-

        åòñÿ ñ ïîìîùüþ ìàòðèöû ýëåìåíòîâ èçîáðàæåíèÿ. Âåêòîðíûé øðèôò çà-

        äàåòñÿ ðÿäîì âåêòîðîâ, êîòîðûå óêàçûâàþò ãðàôè÷åñêîé ñèñòåìå, êàê

        ðèñîâàòü øðèôò.

 

             Ïðåèìóùåñòâî èñïîëüçîâàíèÿ âåêòîðíûõ øðèôòîâ ñòàíîâèòñÿ î÷å-

        âèäíûì,  êîãäà  âû íà÷èíàåòå ðèñîâàòü áîëüøèå ñèìâîëû.  Ïîñêîëüêó

        øòðèõîâîé øðèôò çàäàåòñÿ âåêòîðàìè,  òî ïðè óâåëè÷åíèè øðèôòà êà-

        ÷åñòâî è ðàçðåøåíèå îñòàþòñÿ, òåì íå ìåíåå, õîðîøèìè.

 

             Êîãäà óâåëè÷èâàåòñÿ  ðàñòðîâûé øðèôò,  òî ìàòðèöà óìíîæàåòñÿ

        íà ìàñøòàáíûé êîýôôèöèåíò,  à êîãäà ýòîò  ìàñøòàáíûé  êîýôôèöèåíò

        óâåëè÷èâàåòñÿ, ðàçðåøåíèå ó ñèìâîëîâ ñòàíîâèòñÿ áîëåå ãðóáûì. Äëÿ

        ìàëåíüêèõ øðèôòîâ ðàñòðîâûé øðèôò äîëæåí áûòü äîñòàòî÷íî ïðèåìëå-

        ìûì,  íî äëÿ áîëüøèõ øðèôòîâ âû,  âåðîÿòíî, çàõîòèòå âûáðàòü âåê-

        òîðíûé øðèôò.

 

             Âûðàâíèâàíèå ãðàôè÷åñêîãî  òåêñòà   óïðàâëÿåòñÿ   ïðîöåäóðîé

        SetTextJustify.  Ìàñøòàáèðîâàíèå  è âûáîð øðèôòà îñóùåñòâëÿåòñÿ ñ

        ïîìîùüþ ïðîöåäóðû SetTextStyle. Ãðàôè÷åñêèé òåêñò âûâîäèòñÿ ñ ïî-

        ìîùüþ  ïðîöåäóð ÎutText èëè ÎutTextÕY.  Çàïðîñ î òåêóùèõ óñòàíîâ-

        ëåííûõ äëÿ òåêñòà ïàðàìåòðàõ âûïîëíÿåòñÿ ñ  ïîìîùüþ  îáðàùåíèÿ  ê

        ïðîöåäóðå GetTextSettings. Âåêòîðíûå øðèôòû õðàíÿòñÿ êàæäûé â îò-

        äåëüíîì ôàéëå íà äèñêå è äîëæíû ïðèñóòñòâîâàòü òàì âî âðåìÿ ðàáî-

        òû (ïðè âûçîâå ïðîöåäóðû SetTextStyle).  Ðàçìåð âåêòîðíîãî øðèôòà

        ìîæíî íàñòðîèòü ñ ïîìîùüþ ïðîöåäóðû SetUserCharSize.  Ôàéëû øðèô-

        òîâ (êîòîðûå èìåþò ðàñøèðåíèå .CHR) ìîãóò çàãðóæàòüñÿ ñ äèñêà àâ-

        òîìàòè÷åñêè ìîäóëåì Graph,  èëè èõ ìîæíî êîìïîíîâàòü ñ ïðîãðàììîé

        ïîëüçîâàòåëÿ  èëè  çàãðóæàòü  è "ðåãèñòðèðîâàòü" ñ ïîìîùüþ ìîäóëÿ

        Graph.

 

             Äëÿ ïðåîáðàçîâàíèÿ ôàéëà øðèôòà (èëè ëþáîãî äðóãîãî ïðåäíàç-

        íà÷åííîãî äëÿ ýòîé öåëè äâîè÷íîãî ôàéëà äàííûõ) â ôàéë .OBJ,  êî-

        òîðûé ìîæíî êîìïîíîâàòü ñ ìîäóëåì èëè ïðîãðàììîé ñ ïîìîùüþ äèðåê-

        òèâû êîìïèëÿòîðà  $L  â  Borland Pascal ïðåäóñìîòðåíà ñïåöèàëüíàÿ

        óòèëèòà BINOBJ.EXE.  Ïðè ýòîì ñòàíîâèòñÿ âîçìîæíûì ïîìåñòèòü  âñå

        ôàéëû  øðèôòîâ â âûïîëíÿåìûé ôàéë .EXE (ñì.  êîììåíòàðèè â íà÷àëå

        ïðèìåðà ïðîãðàììû BGILINK.PAS íà äèñòðèáóòèâíîì äèñêå).

Ãðàôè÷åñêèå èçîáðàæåíèÿ è èõ âèäû

             Äëÿ âû÷åð÷èâàíèÿ  è  çàêðàøèâàíèÿ  ãðàôè÷åñêèõ  èçîáðàæåíèÿ,

        âêëþ÷àÿ òî÷êè, ïðÿìûå, îêðóæíîñòè, äóãè, ýëëèïñû, ïðÿìîóãîëüíèêè,

        ìíîãîóãîëüíèêè, øòðèõîâêó, òðåõìåðíóþ øòðèõîâêó è ñåêòîðû, èìååò-

        ñÿ öåëûé ðÿä îáåñïå÷èâàþùèõ ïðîãðàìì.  Äëÿ óïðàâëåíèÿ âèäîì ëèíèè

        - áóäåò îíà òîíêîé èëè òîëñòîé,  íåïðåðûâíîé èëè ñîñòîÿùåé èç òî-

        ÷åê,  èëè  æå  ïîñòðîåííîé ïî âàøåìó ñîáñòâåííîìó îáðàçöó - ìîæíî

        èñïîëüçîâàòü ïðîöåäóðó SetLineStyle.

 

             Äëÿ çàêðàøèâàíèÿ  îáëàñòè  èëè ìíîãîóãîëüíèêà ïåðåñåêàþùåéñÿ

        øòðèõîâêîé èëè ÷åì-ëèáî áîëåå ñëîæíûì ìîæíî èñïîëüçîâàòü ïðîöåäó-

        ðû SetFillStyle, SetFloodPattern, FillPoly è FloodFill.

Îáëàñòè ïðîñìîòðà è äâîè÷íûå îáðàçû

             Ïðîöåäóðà ViewPoint ïîçâîëÿåò âñåì êîìàíäàì  âûâîäà ðàáîòàòü

        â ïðÿìîóãîëüíîé îáëàñòè ýêðàíà.  Ãðàôèêè,  ïðÿìûå è äðóãèå ãðàôè-

        ÷åñêèå èçîáðàæåíèÿ (âåñü ãðàôè÷åñêèé  âûâîä)  ñâÿçûâàåòñÿ  ñ  îá-

        ëàñòüþ ïðîñìîòðà,  ïîêà ýòà îáëàñòü íå èçìåíÿåòñÿ.  Ïðåäóñìîòðåíû

        ïðîãðàììû äëÿ î÷èñòêè îáëàñòè ïðîñìîòðà è ñ÷èòûâàíèÿ  åå  òåêóùèõ

        îïðåäåëåíèé.  Åñëè çàäàí ðåæèì îòñå÷åíèÿ, òî âåñü ãðàôè÷åñêèé âû-

        âîä îòñå÷åòñÿ äî òåêóùåé òî÷êè.  Çàìåòèì,  ÷òî òåêóùèé  óêàçàòåëü

        íèêîãäà íå îòñåêàåòñÿ.

 

             Äëÿ ñ÷èòûâàíèÿ  è âûâîäà ýëåìåíòîâ èçîáðàæåíèÿ ïðåäóñìîòðåíû

        ïðîöåäóðû GetPixel è Putpixel.  ×òîáû ñîõðàíèòü è âîññòàíîâèòü íà

        ýêðàíå   ïðÿìîóãîëüíóþ   îáëàñòü,  ìîæíî  èñïîëüçîâàòü  ïðîöåäóðû

        GetImage è PutImage.  Îíè îáåñïå÷èâàþò ïîëíîå âûïîëíåíèå îïåðàöèé

        ïðîöåäóðû ÂitÂlt (íîðìàëüíîå, õîr, îr, ànd, nît).

Ïîääåðæêà ñòðàíèö è öâåòîâ

             Èìååòñÿ ìíîãî äðóãèõ ïîääåðæèâàþùèõ ïðîãðàìì,  âêëþ÷àÿ  ïîä-

        äåðæêó  äëÿ  íåñêîëüêèõ ãðàôè÷åñêèõ ñòðàíèö (òîëüêî äëÿ àäàïòåðîâ

        EGA,  VGA è Íårcules;  ýòî îñîáåííî ïîëåçíî ïðè  èñïîëüçîâàíèè  â

        ìóëüòèïëèêàöèè), ïàëèòðû, öâåòà è òàê äàëåå.

Îáðàáîòêà îøèáîê

             Âíóòðåííèå îøèáêè   ìîäóëÿ   Graph   âîçâðàùàþòñÿ   ôóíêöèåé

        GraphResult. Ýòà ôóíêöèÿ âîçâðàùàåò êîä îøèáêè, ïîêàçûâàþùèé ñîñ-

        òîÿíèå ïîñëåäíåé ãðàôè÷åñêîé îïåðàöèè.  Êîäû  âîçâðàòà  ïðèâåäåíû

        â ðàçäåëå  ïî  GraphResult â Ãëàâå 1 ("Ñïðàâî÷íèê ïî áèáëèîòåêè")

        "Ñïðàâî÷íîãî ðóêîâîäñòâà ïðîãðàììèñòà".

 

             Çíà÷åíèå êîäà  âîçâðàòà äëÿ ôóíêöèè GraphResult óñòàíàâëèâà-

        åòñÿ ñëåäóþùèìè ïðîöåäóðàìè:

 

              DetectGraph         SetTextStile          SetAllPalette

              InitGraph           SetGraphMode          SetFillPattern

              FloodFill           CloseGraph            SetFillStyle

              FillPoly            GetGraphMode          SetGraphBufSize

              DrawPoly            ImageSize             SetGraphMode

              Bar                 InstallUserDriver     SetLineStyle

              Bàr3D               InstallUserFont       SetPalette

              PieSlice            RegisterBGIDriver     SetTextJustify

              ClearViewPort       RegisterGBIFont

 

             Çàìåòèì, ÷òî ôóíêöèÿ GraphResult ïîñëå îáðàùåíèÿ ê íåé ñáðà-

        ñûâàåò êîä îøèáêè â 0.  Òàêèì îáðàçîì, ïîëüçîâàòåëü äîëæåí ñîõðà-

        íèòü çíà÷åíèå êîäà îøèáêè âî âðåìåííîé ïåðåìåííîé è çàòåì  ïðîâå-

        ðèòü åãî.

Íà÷àëî ðàáîòû

             Ïðèâåäåì ïðèìåð ïðîñòîé ãðàôè÷åñêîé ïðîãðàììû:

 

             1 program GraphTest;

             2 uses

             3   Graph;

             4 var

             5   GraphDriver  : integer;

             6   GraphMode    : integer;

             7   ErrorCode    : integer;

             8 begin

             9   GraphDriver := Detect;    { Óñòàíîâèòü ôëàã: âûïîëíèòü

                                             ðàñïîçíàâàíèå }

             10  InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

             11  ErrorCode := GraphResult;

             12  if ErrorCode <> grOk then  { îøèáêà? }

             13  begin

             14    Writeln('Îøèáêà ãðàôèêè: ',GraphErrorMsg(ErrorCode);

             15    Writeln('Ïðîãðàììà àâàðèéíî çàâåðøèëà ðàáîòó...');

             16    Halt(1);

             17  end;

             18  Rectangle(0, 0, GetMaxX, GetMaxY); { íàðèñîâàòü  ðàìêó

                                                     ðàçìåðîì â ýêðàí }

             19  SetTextJustify(CenterText, CenterText); {  öåíòðèðîâà-

                                                     íèå òåêñòà }

             20  SetTextStyle(DefaultFont, HorizDir, 3);

             21  OutTextXY(GetMaxX div 2, GetMaxY div 2, { öåíòð ýêðàíà }

             22         'Ãðàôè÷åñêèé èíòåðôåéñ ôèðìû Borland (BGI)');

             23  Readln;

             24  CloseGraph;

             25 end. { GraphTest }

 

             Ïðîãðàììà íà÷èíàåòñÿ ñ îáðàùåíèÿ ê ïðîöåäóðå InitGraph,  êî-

        òîðàÿ àâòîìàòè÷åñêè ïðîâåðÿåò íàëè÷èå àïïàðàòóðû è çàãðóæàåò  ñî-

        îòâåòñòâóþùèé  ãðàôè÷åñêèé  äðàéâåð  (íàõîäÿùèéñÿ  â  êàòàëîãå C:

        DRIVERS). Åñëè ãðàôè÷åñêàÿ àïïàðàòóðà íå ðàñïîçíàíà èëè â ïðîöåñ-

        ñå èíèöèàëèçàöèè ïðîèçîøëà îøèáêà,  òî íà ýêðàí âûâîäèòñÿ ñîîáùå-

        íèå îá îøèáêå è ïðîãðàììà ïðåêðàùàåò ðàáîòó.   ïðîòèâíîì  ñëó÷àå

        âäîëü êðàåâ ýêðàíà ðèñóåòñÿ ïðÿìîóãîëüíèê è â öåíòðå ýêðàíà âûâî-

        äèòñÿ òåêñò.

 

             Ïëàòà AT&T  400  èëè IBM 8514 íå ðàñïîçíàåòñÿ àâòîìàòè÷åñêè.

        Òåì íå ìåíåå, âû ìîæåòå ïîëüçîâàòüñÿ äðàéâåðîì ãðàôèêè AT&T ïóòåì

        îòìåíû àâòîìàòè÷åñêîé ïðîâåðêè, ïåðåñûëêè èñïîëíÿåìîãî êîäà äðàé-

        âåðà AT&T ïðîöåäóðå InitGraph è óñòàíîâêè äîïóñòèìîãî ãðàôè÷åñêî-

        ãî ðåæèìà.  Çàìåíèòå 8 è 9 ñòðîêó â ïðåäûäóùåì ïðèìåðå ñëåäóþùèìè

        òðåìÿ ñòðîêàìè:

 

             GraphDriver := ATT400;

             GraphMode := ATT400Hi;

             InitGraph(GraphDriver, GraphMode, 'C:\BP\BGI');

             Ýòî óêàæåò  ãðàôè÷åñêîé  ñèñòåìå  íà  íåîáõîäèìîñòü çàãðóçêè

        äðàéâåðà óñòðîéñòâà AT&T400, ðàñïîëîæåííîãî â êàòàëîãå C:\BP\BGI,

        è óñòàíîâèò ãðàôè÷åñêèé ðåæèì 640 íà 400.

 

             Ïðèâåäåì åùå îäèí ïðèìåð,  êîòîðûé ïîêàçûâàåò, êàê ìîæíî ïå-

        ðåêëþ÷àòüñÿ ìåæäó ãðàôè÷åñêèì è òåêñòîâûì ðåæèìàìè:

 

             1 program GraphTest;

             2 uses

             3   Graph;

             4 var

             5   GraphDriver  : integer;

             6   GraphMode    : integer;

             7   ErrorCode    : integer;

             8 begin

             9   GraphDriver := Detect;    { Óñòàíîâèòü ôëàã: âûïîëíèòü

                                             ðàñïîçíàâàíèå }

             10  InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

             11  ErrorCode := GraphResult;

             12  if ErrorCode <> grOk then  { îøèáêà? }

             13  begin

             14    Writeln('Îøèáêà ãðàôèêè: ',GraphErrorMsg(ErrorCode);

             15    Writeln('Ïðîãðàììà àâàðèéíî çàâåðøèëà ðàáîòó...');

             16    Helt(1);

             17  end;

             18  OutText('Ãðàôè÷åñêèé ðåæèì. Íàæìèòå <RETURN>');

             19  Readln;

             20  RestoreCrtMode;

             21  Write('Òåêñòîâûé ðåæèì. Íàæìèòå <RETURN>');

             22  Readln;

             23  SetGraphMode(GraphMode);

             24  OutText('Ñíîâà ãðàôè÷åñêèé ðåæèì. Íàæìèòå <RETURN>');

             25  Readln;

             26  CloseGraph;

             27 end. { GraphTest }

 

             Çàìåòèì, ÷òî âûçîâ ïðîöåäóðû SetGraphMode íà ñòðîêå 23 ñáðà-

        ñûâàåò âñå ãðàôè÷åñêèå ïàðàìåòðû (ïàëèòðà, òåêóùèé óêàçàòåëü, îñ-

        íîâíîé  è  ôîíîâûé  öâåòà  è ò.ä.) è èì ïðèñâàèâàþòñÿ ïðèíÿòûå ïî

        óìîë÷àíèþ çíà÷åíèÿ.

 

             Âûçîâ CloseGraph  âîññòàíàâëèâàåò ïåðâîíà÷àëüíî îáíàðóæåííûé

        âèäåîðåæèì (InitGraph) è îñâîáîæäàåò ïàìÿòü,  èñïîëüçóåìóþ ãðàôè-

        ÷åñêèì äðàéâåðîì.

Ïîëüçîâàòåëüñêèå ïðîãðàììû óïðàâëåíèÿ äèíàìè÷åñêè ðàñïðåäåëÿåìîé ïàìÿòüþ

<

             Äëÿ ìîäóëÿ  Graph ïðåäóñìîòðåíû äâå ïðîãðàììû óïðàâëåíèÿ äè-

        íàìè÷åñêè ðàñïðåäåëÿåìîé  îáëàñòüþ  GraphFrååÌåì  è  GraphGetÌåì.

        Ïåðâàÿ èç íèõ îñâîáîæäàåò ïàìÿòü, ðàñïðåäåëåííóþ äëÿ äðàéâåðîâ, à

        âòîðàÿ - ðàñïðåäåëÿåò ïàìÿòü äëÿ äðàéâåðîâ ãðàôè÷åñêèõ óñòðîéñòâ.

        Ñòàíäàðòíûå ïðîãðàììû èìåþò ñëåäóþùèé âèä:

 

             procedure GraphGetMem(var P : Pointer; Size : word);

                { âûäåëèòü ïàìÿòü äëÿ äðàéâåðîâ ãðàôè÷åñêèõ óñòðîéñòâ }

 

             procedure GraphFreeMem(var P : Pointer; Size : word);

                { îñâîáîäèòü ïàìÿòü äëÿ äðàéâåðîâ ãðàôè÷åñêèõ óñòðîéñòâ }

 

              ìîäóëå Graph èìåþòñÿ äâà óêàçàòåëÿ,  êîòîðûå ïî  óìîë÷àíèþ

        óêàçûâàþò íà äâå îïèñàííûå çäåñü  ñòàíäàðòíûå  ïîäïðîãðàììû.  Ýòè

        óêàçàòåëü îïðåäåëÿþòñÿ ñëåäóþùèì îáðàçîì:

 

             var

               GraphGetMemPtr  : pointer;

                  { óêàçàòåëü íà ïðîãðàììó ðàñïðåäåëåíèÿ ïàìÿòè }

               GraphFreeMemPtr : pointer;

                  { óêàçàòåëü íà ïðîãðàììó îñâîáîæäåíèÿ ïàìÿòè }

 

             Âî âðåìÿ èíèöèàëèçàöèè ìîäóëÿ Graph ýòè  óêàçàòåëè ññûëàþòñÿ

        íà  ñòàíäàðòíûå ãðàôè÷åñêèå ïðîãðàììû ðàñïðåäåëåíèÿ/îñâîáîæäåíèÿ,

        êîòîðûå îïðåäåëÿþòñÿ  â  ñåêöèè  ðåàëèçàöèè ìîäóëÿ Graph.  Ïàìÿòü

        ðàñïðåäåëÿòñÿ â òðåõ ðàçëè÷íûõ öåëÿõ:

 

             * äëÿ ìíîãîöåëåâûõ ãðàôè÷åñêèõ áóôåðîâ, ðàçìåð êîòîðûõ óñòà-

               íàâëèâàåòñÿ âûçîâîâ SegGraphBufSize (ïî óìîë÷àíèþ ýòî 4Ê);

 

             * äëÿ  äðàéâåðà  óñòðîéñòâà,  çàãðóæàåìîãî  InitGraph (ôàéëû

               *.BGI);

 

             * äëÿ ôàéëà  âåêòîðíîãî  øðèôòà,  çàãðóæåííîãî  SetTextStyle

               (ôàéëû *.CHR).

 

             Ãðàôè÷åñêèé áóôåð  âñåãäà âûäåëÿåòñÿ â äèíàìè÷åñêè ðàñïðåäå-

        ëÿåìîé îáëàñòè ïàìÿòè.  Ïàìÿòü äëÿ äðàéâåðà óñòðîéñòâà âûäåëÿåòñÿ

        â äèíàìè÷åñêîé  ïàìÿòè,  åñëè  ïðîãðàììà  íå çàãðóæàåò åãî èëè íå

        êîìïîíóåòñÿ ñ íèì âûçîâîì RegisterBGIdriver. Ïðè âûáîðå âåêòîðíî-

        ãî øðèôòà  ñ ïîìîùüþ SetTextStyle òàêæå âûäåëÿåòñÿ ïàìÿòü â äèíà-

        ìè÷åñêè ðàñïðåäåëÿåìîé îáëàñòè (åñëè âàøà ïðîãðàììà íå êîìïîíóåò-

        ñÿ ñî øðèôòîì è íå èñïîëüçóåò RegisterBGIfont).

 

             ×òîáû çàäàòü  âàøå ñîáñòâåííîå óïðàâëåíèå ïàìÿòüþ,  â ìîäóëå

        Graph âû ìîæåòå èçìåíèòü çíà÷åíèÿ ýòèõ óêàçàòåëåé òàê,  ÷òîáû îíè

        ññûëàëèñü  íà  âàøè  ñîáñòâåííûå ïðîãðàììû.  Ïðîãðàììû,  çàäàííûå

        ïîëüçîâàòåëåì, äîëæíû èìåòü òîò æå ñïèñîê ïàðàìåòðîâ, ÷òî è ñòàí-

        äàðòíûå  ïðîãðàììû,  è äîëæíû èìåòü äàëüíèé òèï âûçîâà.  Ïðèâåäåì

        äàëåå ïðèìåð çàäàííûõ ïîëüçîâàòåëåì ïðîãðàìì ðàñïðåäåëåíèÿ è  îñ-

        âîáîæäåíèÿ ïàìÿòè.  Çàìåòèì, ÷òî ïðè èñïîëüçîâàíèè ïðîöåäóðû Eõit

        àâòîìàòè÷åñêè âûçûâàåòñÿ ïðîöåäóðà CloseGraph.

 

              program UserHeapManegement;

              { ïðîãðàììà ïîêàçûâàåò,  êàê ïîëüçîâàòåëü ìîæåò ðàáîòàòü  ñ

                ïîäïðîãðàììàìè  óïðàâëåíèÿ äèíàìè÷åñêè ðàñïðåäåëÿåìîé îá-

                ëàñòüþ ïàìÿòè, èñïîëüçóåìûìè â ìîäóëå Graph }

              uses

                 Graph;

              var

                 GraphDriver, GraphMode : Integer;

                 ErrorCode              : Integer; { èñïîëüçóåòñÿ äëÿ

                           ñîõðàíåíèÿ êîäà âîçâðàòà ôóíêöèè GraphResult }

                 PreGraphExitProc       : Pointer { èñïîëüçóåòñÿ äëÿ ñîõ-

                           ðàíåíèÿ èñõîäíîé ïðîöåäóðû âûõîäà }

                 { ïðîöåäóðû ïîëüçîâàòåëÿ äîëæíû èñïîëüçîâàòü äàëüíèé òèï

                   îáðàùåíèÿ }

                  procedure MyGetMem(var P : Pointer; Size : word); far;

                 { âûäåëèòü ïàìÿòü äëÿ äðàéâåðîâ ãðàôè÷åñêèõ óñòðîéñòâ }

               begin

                 Write('Áûëà âûçâàíà ïðîöåäóðà ',

                        'MyGetMem, íàæìèòå <Enter>:');

                 GetMem(P, Size);

               end; { MyGetMem }

 

               procedure MyFreeMem(ver P : Pointer; Size : word); far;

               { îñâîáîäèòü ïàìÿòü, çàíÿòóþ äðàéâåðàìè ãðàôè÷åñêèõ

                 óñòðîéñòâ }

               begin

                 RestoreCRTMode;

                 Write('Áûëà âûçâàíà ïðîöåäóðà MyFreeMem, íàæìèòå ',

                        '<Enter>:'); Readln;

                 if P <> Nil Then { íå îñâîáîæäàòü ïóñòûå óêàçàòåëè }

                 begin

                   FreeMem(P, Size);

                   P := Nil;

                 end; { MyFreeMem }

 

              procedure MyExitProc; far;

              { ïðîöåäóðà âñåãäà ïîëó÷àåò âûçîâ ïðè ïðåêðàùåíèè ðàáîòû

                ïðîãðàììû }

              begin

                ExitProc := PreGraphExitProc; { âîññòàíîâèòü èñõîäíóþ

                                                ïðîöåäóðó âûõîäà }

                CloseGraph;         { î÷èñòèòü äèíàìè÷åñêè ðàñïðåäåëÿåìóþ

                                      îáëàñòü }

              end; { MyExitProc }

 

              begin

              { èíèöèàëèçèðîâàòü ïðîãðàììó î÷èñòêè ïàìÿòè }

                 PreGraphExitProc := ExitProc;

                 ExitProc := @MyExitProc;

                 GraphGetMemPtr := @MyGetMem ; { çàìåíèòü ðàñïðåäåëåíèå

                                                 ïàìÿòè }

                 GraphFreeMemPtr := @MyFreeMem ; { çàìåíèòü îñâîáîæäåíèå

                                                 ïàìÿòè }

                 GraphDriver := Detect;

                 InitGraph(GraphDriver, GraphMode, '');

                 ErrorCode := GraphResult;

                 if ErrorCode <> grOk then

               begin

                Writeln('Ãðàôè÷åñêàÿ îøèáêà: ' GraphErrorMsg(ErrorCode);

                Readln;

                Halt(1);

               end;

               Line(0, 0, GetMaxX, GetMaxY);

               OutText(1, 1, 'Íàæìèòå êëàâèøó <Enter>:');

               Readln;

              end. { UserHeapManegement }

 

             Åñëè öåëåâîé  ïëàòôîðìîé  ÿâëÿåòñÿ çàùèùåííûé ðåæèì DOS,  òî

        ïðè èñïîëüçîâàíèè ïîäîáíûõ ïðîãðàìì ñëåäóåò èìåòü â âèäó  ñëåäóþ-

        ùåå: âû  äîëæíû îáåñïå÷èòü,  ÷òî ëþáîé âîçâðàùàåìûé GetMem óêàçà-

        òåëü äîëæåí èìåòü íóëåâîå ñìåùåíèå.  Ñäåëàòü ýòî ìîæíî ñ  ïîìîùüþ

        ôóíêöèè GlobalAllocPtr:

 

             procedure MyGetMem(var P: Pointer; Size: Word); far;

             var

                P: Pointer;

             bagin

                P:= GlobalAllocPtr(HeapAllocFlags, Size);

                GetMem(P, 4096);

             end;  { MyGetMem }

Ïðîöåäóðû ìîäóëÿ Graph

                            

                                                             Òàáëèöà 19.3

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³   Ïîäïðîãðàììà    ³                   Îïèñàíèå                ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Arñ              ³ Ðèñóåò äóãó îêðóæíîñòè îò  íà÷àëüíîãî óãëà³

        ³                   ³ äî êîíå÷íîãî óãëà;  òî÷êà (x,y) áåðåòñÿ  â³

        ³                   ³ êà÷åñòâå öåíòðà îêðóæíîñòè.               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Bàr              ³ Ðèñóåò ñòîëáåö, èñïîëüçóÿ òåêóùèé òèï çàê-³

        ³                   ³ ðàñêè.                                    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Bàr3D            ³ Ðèñóåò  òðåõìåðíûé  ñòîëáåö, èñïîëüçóÿ òå-³

        ³                   ³ êóùèé òèï çàêðàñêè.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Circlå           ³ Ðèñóåò îêðóæíîñòü ñ öåíòðîì â òî÷êå (x,y).³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ClearDeviñå      ³ Ñáðàñûâàåò  òåêóùèå ïàðàìåòðû, óñòàíîâëåí-³

        ³                   ³ íûå äëÿ óñòðîéñòâà âûâîäà, è ïîäãîòàâëèâà-³

        ³                   ³ åò åãî äëÿ âûâîäà.                        ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ClearViewPort    ³ Î÷èùàåò  òåêóùóþ  îáëàñòü  ïðîñìîòðà (îêíî³

        ³                   ³ ýêðàíà).                                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  CloseGraph       ³ Âûïîëíÿåò îñòàíîâ ãðàôè÷åñêîé ñèñòåìû.    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  DetectGraph      ³ Ðàñïîçíàåò àïïàðàòóðó è îïðåäåëÿåò,  êàêîé³

        ³                   ³ ãðàôè÷åñêèé äðàéâåð  è ðåæèì íóæíî èñïîëü-³

        ³                   ³ çîâàòü.                                   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  DrawPoly         ³ Ðèñóåò  ìíîãîóãîëüíèê,  èñïîëüçóÿ  òåêóùèé³

        ³                   ³ òèï ëèíèè è öâåò.                         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Ellipse          ³ Ðèñóåò  ýëëèïòè÷åñêóþ  äóãó îò  íà÷àëüíîãî³

        ³                   ³ óãëà äî êîíå÷íîãî óãëà,  èñïîëüçóþ  (Õ,Y),³

        ³                   ³ êàê òî÷êó öåíòðà.                         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  FillPoly         ³ Çàêðàøèâàåò  ìíîãîóãîëüíèê, èñïîëüçóÿ ïðå-³

        ³                   ³ îáðàçîâàòåëü ðàçâåðòêè.                   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  FloodFill        ³ Çàêðàøèâàåò  îãðàíè÷åííóþ îáëàñòü, èñïîëü-³

        ³                   ³ çóÿ òåêóùèé îáðàçåö çàêðàñêè.             ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetArcCoords     ³ Ïîçâîëÿåò  ïîëüçîâàòåëþ  çàïðàøèâàòü êîîð-³

        ³                   ³ äèíàòû ïîñëåäíåé êîìàíäû Arñ.             ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetAspectRatio   ³ Âîçâðàùàåò äåéñòâóþùåå  ðàçðåøåíèå ãðàôè- ³

        ³                   ³ ÷åñêîãî ýêðàíà,  íà  îñíîâå êîòîðîãî ìîæåò³

        ³                   ³ áûòü âû÷èñëåí  êîýôôèöèåíò  îòíîñèòåëüíîãî³

        ³                   ³ óäëèíåíèÿ (Õàsð,Yàsð).                    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetBkÑîlor       ³ Âîçâðàùàåò òåêóùèé ôîíîâûé öâåò.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetCîlor         ³ Âîçâðàùàåò òåêóùèé öâåò ðèñóíêà.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetDefaultPalette³ Â çàïèñè òèïà  PaletteType  âîçâðàùàåò èñ-³

        ³                   ³ ïîëüçóåìóþ ïî óìîë÷àíèþ ïàëèòðó.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetDriverName    ³ Âîçâðàùàåò  ñòðîêó,   ñîäåðæàùóþ   èìÿ òå-³

        ³                   ³ êóùåãî äðàéâåðà.                          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetFillPattern   ³ Âîçâðàùàåò  ïîñëåäíèé îáðàçåö çàïîëíèòåëÿ,³

        ³                   ³ óñòàíîâëåííûé ñ ïîìîùüþ îáðàùåíèÿ ê ïðîöå-³

        ³                   ³ äóðå SetFillPattern.                      ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetFillSetting   ³ Ïîçâîëÿåò  ïîëüçîâàòåëþ âûïîëíèòü çàïðîñ î³

        ³                   ³ òåêóùåì îáðàçöå è öâåòå çàêðàñêè, óñòàíîâ-³

        ³                   ³ ëåííûìè  ñ ïîìîùüþ ïðîöåäóð SetFillStyle è³

        ³                   ³ SetFillPattern.                           ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetImage         ³ Ñîõðàíÿåò  äâîè÷íûé îáðàç çàäàííîé îáëàñòè³

        ³                   ³ â áóôåðå.                                 ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetGraphMode     ³ Âîçâðàùàåò òåêóùèé ãðàôè÷åñêèé ðåæèì.     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetLineSettings  ³ Âîçâðàùàåò òåêóùèé òèï ëèíèè,  îáðàçåö ëè-³

        ³                   ³ íèè è òîëùèíó ëèíèè,  çàäàííûå  ïðîöåäóðîé³

        ³                   ³ SetLineStyle.                             ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetMaxColor      ³ Âîçâðàùàåò  ìàêñèìàëüíîå  çíà÷åíèå  öâåòà,³

        ³                   ³ êîòîðîå ìîæíî ïåðåäàòü ïðîöåäóðå SetColor.³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetMAxMode       ³ Âîçâðàùàåò  ìàêñèìàëüíûé  íîìåð ðåæèìà äëÿ³

        ³                   ³ òåêóùåãî çàãðóæåííîãî äðàéâåðà.           ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetÌàõÕ          ³ Âîçâðàùàåò äëÿ òåêóùåãî ãðàôè÷åñêîãî äðàé-³

        ³                   ³ âåðà è ðåæèìà ñàìóþ ïðàâóþ êîëîíêó (ðàçðå-³

        ³                   ³ øåíèå ïî õ).                              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetÌàõY          ³ Âîçâðàùàåò äëÿ òåêóùåãî ãðàôè÷åñêîãî äðàé-³

        ³                   ³ âåðà è ðåæèìà ñàìóþ íèæíþþ ñòðîêó  (ðàçðå-³

        ³                   ³ øåíèå ïî ó).                              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetPaletteSize   ³ Âîçâðàùàåò ðàçìåð òàáëèöû ïðîñìîòðà ïàëèò-³

        ³                   ³ ðû.                                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetPixel         ³ Âîçâðàùàåò çíà÷åíèå ýëåìåíòà èçîáðàæåíèÿ â³

        ³                   ³ òî÷êå Õ,Y.                                ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetPalette       ³ Âîçâðàùàåò òåêóùóþ ïàëèòðó è  åå ðàçìåð.  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetTextSettings  ³ Âîçâðàùàåò òåêóùèé òåêñòîâûé  øðèôò,  íàï-³

        ³                   ³ ðàâëåíèå, ðàçìåð è âûðàâíèâàíèå äëÿ  íåãî,³

        ³                   ³ óñòàíîâëåííûå     ñ    ïîìîùüþ    ïðîöåäóð³

        ³                   ³ SetTextStyle è SetTextJustify.            ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetViewSettings  ³ Ïîçâîëÿåò ïîëüçîâàòåëþ âûäàòü çàïðîñ î òå-³

        ³                   ³ êóùåé îáëàñòè èçîáðàæåíèÿ è ïàðàìåòðàõ îò-³

        ³                   ³ ñå÷åíèÿ èçîáðàæåíèÿ.                      ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetÕ             ³ Âîçâðàùàåò  êîîðäèíàòó   Õ òåêóùåé ïîçèöèè³

        ³                   ³ (òåêóùåãî óêàçàòåëÿ).                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GetY             ³ Âîçâðàùàåò  êîîðäèíàòó  Y  òåêóùåé ïîçèöèè³

        ³                   ³ (òåêóùåãî óêàçàòåëÿ).                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GraphErrorMsg    ³ Äëÿ çàäàííîãî êîäà îøèáêè âîçâðàùàåò ñòðî-³

        ³                   ³ êó ñîîáùåíèÿ îá îøèáêå.                   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  GraphResult      ³ Âîçâðàùàåò   êîä îøèáêè äëÿ ïîñëåäíåé ãðà-³

        ³                   ³ ôè÷åñêîé îïåðàöèè.                        ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  InitGraph        ³ Èíèöèàëèçèðóåò  ãðàôè÷åñêóþ  ñèñòåìó è ïå-³

        ³                   ³ ðåâîäèò àïïàðàòóðó â ãðàôè÷åñêèé ðåæèì.   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ImageSize        ³ Âîçâðàùàåò ÷èñëî  áàéò,  êîòîðûå  òðåáóþò-³

        ³                   ³ ñÿ äëÿ  ñîõðàíåíèÿ  ïðÿìîóãîëüíîé  îáëàñòè³

        ³                   ³ ýêðàíà.                                   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  InstallUserDriver³ Óñòàíàâëèâàåò  äîáàâëåííûé   ïîëüçîâàòåëåì³

        ³                   ³ äðàéâåð â òàáëèöå äðàéâåðîâ óñòðîéñòâ BGI.³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  InstallUserFont  ³ Óñòàíàâëèâàåò íîâûé ôàéë øðèôòà, íå âñòðî-³

        ³                   ³ åííûé â ãðàôè÷åñêóþ ñèñòåìó.              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  InitGraph        ³ Èíèöèàëèçèðóåò ãðàôè÷åñêóþ ñèñòåìó è ïåðå-³

        ³                   ³ âîäèò àïïàðàòíûå  ñðåäñòâà  â  ãðàôè÷åñêèé³

        ³                   ³ ðåæèì.                                    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Line             ³ Ðèñóåò  ïðÿìóþ  ëèíèþ  èç  òî÷êè (x1,y1) â³

        ³                   ³ (x2,y2).                                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  LineRel          ³ Ðèñóåò ïðÿìóþ ëèíèþ  äî  òî÷êè,  ïðåäñòàâ-³

        ³                   ³ ëÿþùåé ñîáîé  îòíîñèòåëüíîå  ðàññòîÿíèå îò³

        ³                   ³ òåêóùåãî óêàçàòåëÿ.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  LinåTî           ³ Ðèñóåò   ëèíèþ  èç  òåêóùåãî  ïîëîæåíèÿ  â³

        ³                   ³ òî÷êó (x,y).                              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÌîveRål          ³ Ïåðåìåùàåò  òåêóùèé  óêàçàòåëü íà ðàññòîÿ-³

        ³                   ³ íèå, ÿâëÿþùååñÿ îòíîñèòåëüíûì  ðàññòîÿíèåì³

        ³                   ³ îò òåêóùåé ïîçèöèè.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÌîvåÒî           ³ Ïåðåìåùàåò   òåêóùèé   óêàçàòåëü  â  òî÷êó³

        ³                   ³ (x,y).                                    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÎutText          ³ Ïîñûëàåò  ñòðîêó íà óñòðîéñòâî âûâîäà, íà-³

        ³                   ³ ÷èíàÿ ñ òåêóùåãî óêàçàòåëÿ.               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÎutTextÕY        ³ Ïîñûëàåò ñòðîêó íà óñòðîéñòâî âûâîäà.     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  PieSlice         ³ Ðèñóåò ñåêòîð.  Òî÷êà (Õ,Y) èñïîëüçóåòñÿ â³

        ³                   ³ êà÷åñòâå öåíòðà,  à ñåêòîð ðèñóåòñÿ îò íà-³

        ³                   ³ ÷àëüíîãî äî êîíå÷íîãî óãëà.               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÐutImagå         ³ Âûâîäèò íà ýêðàí äâîè÷íûé îáðàç.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  ÐutÐiõål         ³ Ñòðîèò ýëåìåíò èçîáðàæåíèÿ â òî÷êå x,y.   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  Råñtanglå        ³ Ðèñóåò  ïðÿìîóãîëüíèê,  èñïîëüçóÿ  òåêóùèé³

        ³                   ³ òèï ëèíèè è öâåò.                         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  RegisterBGIDriver³ Ðåãèñòðèðóåò  äîïóñòèìûé  äðàéâåð (ôîðìàòà³

        ³                   ³ BGI) â ãðàôè÷åñêîé ñèñòåìå.               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  RegisterBGIFont  ³ Ðåãèñòðèðóåò â ãðàôè÷åñêîé  ñèñòåìå äîïóñ-³

        ³                   ³ òèìûé (ôîðìàòà BGI) øðèôò.                ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  RåstoreCRTÌîdå   ³ Âîññòàíàâëèâàåò  èñõîäíûé  ðåæèì   ýêðàíà,³

        ³                   ³ êîòîðûé áûë  óñòàíîâëåí  ïðè èíèöèàëèçàöèè³

        ³                   ³ ãðàôèêè.                                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetActivePage    ³ Óñòàíàâëèâàåò äëÿ  ãðàôè÷åñêîãî âûâîäà àê-³

        ³                   ³ òèâíóþ ñòðàíèöó.                          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetAllPalette    ³ Èçìåíÿåò  âñå öâåòà ïàëèòðû, êàê áûëî óêà-³

        ³                   ³ çàíî.                                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetAspectRatio   ³ Èçìåíÿåò ïðèíÿòûé ïî óìîë÷àíèþ êîýôôèöèåíò³

        ³                   ³ îòíîñèòåëüíîãî óäëèíåíèÿ.                 ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetBkÑîlor       ³ Èñïîëüçóÿ ïàëèòðó,  óñòàíàâëèâàåò  òåêóùèé³

        ³                   ³ ôîíîâûé öâåò.                             ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetColor         ³ Èñïîëüçóÿ ïàëèòðó,  óñòàíàâëèâàåò  òåêóùèé³

        ³                   ³ öâåò ðèñóíêà.                             ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetFillPattern   ³ Âûáèðàåò îáðàçåö çàêðàñêè,  çàäàííûé ïîëü-³

        ³                   ³ çîâàòåëåì.                                ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetFillStyle     ³ Óñòàíàâëèâàåò îáðàçåö çàêðàñêè è åå öâåò. ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetGraphBufSize  ³ Ïîçâîëÿåò èçìåíèòü ðàçìåð  áóôåðà, èñïîëü-³

        ³                   ³ çóåìîãî äëÿ îïðîñà è çàêðàñêè.            ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetGraphMode     ³ Ïåðåêëþ÷àåò  ñèñòåìó  â  ãðàôè÷åñêèé ðåæèì³

        ³                   ³ è î÷èùàåò ýêðàí.                          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetLineStyle     ³ Óñòàíàâëèâàåò  òåêóùèé  òèï ëèíèè è åå øè-³

        ³                   ³ ðèíó.                                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetPalette       ³ Èçìåíÿåò  îäèí  öâåò ïàëèòðû, çàäàííûé ïå-³

        ³                   ³ ðåìåííûìè Colornum è Color.               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetGRBPalette    ³ Ïîçâîëÿåò  ìîäèôèöèðîâàòü   çàïèñè  ïàëèò-³

        ³                   ³ ðû äëÿ äðàéâåðîâ IBM 8514 è VGA.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetTextJustify   ³ Ñ  ïîìîùüþ  ÎutTåxt   è  ÎutTåõtÕY   óñòà-³

        ³                   ³ íàâëèâàåò çíà÷åíèÿ äëÿ âûðàâíèâàíèÿ  òåêñ-³

        ³                   ³ òà.                                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetTextStyle     ³ Çàäàåò  òåêóùèé òåêñòîâûé øðèôò, åãî òèï è³

        ³                   ³ êîýôôèöèåíò ðàçìåðà ñèìâîëà.              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetUserCharSize  ³ Ïîçâîëÿåò âàì äëÿ  âåêòîðíûõ  øðèôòîâ  èç-³

        ³                   ³ ìåíèòü âûñîòó è øèðèíó ñèìâîëà.           ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetViewPort      ³ Äëÿ  ãðàôè÷åñêîãî   âûâîäà   óñòàíàâëèâàåò³

        ³                   ³ òåêóùóþ îáëàñòü âûâîäà èëè îêíî.          ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetVisualPage    ³ Çàäàåò  âèçóàëüíûé íîìåð ãðàôè÷åñêîé ñòðà-³

        ³                   ³ íèöû.                                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  SetWriteMode     ³ Óñòàíàâëèâàåò  ðåæèì âûâîäà íà ýêðàí  (êî-³

        ³                   ³ ïèðîâàíèå èëè ñ ïîìîùüþ îïåðàöèè XOR)  äëÿ³

        ³                   ³ ëèíèé, âû÷åð÷èâàåìûõ ïðîöåäóðàìè DrawPoly,³

        ³                   ³ Line, LineRel, LineTo, Rectangle.         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  TåõtÍåight       ³ Âîçâðàùàåò  âûñîòó  ñòðàíèö  â   ýëåìåíòàõ³

        ³                   ³ èçîáðàæåíèÿ.                              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  TåõtWidth        ³ Âîçâðàùàåò  øèðèíó   ñòðîêè  â   ýëåìåíòàõ³

        ³                   ³ èçîáðàæåíèÿ.                              ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Ïîäðîáíîå îïèñàíèå êàæäîé ïðîöåäóðû è ôóíêöèè äàíî â Ãëàâå 1

        ("Ñïðàâî÷íèê ïî áèáëèîòåêå") "Ñïðàâî÷íîãî ðóêîâîäñòâà ïðîãðàììèñ-

        òà".

Êîíñòàíòû, òèïû è ïåðåìåííûå ìîäóëÿ Graph

             Â ìîäóëå Graph èìååòñÿ ìíîãî ïîëåçíûõ îïèñàíèé òèïîâ è êîíñ-

        òàíò, íà êîòîðîå âû ìîæåòå ññûëàòüñÿ.

Êîíñòàíòû

             Êîíñòàíòû ìîäóëÿ Graph ìîæíî ñãðóïïèðîâàòü ïî èõ íàçíà÷åíèþ.

        Ïîäðîáíîå îïèñàíèå êàæäîé êîíñòàíòû äàíî â Ãëàâå  1  ("Ñïðàâî÷íèê

        ïî áèáëèîòåêå") "Ñïðàâî÷íîãî ðóêîâîäñòâà ïðîãðàììèñòà".

 

                           Ãðóïïû êîíñòàíò ìîäóëÿ Graph      Òàáëèöà 19.4

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿

        ³    Ãðóïïà êîíñòàíò      ³           Îïèñàíèå                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû äðàéâåðîâ   ³ Êîíñòàíòû, îïðåäåëÿþùèå âèäåîäðàéâå-³

        ³   è ðåæèìîâ             ³ ðû è ðåæèìû; èñïîëüçóþòñÿ â ïîäïðîã-³

        ³                         ³ ðàììàõ   InitGraph,   DetectGraph  è³

        ³                         ³ GetModeRange.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   grXXXX                ³ Êîíñòàíòû,   èäåíòèôèöèðóþùèå    òèï³

        ³                         ³ îøèáêè, âîçâðàùàåìîé GraphResult.   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû öâåòîâ      ³ Êîíñòàíòû,  îïðåäåëÿþùèå  öâåòà. Èñ-³

        ³                         ³ ïîëüçóþòñÿ â           ïîäïðîãðàììàõ³

        ³                         ³ SetPalette è SetAllPalette.         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû öâåòîâ      ³ Êîíñòàíòû, èñïîëüçóåìûå  â  ïîäïðîã-³

        ³   äëÿ SetRGBPalette     ³ ðàììå SetGRBPalette  äëÿ  âûáîðà  íà³

        ³                         ³ IBM 8514 ñòàíäàðòíûõ öâåòîâ EGA.    ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû ñòèëÿ       ³ Êîíñòàíòû, èñïîëüçóåìûå äëÿ  îïðåäå-³

        ³   ëèíèè                 ³ ëåíèÿ ñòèëÿ è òîëùèíû ëèíèè; èñïîëü-³

        ³                         ³ çóþòñÿ ñ      GetLineSettings      è³

        ³                         ³ SetLineStyle.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû øðèôòà      ³ Èñïîëüçóþòñÿ äëÿ èäåíòèôèêàöèè øðèô-³

        ³                         ³ òîâ â  ïîäïðîãðàììàõ GetTextSettings³

        ³                         ³ è SetTextSetting.                   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû âûðàâíèâàíèÿ³ Êîíñòàíòû, óïðàâëÿþùèå  ãîðèçîíòàëü-³

        ³                         ³ íûì è   âåðòèêàëüíûì  âûðàâíèâàíèåì.³

        ³                         ³ Èñïîëüçóþòñÿ â SetTextJustify.      ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû îòñå÷åíèé   ³ Êîíñòàíòû,  óïðàâëÿþùèå  îòñå÷åíèåì.³

        ³                         ³ Èñïîëüçóþòñÿ â SetViewPort.         ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Êîíñòàíòû ñòîëáöîâ    ³ Óïðàâëÿþò   èçîáðàæåíèåì   "âåðøèíû"³

        ³                         ³ òðåõìåðíîãî ñòîëáöà;  èñïîëüçóþòñÿ â³

        ³                         ³ Bar3D.                              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Îáðàçöû çàêðàñêè      ³ Îïðåäåëÿþò îáðàçåö çàêðàñêè îáëàñòè.³

        ³                         ³ Èñïîëüçóþòñÿ â   GetFillSettings   è³

        ³                         ³ SetFillStyle.                       ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   Îïåðàöèè BitBlt       ³ Îïåðàöèè (êîïèðîâàíèå, xor, or, and,³

        ³                         ³ not), êîòîðûå     èñïîëüçóþòñÿ     â³

        ³                         ³ PutImage è SetWriteMode.            ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´

        ³   MaxColors             ³ Êîíñòàíòû, îïðåäåëÿþùèå ìàêñèìàëüíîå³

        ³                         ³ ÷èñëî öâåòîâ      â      GetPalette,³

        ³                         ³ GetDefaultPalette è SetAllPalette.  ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ

Òèïû

             Â ìîäóëå Graph îïðåäåëåíû ñëåäóþùèå òèïû:

 

                                Òèïû ìîäóëÿ Graph            Òàáëèöà 19.5

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿

        ³         Òèï            ³               Îïèñàíèå               ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   PaletteType          ³ Çàïèñü, îïðåäåëÿþùàÿ  ðàçìåð è  öâåòà³

        ³                        ³ ïàëèòðû; èñïîëüçóåòñÿ  â  GetPalette,³

        ³                        ³ GetDefaultPalette è SetAllPalette.   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   LineSettingsType     ³ Çàïèñü, îïðåäåëÿþùàÿ ñòèëü, îáðàçåö è³

        ³                        ³ òîëùèíó ëèíèè; èñïîëüçóåòcÿ          ³

        ³                        ³ GetLineSettings.                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   FillSettingsType     ³ Çàïèñü, îïðåäåëÿþùàÿ òåêñò. Èñïîëüçó-³

        ³                        ³ åòñÿ â GetTextSettings.              ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   FillPatternType      ³ Çàïèñü, îïðåäåëÿþùàÿ  çàäàííûé  ïîëü-³

        ³                        ³ çîâàòåëåì îáðàçåö   çàêðàñêè.  Äàííàÿ³

        ³                        ³ çàïèñü    èñïîëüçóåòñÿ    ïðîöåäóðàìè³

        ³                        ³ GetFillPattern è SetFillPattern.     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   PointType            ³ Òèï,  îïðåäåëåííûé äëÿ âàøåãî óäîáñò-³

        ³                        ³ âà.                                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   ViewPortType         ³ Çàïèñü, ñîîáùàþùàÿ î ñîñòîÿíèè  òåêó-³

        ³                        ³ ùåé îáëàñòè  ïðîñìîòðà;  èñïîëüçóåòñÿ³

        ³                        ³ GetViewSettings.                     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ´

        ³   ArcCoordsType        ³ Çàïèñü  äëÿ  ïîëó÷åíèÿ  èíôîðìàöèè  î³

        ³                        ³ ïîñëåäíåì âûçîâå Arc èëè Ellipse; èñ-³

        ³                        ³ ïîëüçóåòñÿ GetArcCoords.             ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ

Ïåðåìåííûå

             Ìîäóëü Graph ñîäåðæèò äâå ïåðåìåííûå,  êîòîðûå âû ìîæåòå èñ-

        ïîëüçîâàòü: GraphGetMemPtr è GraphFreeMemPtr.  Îíè ïðèìåíÿþòñÿ  â

        ïîäïðîãðàììàõ óïðàâëåíèÿ  äèíàìè÷åñêè ðàñïðåäåëÿåìîé îáëàñòüþ ïà-

        ìÿòè. Ïðî÷èòàòü î íèõ ìîæíî â Ãëàâå 1 ("Ñïðàâî÷íèê  ïî  áèáëèîòå-

        êå") "Ñïðàâî÷íîãî ðóêîâîäñòâà ïðîãðàììèñòà".