Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a2267902fbd4b071

Jump to content

Borland Graphics Interface

From Wikipedia, the free encyclopedia
Borland Graphics Interface
DeveloperBorland
Written inC++
Operating systemMS-DOS
Typelibrary or framework

Borland Graphics Interface, also known as BGI, is a graphics library that was bundled with several Pascal and C++ compilers for MS-DOS sold by Borland. It first shipped with version 4 of Turbo Pascal in 1987. BGI was also used to provide graphics for many other Borland products including the Quattro Pro spreadsheet. BGI was designed for 2D presentation graphics.

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, VGA, Hercules, AT&T 400, MCGA and 3270 PC. There also were BGI drivers for some kinds of plotters.

The last Borland's C++ IDE for MS-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 via the graph unit.

Third-party BGI drivers

[edit]

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.[1]

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, but on 19 December 2020 Jordan Hargrave kindly released source code under the MIT License on GitHub.[2] Main bugs are lack of aligning bytes support in VESA true-color modes (so the true-color 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).

Legacy

[edit]

A BGI-compatible library, named Graph, is included in the Free Pascal Pascal compiler.[3] Several BGI implementations for present-day operating systems are also available (see External links.)

Example

[edit]

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

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

int main (int argc, char *argv[])
{
  int i, gd = DETECT, gm;
  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

[edit]

References

[edit]
[edit]
  • SDL_bgi is a multiplatform port written in SDL2; it provides several extensions.
  • Winbgim is a port of BGI for Microsoft Windows; it provides several extensions.
  • The GRX graphics library contains a BGI subsystem, mostly compatible with the original BGI.
  • OpenBGI library is another port for Microsoft Windows.
  • libgraph is a BGI implementation for Linux written in SDL1.
  • Fileformat.info page about chr contains some information on how to decode Borland CHR font.
  • sunet.se ftp mirror with some CHR font tools.