Category : Files from Magazines
Archive   : CUJ0894.ZIP
Filename : BGIGRH.C

 
Output of file : BGIGRH.C contained in archive : CUJ0894.ZIP
/******************************************************
* BGIGRH.C - required graphics functions
* using Borland Graphic Interface
*
* The routines in this module adapt themselves to
* whatever video hardware a driver is available for.
*
* for TurboC V2.0
*
* by Anton Treuenfels
*
* first created: 01/01/93
* last revision: 04/11/94
*****************************************************/

/*****************************
* Header Section - BGIGRH.H *
*****************************/

#ifndef SEEN_BGIGRH
#define SEEN_BGIGRH

/* exported variables */

extern long MaxXPos, MaxYPos;
extern int MaxColor;

/* function prototypes */

void abspoint(int *, int *);
void grhopen(void);
void grhclose(void);
void grhfpair(int, int, int, int);
void grhrect(int, int, int, int);
void grhcircle(int, int, int, int);

#endif

/***************************
* Code Section - BGIGRH.C *
***************************/

#include
#include
#include

#include "usrdef.h"

/* change the following definition if the driver
files are not there or in the current directory */

#define DRIVERPATH "C:\\TURBOC\\BGI"

long MaxXPos, MaxYPos; /* physical screen size */
int MaxColor; /* maximum color index */

/*****************************************************/

/* convert relative point to absolute */

void abspoint(int *xpos, int *ypos) {

if (*xpos <= 0)
*xpos = 0;
else if (*xpos >= 100)
*xpos = (int)MaxXPos;
else
*xpos = (int)(*xpos * MaxXPos / 100);

if (*ypos <= 0)
*ypos = 0;
else if (*ypos >= 100)
*ypos = (int)MaxYPos;
else
*ypos = (int)(*ypos * MaxYPos / 100);
}

/* convert relative rectangle to absolute */

static void absrect(int *lft, int *top,
int *rgt, int *bot) {

int tmp;

if (*lft > *rgt) {
tmp = *lft; *lft = *rgt; *rgt = tmp;
}
if (*top > *bot) {
tmp = *top; *top = *bot; *bot = tmp;
}
abspoint(lft, top);
abspoint(rgt, bot);
}

/* init bitmapped graphics operations */

void grhopen(void) {

int gdriver, gmode, gerror;

gdriver = DETECT;
initgraph(&gdriver, &gmode, DRIVERPATH);
gerror = graphresult();
if (gerror < 0) {
printf("\ngraphics error: %s.\n",
grapherrormsg(gerror));
exit(EXIT_FAILURE);
}

MaxXPos = getmaxx();
MaxYPos = getmaxy();
MaxColor = getmaxcolor();

setcolor(MaxColor);
setbkcolor(0);
}

/* end bitmapped graphics operations */

void grhclose(void) {

closegraph();
}

/* draw sideways 'F' pair */

void grhfpair(int lft, int top, int rgt, int bot) {

int dx, dy, dx2, dx3, dy3;

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
dx = (rgt - lft + 1) / 7;
dy = (bot - top + 1) / 5;
dx2 = 2 * dx; dx3 = 3 * dx; dy3 = 3 * dy;
rectangle(lft, top, rgt, top + dy);
rectangle(lft, bot - dy, rgt, bot);
rectangle(rgt - dx, top + dy, rgt, top + dy3);
rectangle(lft, bot - dy3, lft + dx, bot - dy);
rectangle(lft + dx2, top + dy,
lft + dx3, top + dy3);
rectangle(rgt - dx3, bot - dy3,
rgt - dx2, bot - dy);
}

/* draw rectangle */

void grhrect(int lft, int top, int rgt, int bot) {

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
rectangle(lft, top, rgt, bot);
}

/* draw circle */

void grhcircle(int lft, int top, int rgt, int bot) {

int radius;

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
radius = min((rgt - lft)/2, (bot - top)/2);
circle((lft + rgt)/2, (top + bot)/2, radius);
}

