CATALOGO/CGRAPH.CPP
2021-09-03 17:43:05 +02:00

331 lines
9.6 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

///////////////////////////////////////////////////////////////////////////
///// Nombre: Cgraph.cpp ///
///// Modulo: Perteneciente a Catalogo.C ///
//// Descripci¢n: Confecciona la pantalla de inicio ///
//// ///
//// Autor: Jos David Guilln Dominguez ///
//// Fecha: (Unknow) ///
//// ///
//// Compilador Borland C++ 3.0 ( Creaci¢n original en Turbo C 2.0 ) ///
///////////////////////////////////////////////////////////////////////////
#include <graphics.h> // Libreria de Funciones Graficas
#include <dos.h>
extern struct boton {
int left;
int up;
int right;
int down;
};
void fundido_al_negro(void);
void pon_paleta(char *punt, int bandera);
void DibujaPantalla(void);
void DibujaOjo(void);
void DibujaInfo(void);
void DibujaSalir(void);
void ImprimeBoton (int left, int up, int right, int down,
int cdf, int cs1, int cs2);
void ImprimeBoton2 (int fill, int cdf, int cs1, int cs2, struct boton parm);
//void ImprimeBoton2 (struct boton parm);
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* Esta Funci¢n imprimira los botones, pasandole como argumentos la estructura
boton, que define:
Izquierda ( left ) "int"
Arriba ( up )
Derecha ( right ) "int"
Abajo ( down )
Color de Fondo ( cdf ) "int"
Color Sombra 1 ( cs1 ) "int"
Color Sombra 2 ( cs2 ) "int"
Constante de Lugar: ( cdl ) "int"
1 Sombra en ESI
2 Sombra en EII
3 Sombra en ESD
4 Sombra en EID
GENERADOR DE BOTONES INVENCION DEL FUENTE EXCLUSIVA DE Jos David Guilln */
void ImprimeBoton (int left, int up, int right, int down,
int cdf, int cs1, int cs2)
{
int puntos[14];
puntos[0] = left+1; puntos[1] = up-1;
puntos[2] = right+1; puntos[3] = up-1;
puntos[4] = right+1; puntos[5] = down+1;
puntos[6] = (right-2); puntos[7] = (down-2);
puntos[8] = (right-2); puntos[9] = (up+2);
puntos[10] = (left+2); puntos[11] = (up+2);
puntos[12] = left+1; puntos[13] = up-1;
setcolor(cs2);
setfillstyle(SOLID_FILL, cs2);
setlinestyle(0, 1, NORM_WIDTH);
fillpoly(7, puntos);
setcolor(cs1);
setfillstyle(SOLID_FILL, cs1);
setlinestyle(0, 1, NORM_WIDTH);
puntos[0] = left; puntos[1] = up;
puntos[2] = left; puntos[3] = down+1;
puntos[4] = right+1; puntos[5] = down+1;
puntos[6] = (right-2); puntos[7] = (down-2);
puntos[8] = (left+3); puntos[9] = (down-2);
puntos[10] = (left+3); puntos[11] = (up+3);
puntos[12] = left; puntos[13] = up;
fillpoly(7, puntos);
setcolor(cdf);
setfillstyle(SOLID_FILL, cdf);
bar(left+3, up+3, right-3, down-3);
}
void ImprimeBoton2 (int fill, int cdf, int cs1, int cs2, struct boton parm)
{
int puntos[14];
puntos[0] = parm.left+1; puntos[1] = parm.up-1;
puntos[2] = parm.right+1; puntos[3] = parm.up-1;
puntos[4] = parm.right+1; puntos[5] = parm.down+1;
puntos[6] = (parm.right-2); puntos[7] = (parm.down-2);
puntos[8] = (parm.right-2); puntos[9] = (parm.up+2);
puntos[10] = (parm.left+2); puntos[11] = (parm.up+2);
puntos[12] = parm.left+1; puntos[13] = parm.up-1;
setcolor(cs2);
setfillstyle(SOLID_FILL, cs2);
setlinestyle(0, 1, NORM_WIDTH);
fillpoly(7, puntos);
setcolor(cs1);
setfillstyle(SOLID_FILL, cs1);
setlinestyle(0, 1, NORM_WIDTH);
puntos[0] = parm.left; puntos[1] = parm.up;
puntos[2] = parm.left; puntos[3] = parm.down+1;
puntos[4] = parm.right+1; puntos[5] = parm.down+1;
puntos[6] = (parm.right-2); puntos[7] = (parm.down-2);
puntos[8] = (parm.left+3); puntos[9] = (parm.down-2);
puntos[10] = (parm.left+3); puntos[11] = (parm.up+3);
puntos[12] = parm.left; puntos[13] = parm.up;
fillpoly(7, puntos);
if(fill) {
setcolor(cdf);
setfillstyle(SOLID_FILL, cdf);
bar(parm.left+3, parm.up+3, parm.right-3, parm.down-3);
}
}
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* DibujaPantalla confecciona la pantalla de inicio */
void DibujaPantalla(void)
{
int i;
int x = 30;
int y[4] = {30, 150, 270, 390};
char *texto[] = { "Mirar ",
"Utilidades ",
"Informaci¢n",
"Salir "};
setfillstyle(6, 57);
floodfill(0, 0, 1);
ImprimeBoton(20, 20, 170, 100, 7, 63, 56);
ImprimeBoton(20, 140, 170, 220, 7, 63, 56);
ImprimeBoton(20, 260, 170, 340, 7, 63, 56);
ImprimeBoton(20, 380, 170, 460, 7, 63, 56);
setcolor(0);
for(i=0; i<4; i++) {
outtextxy( x, y[i], texto[i]);
outtextxy( x+1, y[i]+6, "-");
}
DibujaOjo();
DibujaInfo();
DibujaSalir();
ImprimeBoton(205, 20, 605, 220, 7, 63, 56);
ImprimeBoton(213, 29, 302, 209, 0, 56, 63); /* 214 29 302 209 */
ImprimeBoton(322, 29, 596, 209, 0, 56, 63);
ImprimeBoton(205, 260, 605, 460, 7, 63, 56);
ImprimeBoton(213, 269, 596, 451, 0, 56, 63); /* 214 269 596 451 */
}
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* Realiza el Dibujo del Ojo */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
void DibujaOjo(void)
{
setcolor(0);
setlinestyle(0, 0, NORM_WIDTH);
ellipse(98, 70, 0, 360, 10, 12);
ellipse(120, 65,0, 360, 12, 10);
setfillstyle(SOLID_FILL, 6);
floodfill(98, 70, 0);
floodfill(120, 65, 0);
setcolor(0);
circle(101, 76, 4);
circle(126, 70, 4);
setfillstyle(SOLID_FILL, 0);
floodfill(101, 76, 0);
floodfill(126, 70, 0);
pieslice(114, 82, 0, 360, 5);
ellipse(116, 88, 185, 360, 15, 5);
}
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* Dibuja la 'I' de Info */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
void DibujaInfo(void)
{
setcolor(0);
setfillstyle(SOLID_FILL, 62);
fillellipse(130, 310, 18, 25);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 3);
outtextxy(119, 300, "i");
settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);
}
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* Dibuja Mi JD */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
/* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ */
void DibujaSalir(void)
{
setcolor(56);
setlinestyle(0, 0, THICK_WIDTH);
line(75, 403, 100, 403); /* J */
line(100, 403, 100, 443); /* J */
line(84, 436, 75, 436); /* J */
line(105, 403, 120, 403); /* D */
setcolor(63);
line(75, 404, 75, 414); /* J */
line(75, 414, 90, 414); /* J */
line(90, 414, 90, 438); /* J */
line(75, 437, 75, 448); /* J */
line(105, 403, 105, 456); /* D */
line(105, 456, 120, 456); /* D */
arc(88, 443, 180, 353, 13); /* J */
setlinestyle(0, 0, THICK_WIDTH);
setcolor(56);
setlinestyle(0, 0, THICK_WIDTH);
arc(87, 438, 180, 353, 4); /* J */
setlinestyle(0, 0, THICK_WIDTH);
ellipse(115, 429, 280, 80, 23, 27); /* D */
}
void fundido_al_negro(void)
{
// int OK=0;
typedef union {
struct {
unsigned char rojo, verde, azul;
}color;
unsigned char RGB[3];
}DAC;
typedef DAC DACARRAY[16];
union REGS regs;
struct SREGS sregs;
int m,n;
DACARRAY Buffer; // Array de 16 estructuras de 3
//obtencion de la paleta a travs de la BIOS.
regs.h.ah=0x10;
regs.h.al=0x17;
regs.x.bx=0;
regs.x.cx=16;
regs.x.dx=FP_OFF(Buffer);
sregs.es=FP_SEG(Buffer);
int86x(0x10,&regs,&regs,&sregs);
for(m=0;m<64;m++)
// while(!OK)
{
for(n=0;n<16;n++)
{
if (Buffer[n].RGB[0]>0) { Buffer[n].RGB[0]--; }
if (Buffer[n].RGB[1]>0) { Buffer[n].RGB[1]--; }
if (Buffer[n].RGB[2]>0) { Buffer[n].RGB[2]--; }
// if (Buffer[n].RGB[1]<=0 && Buffer[n].RGB[1]<=0 && Buffer[n].RGB[2]<=0) OK = 1;
}
pon_paleta((char*)Buffer, -1);
delay(15);
} //;
}
void pon_paleta(char *punt, int bandera)
{
struct SREGS seg;
union REGS regs;
unsigned int n;
char far *cPaleta, *dir_pal;
cPaleta=punt;
if(bandera==0){
dir_pal=cPaleta;
for(n=12; n>0; n--) {
*cPaleta=*cPaleta >> 2;
*dir_pal=*cPaleta;
cPaleta++;dir_pal++;
}
}
regs.x.ax = 0x1012;
regs.x.bx = 0;
regs.x.cx = 16;
regs.x.dx = FP_OFF(cPaleta);
seg.es = FP_SEG(cPaleta);
int86x(0x10, &regs, &regs, &seg); // funci¢n para asignar los colores
}