home *** CD-ROM | disk | FTP | other *** search
- {-----------------------------------------------------------------------------}
- { TEGL Windows ToolKit II }
- { Copyright (C) 1990, TEGL Systems Corporation }
- { All Rights Reserved. }
- {-----------------------------------------------------------------------------}
- {$I Switches.inc}
-
- UNIT TGraph;
-
- INTERFACE
-
- USES Dos,
- teglfont,
- {$IFDEF TEGLDEMO}
- errorlog,
- {$ENDIF}
- videochk;
-
- const
- { GraphResult error return codes: }
- grOk = 0;
- grNoInitGraph = -1;
- grNotDetected = -2;
- grFileNotFound = -3;
- grInvalidDriver = -4;
- grNoLoadMem = -5;
- grNoScanMem = -6;
- grNoFloodMem = -7;
- grFontNotFound = -8;
- grNoFontMem = -9;
- grInvalidMode = -10;
- grError = -11; { generic error }
- grIOerror = -12;
- grInvalidFont = -13;
- grInvalidFontNum = -14;
-
- { define graphics drivers }
- CurrentDriver = -128; { passed to GetModeRange }
- Detect = 0; { requests autodetection }
- CGA = 1;
- MCGA = 2;
- EGA = 3;
- EGA64 = 4;
- EGAMono = 5;
- IBM8514 = 6;
- HercMono = 7;
- ATT400 = 8;
- VGA = 9;
- PC3270 = 10;
-
- { graphics modes for each driver }
- CGAC0 = 0; { 320x200 palette 0: LightGreen, LightRed, Yellow; 1 page }
- CGAC1 = 1; { 320x200 palette 1: LightCyan, LightMagenta, White; 1 page }
- CGAC2 = 2; { 320x200 palette 2: Green, Red, Brown; 1 page }
- CGAC3 = 3; { 320x200 palette 3: Cyan, Magenta, LightGray; 1 page }
- CGAHi = 4; { 640x200 1 page }
- MCGAC0 = 0; { 320x200 palette 0: LightGreen, LightRed, Yellow; 1 page }
- MCGAC1 = 1; { 320x200 palette 1: LightCyan, LightMagenta, White; 1 page }
- MCGAC2 = 2; { 320x200 palette 2: Green, Red, Brown; 1 page }
- MCGAC3 = 3; { 320x200 palette 3: Cyan, Magenta, LightGray; 1 page }
- MCGAMed = 4; { 640x200 1 page }
- MCGAHi = 5; { 640x480 1 page }
- EGALo = 0; { 640x200 16 color 4 page }
- EGAHi = 1; { 640x350 16 color 2 page }
- EGA64Lo = 0; { 640x200 16 color 1 page }
- EGA64Hi = 1; { 640x350 4 color 1 page }
- EGAMonoHi = 3; { 640x350 64K on card, 1 page; 256K on card, 2 page }
- HercMonoHi = 0; { 720x348 2 page }
- ATT400C0 = 0; { 320x200 palette 0: LightGreen, LightRed, Yellow; 1 page }
- ATT400C1 = 1; { 320x200 palette 1: LightCyan, LightMagenta, White; 1 page }
- ATT400C2 = 2; { 320x200 palette 2: Green, Red, Brown; 1 page }
- ATT400C3 = 3; { 320x200 palette 3: Cyan, Magenta, LightGray; 1 page }
- ATT400Med = 4; { 640x200 1 page }
- ATT400Hi = 5; { 640x400 1 page }
- VGALo = 0; { 640x200 16 color 4 page }
- VGAMed = 1; { 640x350 16 color 2 page }
- VGAHi = 2; { 640x480 16 color 1 page }
- PC3270Hi = 0; { 720x350 1 page }
- IBM8514LO = 0; { 640x480 256 colors }
- IBM8514HI = 1; { 1024x768 256 colors }
-
- { Colors for SetPalette and SetAllPalette: }
- Black = 0;
- Blue = 1;
- Green = 2;
- Cyan = 3;
- Red = 4;
- Magenta = 5;
- Brown = 6;
- LightGray = 7;
- DarkGray = 8;
- LightBlue = 9;
- LightGreen = 10;
- LightCyan = 11;
- LightRed = 12;
- LightMagenta = 13;
- Yellow = 14;
- White = 15;
-
- { colors for 8514 to set standard EGA colors w/o knowing their values }
- EGABlack = 0; { dark colors }
- EGABlue = 1;
- EGAGreen = 2;
- EGACyan = 3;
- EGARed = 4;
- EGAMagenta = 5;
- EGABrown = 20;
- EGALightgray = 7;
- EGADarkgray = 56; { light colors }
- EGALightblue = 57;
- EGALightgreen = 58;
- EGALightcyan = 59;
- EGALightred = 60;
- EGALightmagenta = 61;
- EGAYellow = 62;
- EGAWhite = 63;
-
- { Line styles and widths for Get/SetLineStyle: }
- SolidLn = 0;
- DottedLn = 1;
- CenterLn = 2;
- DashedLn = 3;
- UserBitLn = 4; { User-defined line style }
-
- NormWidth = 1;
- ThickWidth = 3;
-
- { Set/GetTextStyle constants: }
- DefaultFont = 0; { 8x8 bit mapped font }
- TriplexFont = 1; { "Stroked" fonts }
- SmallFont = 2;
- SansSerifFont = 3;
- GothicFont = 4;
-
- HorizDir = 0; { left to right }
- VertDir = 1; { bottom to top }
-
- UserCharSize = 0; { user-defined char size }
-
- { Clipping constants: }
- ClipOn = true;
- ClipOff = false;
-
- { Bar3D constants: }
- TopOn = true;
- TopOff = false;
-
- { Fill patterns for Get/SetFillStyle: }
- EmptyFill = 0; { fills area in background color }
- SolidFill = 1; { fills area in solid fill color }
- LineFill = 2; { --- fill }
- LtSlashFill = 3; { /// fill }
- SlashFill = 4; { /// fill with thick lines }
- BkSlashFill = 5; { \\\ fill with thick lines }
- LtBkSlashFill = 6; { \\\ fill }
- HatchFill = 7; { light hatch fill }
- XHatchFill = 8; { heavy cross hatch fill }
- InterleaveFill = 9; { interleaving line fill }
- WideDotFill = 10; { Widely spaced dot fill }
- CloseDotFill = 11; { Closely spaced dot fill }
- UserFill = 12; { user defined fill }
-
- { BitBlt operators for PutImage: }
- NormalPut = 0; { MOV } { left for 1.0 compatibility }
- CopyPut = 0; { MOV }
- XORPut = 1; { XOR }
- OrPut = 2; { OR }
- AndPut = 3; { AND }
- NotPut = 4; { NOT }
-
- { Horizontal and vertical justification for SetTextJustify: }
- LeftText = 0;
- CenterText = 1;
- RightText = 2;
-
- BottomText = 0;
- { CenterText = 1; already defined above }
- TopText = 2;
-
-
- const
- MaxColors = 15;
- type
- PaletteType = record
- Size : byte;
- Colors : array[0..MaxColors] of shortint;
- end;
-
- LineSettingsType = record
- LineStyle : word;
- Pattern : word;
- Thickness : word;
- end;
-
- TextSettingsType = record
- Font : word;
- Direction : word;
- CharSize : word;
- Horiz : word;
- Vert : word;
- end;
-
- FillSettingsType = record { Pre-defined fill style }
- Pattern : word;
- Color : word;
- end;
-
- FillPatternType = array[1..8] of byte; { User defined fill style }
-
- PointType = record
- X, Y : integer;
- end;
-
- ViewPortType = record
- x1, y1, x2, y2 : integer;
- Clip : boolean;
- end;
-
- ArcCoordsType = record
- X, Y : integer;
- Xstart, Ystart : integer;
- Xend, Yend : integer;
- end;
-
-
- var
- GraphGetMemPtr : Pointer; { allows user to steal heap allocation }
- GraphFreeMemPtr : Pointer; { allows user to steal heap de-allocation }
-
- { *** A matching initgraph w/o videoinit *** }
- procedure InitMatch(var GraphDriver:integer; var GraphMode:integer; PathToDriver:String);
-
- { *** high-level error handling *** }
- function GraphErrorMsg(ErrorCode:integer):String;
- function GraphResult:integer;
-
- { *** detection, initialization and crt mode routines *** }
- procedure DetectGraph(var GraphDriver,GraphMode:integer);
- function GetDriverName:string;
- procedure InitGraph(var GraphDriver:integer;var GraphMode:integer;PathToDriver:String);
- function RegisterBGIfont(Font:pointer):integer;
- function RegisterBGIdriver(Driver:pointer):integer;
- function InstallUserDriver(DriverFileName:string;AutoDetectPtr:pointer):integer;
- function InstallUserFont(FontFileName:string):integer;
- procedure SetGraphBufSize(BufSize:word);
- function GetMaxMode:integer;
- procedure GetModeRange(GraphDriver:integer;var LoMode,HiMode:integer);
- function GetModeName(GraphMode:integer):string;
- procedure SetGraphMode(Mode:integer);
- function GetGraphMode:integer;
- procedure GraphDefaults;
- procedure RestoreCrtMode;
- procedure CloseGraph;
- function GetX:integer;
- function GetY:integer;
- function GetMaxX:integer;
- function GetMaxY:integer;
-
- { *** Screen, viewport, page routines *** }
- procedure ClearDevice;
- procedure SetViewPort(x1,y1,x2,y2:integer;Clip:boolean);
- procedure GetViewSettings(var ViewPort:ViewPortType);
- procedure ClearViewPort;
- procedure SetVisualPage(Page:word);
- procedure SetActivePage(Page:word);
-
- { *** point-oriented routines *** }
- procedure PutPixel(X,Y:integer;Pixel:word);
- function GetPixel(X,Y:integer):word;
-
- { *** line-oriented routines *** }
- procedure SetWriteMode(WriteMode:integer);
- procedure LineTo(X,Y:integer);
- procedure LineRel(Dx,Dy:integer);
- procedure MoveTo(X,Y:integer);
- procedure MoveRel(Dx,Dy:integer);
- procedure Line(x1,y1,x2,y2:integer);
- procedure GetLineSettings(var LineInfo:LineSettingsType);
- procedure SetLineStyle(LineStyle:word;Pattern:word;Thickness:word);
-
- { *** polygon, fills and figures *** }
- procedure Rectangle(x1,y1,x2,y2:integer);
- procedure Bar(x1,y1,x2,y2:integer);
- procedure Bar3D(x1,y1,x2,y2:integer;Depth:word;Top:boolean);
- procedure DrawPoly(NumPoints:word;var PolyPoints);
- procedure FillPoly(NumPoints:word;var PolyPoints);
- procedure GetFillSettings(var FillInfo:FillSettingsType);
- procedure GetFillPattern(var FillPattern:FillPatternType);
- procedure SetFillStyle(Pattern:word;Color:word);
- procedure SetFillPattern(Pattern:FillPatternType;Color:word);
- procedure FloodFill(X,Y:integer;Border:word);
-
- { *** arc, circle, and other curves *** }
- procedure Arc(X,Y:integer;StAngle,EndAngle,Radius:word);
- procedure GetArcCoords(var ArcCoords:ArcCoordsType);
- procedure Circle(X,Y:integer;Radius:word);
- procedure Ellipse(X,Y:integer;StAngle,EndAngle:word;XRadius,YRadius:word);
- procedure FillEllipse(X,Y:integer;XRadius,YRadius:word);
- procedure GetAspectRatio(var Xasp,Yasp:word);
- procedure SetAspectRatio(Xasp,Yasp:word);
- procedure PieSlice(X,Y:integer;StAngle,EndAngle,Radius:word);
- procedure Sector(x,y:Integer;StAngle,EndAngle,XRadius,YRadius:word);
-
- { *** color and palette routines *** }
- procedure SetBkColor(ColorNum:word);
- procedure SetColor(Color:word);
- function GetBkColor:word;
- function GetColor:word;
- procedure SetAllPalette(var Palette);
- procedure SetPalette(ColorNum:word;Color:shortint);
- procedure GetPalette(var Palette:PaletteType);
- function GetPaletteSize:integer;
- procedure GetDefaultPalette(var Palette:PaletteType);
- function GetMaxColor:word;
- procedure SetRGBPalette(ColorNum,RedValue,GreenValue,BlueValue:integer);
-
- { *** bit-image routines *** }
- function ImageSize(x1,y1,x2,y2:integer):word;
- procedure GetImage(x1,y1,x2,y2:integer;var BitMap);
- procedure PutImage(X,Y:integer;var BitMap;BitBlt:word);
-
- { *** text routines *** }
- procedure GetTextSettings(var TextInfo:TextSettingsType);
- procedure OutText(TextString:string);
- procedure OutTextXY(X,Y:integer;TextString:string);
- procedure SetTextJustify(Horiz,Vert:word);
- procedure SetTextStyle(Font,Direction:word;CharSize:word);
- procedure SetUserCharSize(MultX,DivX,MultY,DivY:word);
- function TextHeight(TextString:string):word;
- function TextWidth(TextString:string):word;
-
- IMPLEMENTATION
-