home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- program GrLink;
- { This program demonstrates how to link graphics driver and font files
- into an EXE file. BGI graphic's drivers and fonts are kept in
- separate disk files so they may be dynamically loaded at runtime.
- However, sometimes it is preferable to place all auxiliary files
- directly into an .EXE. This program, along with its make file
- (GRLINK.MAK) and two units (DRIVERS.PAS and FONTS.PAS) links all
- the drivers and fonts directly into GRLINK.EXE.
-
- Have these 3 programs in the current drive or directory, or
- have them available via a path (both are on Disk II):
-
- MAKE.EXE - Make utility that will build GRLINK.EXE
- BINOBJ.EXE - utility program to convert any file into an .OBJ file
-
- Place in the current drive or directory the following files (all
- are on Disk III):
-
- GRLINK.PAS - this sample program
- DRIVERS.PAS - Pascal unit that will link in all BGI drivers
- FONTS.PAS - Pascal unit that will link in all BGI fonts
- *.CHR - BGI font files
- *.BGI - BGI driver files
- GRLINK.MAK - "make" file that builds DRIVERS.TPU, FONT.TPU, and
- finally GRLINK.EXE
-
- DIRECTIONS:
- 1. Run MAKE on the GRLINK.MAK file by typing the following command
- at a DOS prompt:
-
- make -fgrlink.mak
-
- Using BINOBJ.EXE, this will first build .OBJ files out of the driver
- files (*.BGI) and then call Turbo Pascal to compile DRIVERS.PAS.
- Next, the font files (*.CHR) will be converted to .OBJs and
- FONTS.PAS will be compiled. Finally, GRLINK.PAS will be compiled
- (it uses DRIVERS.TPU and FONTS.TPU).
-
- 2. Run GRLINK.EXE. It contains all the drivers and all the fonts, so it
- will run on any system with a graphics card supported by the Graph
- unit (CGA, EGA, EGA 64 K, EGA monochrome, Hercules monochrome,
- VGA, MCGA, IBM 3270 PC and AT&T 6400).
-
- EXPLANATION
-
- GRLINK.PAS uses DRIVERS.TPU and FONTS.TPU in its uses statement:
-
- uses Drivers, Fonts;
-
- Then, it "registers" the drivers it intends to use (in this case,
- all of them, so it will run on any graphics card). Then it registers
- all of the fonts it will use (again all of them, just for demonstration
- purposes) and finally it does some very modest graphics.
-
- You can easily modify GRLINK.PAS for your own use by commenting out
- the calls to RegisterBGIdriver and RegisterBGIfont for drivers and
- fonts that your program doesn't use.
-
- For a detailed explanation of registering and linking drivers and fonts,
- refer to the RegisterBGIdriver and RegisterBGIfont descriptions in
- GRAPH.DOC (on Disk III).
- }
-
- uses Graph, { library of graphics routines }
- Drivers, { all the BGI drivers }
- Fonts; { all the BGI fonts }
- var
- GraphDriver, GraphMode, Error : integer;
-
- procedure Abort(Msg : string);
- begin
- Writeln(Msg, ': ', GraphErrorMsg(GraphResult));
- Halt(1);
- end;
-
- begin
- { Register all the drivers }
- if RegisterBGIdriver(@CGADriverProc) < 0 then
- Abort('CGA');
- if RegisterBGIdriver(@EGAVGADriverProc) < 0 then
- Abort('EGA/VGA');
- if RegisterBGIdriver(@HercDriverProc) < 0 then
- Abort('Herc');
- if RegisterBGIdriver(@ATTDriverProc) < 0 then
- Abort('AT&T');
- if RegisterBGIdriver(@PC3270DriverProc) < 0 then
- Abort('PC 3270');
-
-
- { Register all the fonts }
- if RegisterBGIfont(@GothicFontProc) < 0 then
- Abort('Gothic');
- if RegisterBGIfont(@SansSerifFontProc) < 0 then
- Abort('SansSerif');
- if RegisterBGIfont(@SmallFontProc) < 0 then
- Abort('Small');
- if RegisterBGIfont(@TriplexFontProc) < 0 then
- Abort('Triplex');
-
- GraphDriver := Detect; { autodetect the hardware }
- InitGraph(GraphDriver, GraphMode, ''); { activate graphics }
- if GraphResult <> grOk then { any errors? }
- begin
- Writeln('Graphics init error: ', GraphErrorMsg(GraphDriver));
- Halt(1);
- end;
-
- MoveTo(5, 5);
- OutText('Drivers and fonts were ');
- MoveTo(5, 20);
- SetTextStyle(GothicFont, HorizDir, 4);
- OutText('Built ');
- SetTextStyle(SmallFont, HorizDir, 4);
- OutText('into ');
- SetTextStyle(TriplexFont, HorizDir, 4);
- OutText('EXE ');
- SetTextStyle(SansSerifFont, HorizDir, 4);
- OutText('file!');
- Rectangle(0, 0, GetX, GetY + TextHeight('file!') + 1);
- Readln;
- CloseGraph;
- end.