130 lines
2.4 KiB
C
130 lines
2.4 KiB
C
|
/* bg_test.c
|
||
|
|
||
|
|
||
|
Copyright (c) 1997 Michael Friman. All rights reserved.
|
||
|
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <unistd.h>
|
||
|
#include <strings.h>
|
||
|
#include <vga.h>
|
||
|
#include <vgagl.h>
|
||
|
|
||
|
/*
|
||
|
If you really want to see background runin, add after
|
||
|
vga_setmode vga_runinbackground(1) in fun.
|
||
|
Remember to compile the svgalib with background.
|
||
|
*/
|
||
|
|
||
|
int go = 0;
|
||
|
int linear = 0;
|
||
|
|
||
|
void drawline(int x1, int y1, int x2, int y2)
|
||
|
|
||
|
{
|
||
|
if (linear)
|
||
|
{
|
||
|
gl_line(x1,y1,x2,y2,vga_white());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
vga_drawline(x1,y1,x2,y2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void set_go(void)
|
||
|
|
||
|
{
|
||
|
go=1;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
int main(int argc, char *argv[])
|
||
|
|
||
|
{
|
||
|
int x[2];
|
||
|
int y[2];
|
||
|
int counter;
|
||
|
int mode;
|
||
|
|
||
|
if ((argc > 2) || ((argc == 2) && (strcmp(argv[1], "linear") != 0)))
|
||
|
{
|
||
|
fputs("Usage: bg_test [linear]\n", stderr);
|
||
|
exit(2);
|
||
|
}
|
||
|
vga_init();
|
||
|
printf("This is small test for background runin.\n");
|
||
|
if (vga_runinbackground_version()==1 || vga_runinbackground_version()>=3)
|
||
|
{
|
||
|
printf("Background runin enabled. mode %d\n", vga_runinbackground_version());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
printf("Svgalib is not background capable.\n");
|
||
|
printf("Test ended.\n");
|
||
|
return(0);
|
||
|
}
|
||
|
printf("Switch to another console when the box appears.\n");
|
||
|
printf("Press enter to continue or CTRL-c to stop.\n");
|
||
|
getchar();
|
||
|
|
||
|
mode = vga_getdefaultmode();
|
||
|
if (mode < 0)
|
||
|
mode = G320x200x256;
|
||
|
if (argc == 2)
|
||
|
{
|
||
|
if (vga_getmodeinfo(mode)->flags & CAPABLE_LINEAR)
|
||
|
{
|
||
|
vga_setlinearaddressing();
|
||
|
fputs("Linear mode set.\n", stderr);
|
||
|
linear = 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
fputs("Linear mode unavailable.\n", stderr);
|
||
|
}
|
||
|
}
|
||
|
vga_setmode(mode);
|
||
|
if (linear)
|
||
|
gl_setcontextvga(mode);
|
||
|
vga_runinbackground(VGA_GOTOBACK,set_go);
|
||
|
vga_runinbackground(1);
|
||
|
x[0]=0;
|
||
|
y[0]=0;
|
||
|
x[1]=vga_getxdim()-1;
|
||
|
y[1]=vga_getydim()-1;
|
||
|
|
||
|
if (!linear)
|
||
|
vga_setcolor(vga_white());
|
||
|
counter=(y[1]/11)*5+1;
|
||
|
while(counter<=(y[1]/11)*6)
|
||
|
{
|
||
|
drawline((x[1]/11)*5,counter,(x[1]/11)*6,counter);
|
||
|
counter++;
|
||
|
}
|
||
|
|
||
|
/* Program won't go further without console switching. */
|
||
|
|
||
|
while(!go) usleep(1000);
|
||
|
|
||
|
drawline(x[0],y[0],x[1],y[0]);
|
||
|
drawline(x[1],y[0],x[1],y[1]);
|
||
|
drawline(x[1],y[1],x[0],y[1]);
|
||
|
drawline(x[0],y[1],x[0],y[0]);
|
||
|
|
||
|
drawline(x[0],y[0],x[1],y[1]);
|
||
|
drawline(x[1],y[0],x[0],y[1]);
|
||
|
|
||
|
|
||
|
while(!vga_getkey());
|
||
|
|
||
|
vga_setmode(TEXT);
|
||
|
|
||
|
printf("Ok.\n");
|
||
|
return(0);
|
||
|
}
|
||
|
|