/******************************************************
* BGIGRH.C - required graphics functions
* using Borland Graphic Interface
*
* The routines in this module adapt themselves to
* whatever video hardware a driver is available for.
*
* for TurboC V2.0
*
* by Anton Treuenfels
*
* first created: 01/01/93
* last revision: 04/11/94
*****************************************************/

/*****************************
* Header Section - BGIGRH.H *
*****************************/

#ifndef SEEN_BGIGRH
#define SEEN_BGIGRH

/* exported variables */

extern long MaxXPos, MaxYPos;
extern int MaxColor;

/* function prototypes */

void abspoint(int *, int *);
void grhopen(void);
void grhclose(void);
void grhfpair(int, int, int, int);
void grhrect(int, int, int, int);
void grhcircle(int, int, int, int);

#endif

/***************************
* Code Section - BGIGRH.C *
***************************/

#include
#include
#include

#include "usrdef.h"

/* change the following definition if the driver
files are not there or in the current directory */

#define DRIVERPATH "C:\\TURBOC\\BGI"

long MaxXPos, MaxYPos; /* physical screen size */
int MaxColor; /* maximum color index */

/*****************************************************/

/* convert relative point to absolute */

void abspoint(int *xpos, int *ypos) {

if (*xpos <= 0)
*xpos = 0;
else if (*xpos >= 100)
*xpos = (int)MaxXPos;
else
*xpos = (int)(*xpos * MaxXPos / 100);

if (*ypos <= 0)
*ypos = 0;
else if (*ypos >= 100)
*ypos = (int)MaxYPos;
else
*ypos = (int)(*ypos * MaxYPos / 100);
}

/* convert relative rectangle to absolute */

static void absrect(int *lft, int *top,
int *rgt, int *bot) {

int tmp;

if (*lft > *rgt) {
tmp = *lft; *lft = *rgt; *rgt = tmp;
}
if (*top > *bot) {
tmp = *top; *top = *bot; *bot = tmp;
}
abspoint(lft, top);
abspoint(rgt, bot);
}

/* init bitmapped graphics operations */

void grhopen(void) {

int gdriver, gmode, gerror;

gdriver = DETECT;
initgraph(&gdriver, &gmode, DRIVERPATH);
gerror = graphresult();
if (gerror < 0) {
printf("\ngraphics error: %s.\n",
grapherrormsg(gerror));
exit(EXIT_FAILURE);
}

MaxXPos = getmaxx();
MaxYPos = getmaxy();
MaxColor = getmaxcolor();

setcolor(MaxColor);
setbkcolor(0);
}

/* end bitmapped graphics operations */

void grhclose(void) {

closegraph();
}

/* draw sideways 'F' pair */

void grhfpair(int lft, int top, int rgt, int bot) {

int dx, dy, dx2, dx3, dy3;

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
dx = (rgt - lft + 1) / 7;
dy = (bot - top + 1) / 5;
dx2 = 2 * dx; dx3 = 3 * dx; dy3 = 3 * dy;
rectangle(lft, top, rgt, top + dy);
rectangle(lft, bot - dy, rgt, bot);
rectangle(rgt - dx, top + dy, rgt, top + dy3);
rectangle(lft, bot - dy3, lft + dx, bot - dy);
rectangle(lft + dx2, top + dy,
lft + dx3, top + dy3);
rectangle(rgt - dx3, bot - dy3,
rgt - dx2, bot - dy);
}

/* draw rectangle */

void grhrect(int lft, int top, int rgt, int bot) {

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
rectangle(lft, top, rgt, bot);
}

/* draw circle */

void grhcircle(int lft, int top, int rgt, int bot) {

int radius;

setlinestyle(SOLID_LINE, 0x0000, NORM_WIDTH);
absrect(&lft, &top, &rgt, &bot);
radius = min((rgt - lft)/2, (bot - top)/2);
circle((lft + rgt)/2, (top + bot)/2, radius);
}



  3 Responses to “Category : Files from Magazines
Archive   : CUJ0894.ZIP
Filename : BGIGRH.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/