home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / turbo5 / graph.doc < prev    next >
Text File  |  1988-10-09  |  13KB  |  354 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Turbo Pascal Version 5.0                        }
  5. {       Iterface-Dokumentation zu GRAPH                 }
  6. {                                                       }
  7. {       Copyright (C) 1987,88 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit Graph;
  12.  
  13. interface
  14.  
  15. const
  16.   { Mögliche Ergebnisse von GraphResult: }
  17.   grOk               =   0;      { fehlerfreie Ausführung }
  18.   grNoInitGraph      =  -1;      { Grafikpaket nicht initialisiert }
  19.   grNotDetected      =  -2;      { kein grafikfähiger Adapter vorhanden
  20.                                    bzw. gewünschter Modus nicht setzbar }
  21.   grFileNotFound     =  -3;      { Grafik-Treiber (*.BGI) nicht gefunden }
  22.   grInvalidDriver    =  -4;      { Grafik-Treiberdatei defekt/ungültig }
  23.   grNoLoadMem        =  -5;      { nicht genug Platz im Speicher für Treiber }
  24.   grNoScanMem        =  -6;      { nicht genug Speicherplatz für FillPoly }
  25.   grNoFloodMem       =  -7;      { nicht genug Speicherplatz für FloodFill }
  26.   grFontNotFound     =  -8;      { Zeichensatz-Datei (*.CHR) nicht gefunden }
  27.   grNoFontMem        =  -9;      { nicht genug Speicherplatz für Zeichensatz }
  28.   grInvalidMode      = -10;      { Grafikmodus vom Treiber nicht unterstützt }
  29.                            
  30.   grError            = -11;      { *** ungültiger Parameter beim   *** }
  31.                                  { *** Aufruf einer Grafik-Routine *** }
  32.   grIOerror          = -12;      { I/O-Fehler beim Laden einer .BGI- oder
  33.                                    .CHR-Datei }
  34.   grInvalidFont      = -13;      { Zeichensatz-Datei ungültig/zerstört }
  35.   grInvalidFontNum   = -14;      { ungültige Kennziffer für Zeichensatz }
  36.  
  37.   { Kennziffern der Grafiktreiber }
  38.   CurrentDriver = -128; { momentaner Treiber - Parameter für GetModeRange }
  39.   Detect        = 0;    { automatische Erkennung }
  40.   CGA           = 1;
  41.   MCGA          = 2;    { PS/2, Modell 30 }
  42.   EGA           = 3;
  43.   EGA64         = 4;
  44.   EGAMono       = 5;
  45.   IBM8514       = 6;
  46.   HercMono      = 7;
  47.   ATT400        = 8;
  48.   VGA           = 9;
  49.   PC3270        = 10;
  50.  
  51.   { Mögliche Grafikmodi der einzelnen Treiber }
  52.   CGAC0      = 0;  { 320x200 Palette 0: Hellgrün, Hellrot, Gelb; 1 Seite }
  53.   CGAC1      = 1;  { 320x200 Palette 1: Helltürkis, Hell-Magenta, Weiß }
  54.   CGAC2      = 2;  { 320x200 Palette 2: Grün, Rot, Braun }
  55.   CGAC3      = 3;  { 320x200 Palette 3: Türkis, Magenta, Hellgrau }
  56.   CGAHi      = 4;  { 640x200 S/W; 1 Seite }
  57.  
  58.   MCGAC0     = 0;  { 320x200 Palette 0: Hellgrün, Hellrot, Gelb; 1 Seite }
  59.   MCGAC1     = 1;  { 320x200 Palette 1: Helltürkis, Hell-Magenta, Weiß }
  60.   MCGAC2     = 2;  { 320x200 Palette 2: Grün, Rot, Braun }
  61.   MCGAC3     = 3;  { 320x200 Palette 3: Türkis, Magenta, Hellgrau }
  62.   MCGAMed    = 4;  { 640x200 S/W; 1 Seite }
  63.   MCGAHi     = 5;  { 640x480 S/W; 1 Seite }
  64.  
  65.   EGALo      = 0;  { 640x200 16 Farben, 4 Seiten }
  66.   EGAHi      = 1;  { 640x350 16 Farben, 2 Seiten }
  67.   EGA64Lo    = 0;  { 640x200 16 Farben, 1 Seite }
  68.   EGA64Hi    = 1;  { 640x350 4 Farben, 1 Seite }
  69.   EGAMonoHi  = 3;  { 640x350 S/W; 1 Seite mit 64K, 4 Seiten mit 256 K }
  70.   HercMonoHi = 0;  { 720x348 S/W, 2 Seiten }
  71.  
  72.   ATT400C0   = 0;  { 320x200 Palette 0: Hellgrün, Hellrot, Gelb; 1 Seite }
  73.   ATT400C1   = 1;  { 320x200 Palette 1: Helltürkis, Hell-Magenta, Weiß }
  74.   ATT400C2   = 2;  { 320x200 Palette 2: Grün, Rot, Braun }
  75.   ATT400C3   = 3;  { 320x200 Palette 3: Türkis, Magenta, Hellgrau }
  76.   ATT400Med  = 4;  { 640x200 S/W; 1 Seite }
  77.   ATT400Hi   = 5;  { 640x480 S/W; 1 Seite }
  78.  
  79.   VGALo      = 0;  { 640x200 16 Farben, 4 Seiten }
  80.   VGAMed     = 1;  { 640x350 16 Farben, 2 Seiten }
  81.   VGAHi      = 2;  { 640x480 16 Farben, 1 Seite }
  82.  
  83.   PC3270Hi   = 0;  { 720x350 1 Seite }
  84.  
  85.   IBM8514LO  = 0;  { 640x480 mit 256 Farben, 1 Seite }
  86.   IBM8514HI  = 1;  { 1024x768 mit 256 Farben, 1 Seite }
  87.  
  88.   { Zeichenfarben }
  89.   Black        = 0;   { Schwarz }
  90.   Blue         = 1;   { Blau }
  91.   Green        = 2;   { Grün }
  92.   Cyan         = 3;   { Türkis }
  93.   Red          = 4;   { Rot }
  94.   Magenta      = 5;   { Magentarot }
  95.   Brown        = 6;   { Braun }
  96.   LightGray    = 7;   { Hellgrau }
  97.   DarkGray     = 8;   { Dunkelgrau }
  98.   LightBlue    = 9;   { Hellblau }
  99.   LightGreen   = 10;  { Hellgrün }
  100.   LightCyan    = 11;  { helles Türkis }
  101.   LightRed     = 12;  { Hellrot }
  102.   LightMagenta = 13;  { helles Magentarot }
  103.   Yellow       = 14;  { Gelb }
  104.   White        = 15;  { Weiß }
  105.  
  106.   { Farben für den IBM 8514 zur Simulation der EGA-Palette }
  107.   EGABlack             = 0;       { Normalfarben }
  108.   EGABlue              = 1;
  109.   EGAGreen             = 2;
  110.   EGACyan              = 3;
  111.   EGARed               = 4;
  112.   EGAMagenta           = 5;
  113.   EGABrown             = 20;
  114.   EGALightgray         = 7;
  115.   EGADarkgray          = 56;      { helle Farben }
  116.   EGALightblue         = 57;
  117.   EGALightgreen        = 58;
  118.   EGALightcyan         = 59;
  119.   EGALightred          = 60;
  120.   EGALightmagenta      = 61;
  121.   EGAYellow            = 62;
  122.   EGAWhite             = 63;
  123.  
  124.   { Linienarten -und breiten für Get/SetLineStyle }
  125.   SolidLn    = 0;   { durchgezogen }
  126.   DottedLn   = 1;   { gepunktet }
  127.   CenterLn   = 2;   { Strich Punkt Strich }
  128.   DashedLn   = 3;   { gestrichelt }
  129.   UserBitLn  = 4;   { benutzerdefiniert (mit "Pattern" bei SetLineStyle) }
  130.  
  131.  
  132.   NormWidth  = 1;   { normale Breite (1 Pixel) }
  133.   ThickWidth = 3;   { drei Pixel }
  134.  
  135.   { Set/GetTextStyle }
  136.   DefaultFont   = 0;    { 8x8 Bit pixelweise definiert }
  137.  
  138.   TriplexFont   = 1;    { Vektor-Zeichensätze }
  139.   SmallFont     = 2;
  140.   SansSerifFont = 3;
  141.   GothicFont    = 4;
  142.  
  143.   HorizDir   = 0;       { von links nach rechts }
  144.   VertDir    = 1;       { von unten nach oben }
  145.  
  146.   UserCharSize = 0;     { benutzerdefinierte Zeichengröße }
  147.  
  148.   { Für das Abschneiden von Linien ("clipping") }
  149.   ClipOn  = True;
  150.   ClipOff = False;
  151.  
  152.   { Für Bar3D }
  153.   TopOn  = True;        { "Deckel" wird gezeichnet }
  154.   TopOff = False;       { wird nicht gezeichnet }
  155.  
  156.  
  157.   { Füll-Muster für Get/SetFillStyle: }
  158.   EmptyFill       = 0;  { Füllen mit der Hintergrundfarbe }
  159.   SolidFill       = 1;  { Füllen mit der Zeichenfarbe }
  160.   LineFill        = 2;  { --- }
  161.   LtSlashFill     = 3;  { /// }
  162.   SlashFill       = 4;  { /// mit dicken Linien }
  163.   BkSlashFill     = 5;  { \\\ mit dicken Linien }
  164.   LtBkSlashFill   = 6;  { \\\ }
  165.   HatchFill       = 7;  { leicht schraffiert }
  166.   XHatchFill      = 8;  { stark schraffiert, überkreuzend }
  167.   InterleaveFill  = 9;  { abwechselnde Linien }
  168.   WideDotFill     = 10; { weit auseinanderstehende Punkte }
  169.   CloseDotFill    = 11; { dicht beieinanderstehende Punkte }
  170.   UserFill        = 12; { benutzerdefiniert }
  171.  
  172.   { BitBlt ("Bit Block Transfer") - Möglichkeiten für PutImage }
  173.   NormalPut     = 0;    { MOV }       { wg. Kompatibilität zur 4.0  }
  174.   CopyPut       = 0;    { MOV }
  175.   XORPut        = 1;    { XOR }
  176.   OrPut         = 2;    { OR  }
  177.   AndPut        = 3;    { AND }
  178.   NotPut        = 4;    { NOT }
  179.  
  180.   { Horizontale / vertikale Justierung mit SetTextJustify }
  181.   LeftText   = 0;   { linksbündig }
  182.   CenterText = 1;   { zentriert }
  183.   RightText  = 2;   { rechtsbündig }
  184.  
  185.   BottomText = 0;   { unten abschließend }
  186. { CenterText = 1;  bereits definiert }
  187.   TopText    = 2;   { oben abschließend }
  188.  
  189.  
  190. const
  191.   MaxColors = 15;
  192. type
  193.   PaletteType = record
  194.       Size   : Byte;
  195.       Colors : array[0..MaxColors] of ShortInt;
  196.     end;
  197.  
  198.   LineSettingsType = record
  199.       LineStyle : Word;
  200.       Pattern   : Word;
  201.       Thickness : Word;
  202.     end;
  203.  
  204.   TextSettingsType = record
  205.       Font      : Word;
  206.       Direction : Word;
  207.       CharSize  : Word;
  208.       Horiz     : Word;
  209.       Vert      : Word;
  210.     end;
  211.  
  212.   FillSettingsType = record               { vordefiniertes Füll-Muster }
  213.       Pattern : Word;
  214.       Color   : Word;
  215.     end;
  216.  
  217.   FillPatternType = array[1..8] of Byte;  { benutzerdefinertes Füll-Muster }
  218.  
  219.   PointType = record
  220.       X, Y : Integer;
  221.     end;
  222.  
  223.   ViewPortType = record
  224.       x1, y1, x2, y2 : Integer;
  225.       Clip           : Boolean;
  226.     end;
  227.  
  228.   ArcCoordsType = record
  229.       X, Y           : Integer;
  230.       Xstart, Ystart : Integer;
  231.       Xend, Yend     : Integer;
  232.     end;
  233.  
  234.  
  235. var
  236.   GraphGetMemPtr  : Pointer;   { zeigt auf GraphGetMem und kann auf eine
  237.                                  eigene Routine gesetzt werden }
  238.   GraphFreeMemPtr : Pointer;   { zeigt auf GraphFreeMem }
  239.  
  240. { ------------------- Routinen ---------------------- }
  241.  
  242. { *** Fehlerbehandlung *** }
  243. function GraphErrorMsg(ErrorCode : Integer) : String;
  244. function GraphResult : Integer;
  245.  
  246. { *** Prüfung der Hardware, Initialisierung und Setzen der Grafikmodi *** }
  247. procedure DetectGraph(var GraphDriver, GraphMode : Integer);
  248. function GetDriverName : string;
  249.  
  250. procedure InitGraph(var GraphDriver : Integer;
  251.                     var GraphMode   : Integer;
  252.                         PathToDriver : String);
  253.  
  254. function RegisterBGIfont(Font : pointer) : Integer;
  255. function RegisterBGIdriver(Driver : pointer) : Integer;
  256. function InstallUserDriver(DriverFileName : string;
  257.                             AutoDetectPtr : pointer) : Integer;
  258. function InstallUserFont(FontFileName : string) : Integer;
  259. procedure SetGraphBufSize(BufSize : Word);
  260. function GetMaxMode : Integer;
  261. procedure GetModeRange(GraphDriver : Integer; var LoMode, HiMode : Integer);
  262. function GetModeName(GraphMode : Integer) : string;
  263. procedure SetGraphMode(Mode : Integer);
  264. function GetGraphMode : Integer;
  265. procedure GraphDefaults;
  266. procedure RestoreCrtMode;
  267. procedure CloseGraph;
  268.  
  269. function  GetX : Integer;
  270. function  GetY : Integer;
  271. function  GetMaxX : Integer;
  272. function  GetMaxY : Integer;
  273.  
  274. { *** Bildschirm, Zeichenfenster und Speicherseiten *** }
  275. procedure ClearDevice;
  276. procedure SetViewPort(x1, y1, x2, y2 : Integer; Clip : Boolean);
  277. procedure GetViewSettings(var ViewPort : ViewPortType);
  278. procedure ClearViewPort;
  279. procedure SetVisualPage(Page : Word);
  280. procedure SetActivePage(Page : Word);
  281.  
  282. { *** Einzelne Pixel und pixelweise definierte Bildausschnitte *** }
  283. procedure PutPixel(X, Y : Integer; Pixel : Word);
  284. function  GetPixel(X, Y : Integer) : Word;
  285. function  ImageSize(x1, y1, x2, y2 : Integer) : Word;
  286. procedure GetImage(x1, y1, x2, y2 : Integer; var BitMap);
  287. procedure PutImage(X, Y : Integer; var BitMap; BitBlt : Word);
  288.  
  289. { *** Linien *** }
  290. procedure SetWriteMode(WriteMode : Integer);
  291. procedure LineTo(X, Y : Integer);
  292. procedure LineRel(Dx, Dy : Integer);
  293. procedure MoveTo(X, Y : Integer);
  294. procedure MoveRel(Dx, Dy : Integer);
  295. procedure Line(x1, y1, x2, y2 : Integer);
  296. procedure GetLineSettings(var LineInfo : LineSettingsType);
  297. procedure SetLineStyle(LineStyle : Word;
  298.                        Pattern   : Word;
  299.                        Thickness : Word);
  300.  
  301. { *** Polygone, Flächenfüllung und grafische Objekte *** }
  302. procedure Rectangle(x1, y1, x2, y2 : Integer);
  303. procedure Bar(x1, y1, x2, y2 : Integer);
  304. procedure Bar3D(x1, y1, x2, y2 : Integer; Depth : Word; Top : Boolean);
  305. procedure DrawPoly(NumPoints : Word; var PolyPoints);
  306. procedure FillPoly(NumPoints : Word; var PolyPoints);
  307. procedure GetFillSettings(var FillInfo : FillSettingsType);
  308. procedure GetFillPattern(var FillPattern : FillPatternType);
  309. procedure SetFillStyle(Pattern : Word; Color : Word);
  310. procedure SetFillPattern(Pattern : FillPatternType; Color : Word);
  311. procedure FloodFill(X, Y : Integer; Border : Word);
  312.  
  313. { *** Kreise, Kreisauschnitte und andere Kurven *** }
  314. procedure Arc(X, Y : Integer; StAngle, EndAngle, Radius : Word);
  315. procedure GetArcCoords(var ArcCoords : ArcCoordsType);
  316. procedure Circle(X, Y : Integer; Radius : Word);
  317. procedure Ellipse(X, Y : Integer;
  318.                   StAngle, EndAngle : Word;
  319.                   XRadius, YRadius  : Word);
  320. procedure FillEllipse(X, Y : Integer;
  321.                       XRadius, YRadius  : Word);
  322. procedure GetAspectRatio(var Xasp, Yasp : Word);
  323. procedure SetAspectRatio(Xasp, Yasp : Word);
  324. procedure PieSlice(X, Y : Integer; StAngle, EndAngle, Radius : Word);
  325. procedure Sector(X, Y : Integer;
  326.                  StAngle, EndAngle,
  327.                  XRadius, YRadius : Word);
  328.  
  329.  
  330. { *** Farben und Farb-Paletten *** }
  331. procedure SetBkColor(ColorNum : Word);
  332. procedure SetColor(Color : Word);
  333. function GetBkColor : Word;
  334. function GetColor : Word;
  335. procedure SetAllPalette(var Palette);
  336. procedure SetPalette(ColorNum : Word; Color : shortint);
  337. procedure GetPalette(var Palette : PaletteType);
  338. function GetPaletteSize : Integer;
  339. procedure GetDefaultPalette(var Palette : PaletteType);
  340. function GetMaxColor : Word;
  341. procedure SetRGBPalette(ColorNum, RedValue, GreenValue, BlueValue : Integer);
  342.  
  343. { *** Textausgabe *** }
  344. procedure GetTextSettings(var TextInfo : TextSettingsType);
  345. procedure OutText(TextString : string);
  346. procedure OutTextXY(X, Y : Integer; TextString : string);
  347. procedure SetTextJustify(Horiz, Vert : Word);
  348. procedure SetTextStyle(Font, Direction : Word; CharSize : Word);
  349. procedure SetUserCharSize(MultX, DivX, MultY, DivY : Word);
  350. function  TextHeight(TextString : string) : Word;
  351. function  TextWidth(TextString : string) : Word;
  352.  
  353.  
  354.