home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 48
/
Amiga_Dream_48.iso
/
Atari
/
c
/
libs
/
xaes_new.lzh
/
XVDI.C
< prev
Wrap
C/C++ Source or Header
|
1994-12-05
|
4KB
|
162 lines
/********************************************************************
* 0.90*
* XAES: Extended Video Display Interface routines *
* by Ken Hollis *
* *
* Copyright (c) 1994, Bitgate Software. All Rights Reserved. *
* *
* These are the extended VDI routines. They also make it so that *
* most commonly called routines are used with one call. The KISS *
* method works unbelievably well. *
* *
********************************************************************/
#include "xaes.h"
XVDIVARS SaveHandles;
GLOBAL void line(int x1, int y1, int x2, int y2)
{
int pxyarray[4];
pxyarray[0] = x1;
pxyarray[1] = y1;
pxyarray[2] = x2;
pxyarray[3] = y2;
v_pline(VDIhandle, 2, pxyarray);
}
GLOBAL void point(int x, int y, int color)
{
int pxyarray[2];
pxyarray[0] = x;
pxyarray[1] = y;
vsm_color(VDIhandle, color);
v_pmarker(VDIhandle, 1, pxyarray);
}
GLOBAL void box(int x, int y, int w, int h, int color)
{
int pxyarray[10];
pxyarray[2] = pxyarray[4] = (pxyarray[0] = pxyarray[6] = pxyarray[8] = x) + w;
pxyarray[5] = pxyarray[7] = (pxyarray[1] = pxyarray[3] = pxyarray[9] = y) + h;
vsl_color(VDIhandle, color);
v_pline(VDIhandle, 5, pxyarray);
}
GLOBAL void box_fill(int x, int y, int w, int h, int color)
{
int pxyarray[4];
pxyarray[2] = (pxyarray[0] = x) + w;
pxyarray[3] = (pxyarray[1] = y) + h;
/* vsf_interior(VDIhandle, 1); */
vsf_color(VDIhandle, color);
vsl_color(VDIhandle, color);
v_bar(VDIhandle, pxyarray);
}
GLOBAL void fillarea(int x1, int y1, int x2, int y2, int interior, int color)
{
int pxyarray[4];
pxyarray[0] = x1;
pxyarray[1] = y1;
pxyarray[2] = x2;
pxyarray[3] = y2;
vsf_interior(VDIhandle, interior);
vsf_color(VDIhandle, color);
v_fillarea(VDIhandle, 2, pxyarray);
}
GLOBAL void fill(int x, int y, int color)
{
vsf_interior(VDIhandle, 1);
vsf_color(VDIhandle, color);
v_contourfill(VDIhandle, x, y, color);
}
GLOBAL void XVDI_SaveHandles(void)
{
int i;
vqt_attributes(VDIhandle, SaveHandles.textattributes);
vqf_attributes(VDIhandle, SaveHandles.fillattributes);
vql_attributes(VDIhandle, SaveHandles.lineattributes);
vswr_mode(VDIhandle, MD_REPLACE);
vst_color(VDIhandle, BLACK);
vst_rotation(VDIhandle, 0);
vst_height(VDIhandle, 6, &i, &i, &i, &i);
vst_effects(VDIhandle, 0);
vsf_interior(VDIhandle, FIS_SOLID);
vsf_color(VDIhandle, BLACK);
vsf_style(VDIhandle, 7);
vsf_perimeter(VDIhandle, 0);
vsl_type(VDIhandle, 1);
vsl_color(VDIhandle, BLACK);
vsl_width(VDIhandle, 1);
}
GLOBAL void XVDI_RestoreHandles(void)
{
int i;
vst_color(VDIhandle, SaveHandles.textattributes[1]);
vst_rotation(VDIhandle, SaveHandles.textattributes[2]);
vst_alignment(VDIhandle, SaveHandles.textattributes[3], SaveHandles.textattributes[4], &i, &i);
vst_effects(VDIhandle, 0);
/* Why they save the writing mode three times I may never know, but
they do. Use the text attributes, since it's text we're using
for the drawing mode. If not, change the writing mode in your
own routine. */
vswr_mode(VDIhandle, SaveHandles.textattributes[5]);
/* vswr_mode(VDIhandle, SaveHandles.fillattributes[3]); */
/* vswr_mode(VDIhandle, SaveHandles.lineattributes[2]); */
vst_height(VDIhandle, SaveHandles.textattributes[7], &i, &i, &i, &i);
vsf_interior(VDIhandle, SaveHandles.fillattributes[0]);
vsf_color(VDIhandle, SaveHandles.fillattributes[1]);
vsf_style(VDIhandle, SaveHandles.fillattributes[2]);
vsf_perimeter(VDIhandle, SaveHandles.fillattributes[4]);
vsl_type(VDIhandle, SaveHandles.lineattributes[0]);
vsl_color(VDIhandle, SaveHandles.lineattributes[1]);
vsl_width(VDIhandle, SaveHandles.lineattributes[5]);
}
GLOBAL void XVDI_RestoreForGEM(void)
{
int i;
vst_color(VDIhandle, BLACK);
vst_rotation(VDIhandle, 0);
vst_effects(VDIhandle, 0);
vswr_mode(VDIhandle, MD_REPLACE);
vst_height(VDIhandle, 6, &i, &i, &i, &i);
vsf_interior(VDIhandle, FIS_HOLLOW);
vsf_color(VDIhandle, WHITE);
vsl_udsty(VDIhandle,0x5555);
vsl_type(VDIhandle,1);
vsf_perimeter(VDIhandle, 1);
vsl_color(VDIhandle, BLACK);
vsl_width(VDIhandle, 1);
}