Borland Graphics Interface

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Guido Gonzato (talk | contribs) at 09:54, 7 May 2015 (→‎External links). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Borland Graphics Interface
Written inC++
PlatformDOS
Typelibrary or framework

The Borland Graphics Interface, also known as BGI, is a graphics library bundled with several Borland compilers for the DOS operating systems since 1987. BGI was also used to provide graphics for many other Borland products including the Quattro spreadsheet. The library loaded graphic drivers (*.BGI) and vector fonts (*.CHR) from disk in order to provide device independent graphics support. It was possible for the programmer to embed the graphic driver into the executable file by linking the graphic driver as object code with the aid of a utility provided by the compiler (bgiobj.exe). There were graphic drivers for common graphic adapters and printers of that time, such as CGA, EGA and VGA. There also were BGI drivers for some kinds of plotters.

The last Borland's C++ IDE for DOS is Borland C++ 3.1 (1992). The last C++ environment which supports BGI is Borland C++ 5.02 (1997), which works under Windows but can compile DOS programs. BGI was accessible in C/C++ with graphics.lib / graphics.h, and in Pascal with graph module.

BGI is less powerful than modern graphics libraries such as SDL or OpenGL, since it was designed for presentation graphics instead of event-based 3D applications. However, it has been considered simpler to code.[1]

Third-party BGI drivers

Given the popularity of Borland compilers, a few independent software developers produced BGI drivers for non-standard video modes, advanced video cards, plotters, printers, and graphics file output.[2]

In 1994 Jordan Hargraphix Software released SVGA BGI drivers version 5.5 that are compatible with some SVGA hardware like ATI or Cirrus Logic cards and VESA VBE-compatible cards. Also there are tweaked VGA drivers for non-standard graphic modes supported by VGA by writing directly into its registers, protected mode driver versions for Turbo Pascal 7.0 and mouse driver (actually cursor handler for unsupported video modes by standard mouse drivers). These drivers were shareware and buying them let receiving their source code and technical support; now they are no longer supported and come as abandonware. Main bugs are lack of aligning bytes support in VESA TrueColor modes (so TrueColor driver is not suitable for Nvidia graphic cards) and video memory bank switching bug in mouse driver (since real mode addressing space is 1 megabyte, but some video modes require up to 4 megabytes of memory, it is split into 64 kilobyte banks).

Example

The following program, written for Borland Turbo C, initialises the graphics and draws 1000 random lines:

#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

int main (void)
{
  int i, gd, gm;

  gd = DETECT;
  initgraph (&gd, &gm, "");
  setbkcolor (BLACK);
  cleardevice ();
  outtextxy (0, 0, "Drawing 1000 lines...");
  for (i = 0; i < 1000; i++) {
    setcolor (1 + random (15));
    line ( random(getmaxx()), random(getmaxy()),
    random(getmaxx()), random(getmaxy()) );
  }
  getch ();
  closegraph ();
  return 0;
}

See also

References

  1. ^ "Computer Graphics", ISRD Group, 2006. ISBN 0070593760
  2. ^ Freeware BGI drivers, Jordan Hargraphix BGI drivers

External links

  • Winbgim, a port of BGI for Microsoft Windows.
  • The GRX graphics library contains a BGI subsystem, mostly compatible with the original BGI.
  • WinBGI and Xbgi, part of ptoc, are nearly complete implementations of BGI for Microsoft Windows and X11. Also available at Sourceforge.
  • SDL_bgi [1] is a nearly complete port written in SDL2.
  • OpenBGI library another port for Microsoft Windows.
  • libgraph, an implementation of the TurboC graphics API (graphics.h) on GNU/Linux using SDL.