CD_OUT_SRC/CD_ICONS.CPP
2021-09-03 17:50:32 +02:00

429 lines
15 KiB
C++

///////////////////////////// FICHEROS A INCLUIR /////////////////////////////
#include <conio.h>
#include <alloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include "cd_icons.h"
#include "cd_error.h"
////////////////////////////////// VARIABLES /////////////////////////////////
extern char raton;
extern char PunteroRaton;
extern char dac[256*3];
unsigned char far *Icono; // 18
void Coloca_Iconos_Dos_Windows(void);
void Coloca_Iconos(int Start_Icon);
//////////////////////// DECLARACIONES DE FUNCIONES //////////////////////////
extern "C" void ENCIENDE_PANTALLA(char *);
extern unsigned char *P_Raton1, *P_Raton2, *P_Raton3, *P_Raton4;
///////////////////////////////// PROGRAMA ///////////////////////////////////
void Inicializa_Iconos(void)
{
FILE *handle;
int ancho, alto;
int Posicion[18] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int esq_x1, esq_y1, esq_x2, esq_y2;
unsigned char byte, contador;
int n = (20*20);
int PR1, PR2, PR3, PR4;
PR1 = PR2 = PR3 = PR4 = -1;
if( (Icono = (unsigned char far *)farcalloc( (39762), sizeof(unsigned char) ) ) == NULL )
{
closegraph();
printf("No se encontr¢ memoria suficiente");
exit(1);
}
if((handle=fopen("CD_OUT2.IMG", "rb"))==NULL)
{
restorecrtmode();
printf("No se encontr¢ el archivo de iconos");
exit(1);
}
if(10!=getc(handle))
{
restorecrtmode();
printf("El archivo de iconos, esta da¤ado");
exit(1);
}
getw(handle); getc(handle);
esq_x1=getw(handle); esq_y1=getw(handle);
esq_x2=getw(handle); esq_y2=getw(handle);
ancho=esq_x2-esq_x1+1;
alto =esq_y2-esq_y1+1;
fseek(handle, 128, 0);
for(alto=(esq_y2-esq_y1+1); alto>0; alto--)
{
for(ancho=(esq_x2-esq_x1+1); ancho>0; )
{
byte=getc(handle);
if(byte<=0xC0)
{
if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) {
Posicion[0] ++;
Icono[ Posicion[0] ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) {
Posicion[1] ++;
Icono[ Posicion[1]+2209*1 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) {
Posicion[2] ++;
Icono[ Posicion[2]+2209*2 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) {
Posicion[3] ++;
Icono[ Posicion[3]+2209*3 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) {
Posicion[4] ++;
Icono[ Posicion[4]+2209*4 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) {
Posicion[5] ++;
Icono[ Posicion[5]+2209*5 ] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) {
Posicion[6] ++;
Icono[ Posicion[6]+2209*6 ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) {
Posicion[7] ++;
Icono[ Posicion[7]+2209*7 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) {
Posicion[8] ++;
Icono[ Posicion[8]+2209*8 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) {
Posicion[9] ++;
Icono[ Posicion[9]+2209*9 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) {
Posicion[10] ++;
Icono[ Posicion[10]+2209*10 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) {
Posicion[11] ++;
Icono[ Posicion[11]+2209*11] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) {
Posicion[12] ++;
Icono[ Posicion[12]+2209*12 ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) {
Posicion[13] ++;
Icono[ Posicion[13]+2209*13 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) {
Posicion[14] ++;
Icono[ Posicion[14]+2209*14 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) {
Posicion[15] ++;
Icono[ Posicion[15]+2209*15 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) {
Posicion[16] ++;
Icono[ Posicion[16]+2209*16 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) {
Posicion[17] ++;
Icono[ Posicion[17]+2209*17] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
if( ancho>=/*272*/279 && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) {
// Flecha Izquierda
putpixel( 561 - 51 + (ancho - 279), 99 + 4 + (alto - 11), byte);
} else
if( ancho>=/*272*/276 && ancho <=/*318*/313 && alto >= /*32*/35 && alto <= 52 ) {
// Flecha Derecha
putpixel( 558 - 51 + (ancho-272), 126 - 52 + (alto-32), byte);
} else
if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) {
// Flecha Arriba
putpixel( 235 - 25 + (ancho-248), 420 + 2 + (alto-8), byte);
putpixel( 385 - 25 + (ancho-248), 360 + 3 + (alto-8), byte);
} else
if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) {
// Flecha Abajo
putpixel( 235 - 25 + (ancho-224), 470 - 100 + (alto-8), byte);
putpixel( 385 - 25 + 1 + (ancho-224), 415 -2- 100 + (alto-8), byte);
} else
if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) {
// Punteros del Raton...
PR1++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) {
// Punteros del Raton...
PR2++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) {
// Punteros del Raton...
PR3++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) {
// Punteros del Raton...
PR4++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
}
/////////////////
// putpixel( (10+ancho), (10+alto), byte);
/////////////////
ancho--;
}
else
{
contador=byte&0x3F; byte=getc(handle);
for(; contador>0; contador--)
{
// *dir_vga++=byte;
if( ancho>=272 && ancho <=318 && alto >=152 && alto <= 198 ) {
Posicion[0] ++;
Icono[ Posicion[0] ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=152 && alto <= 198 ) {
Posicion[1] ++;
Icono[ Posicion[1]+2209*1 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=152 && alto <= 198 ) {
Posicion[2] ++;
Icono[ Posicion[2]+2209*2 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=152 && alto <= 198 ) {
Posicion[3] ++;
Icono[ Posicion[3]+2209*3 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=152 && alto <= 198 ) {
Posicion[4] ++;
Icono[ Posicion[4]+2209*4 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=152 && alto <= 198 ) {
Posicion[5] ++;
Icono[ Posicion[5]+2209*5 ] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
if( ancho>=272 && ancho <=318 && alto >=104 && alto <= 150 ) {
Posicion[6] ++;
Icono[ Posicion[6]+2209*6 ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=104 && alto <= 150 ) {
Posicion[7] ++;
Icono[ Posicion[7]+2209*7 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=104 && alto <= 150 ) {
Posicion[8] ++;
Icono[ Posicion[8]+2209*8 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=104 && alto <= 150 ) {
Posicion[9] ++;
Icono[ Posicion[9]+2209*9 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=104 && alto <= 150 ) {
Posicion[10] ++;
Icono[ Posicion[10]+2209*10 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=104 && alto <= 150 ) {
Posicion[11] ++;
Icono[ Posicion[11]+2209*11] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
if( ancho>=272 && ancho <=318 && alto >=56 && alto <= 102 ) {
Posicion[12] ++;
Icono[ Posicion[12]+2209*12 ] = byte;
} else
if( ancho>=224 && ancho <=270 && alto >=56 && alto <= 102 ) {
Posicion[13] ++;
Icono[ Posicion[13]+2209*13 ] = byte;
} else
if( ancho>=176 && ancho <=222 && alto >=56 && alto <= 102 ) {
Posicion[14] ++;
Icono[ Posicion[14]+2209*14 ] = byte;
} else
if( ancho>=128 && ancho <=174 && alto >=56 && alto <= 102 ) {
Posicion[15] ++;
Icono[ Posicion[15]+2209*15 ] = byte;
} else
if( ancho>=80 && ancho <=126 && alto >=56 && alto <= 102 ) {
Posicion[16] ++;
Icono[ Posicion[16]+2209*16 ] = byte;
} else
if( ancho>=32 && ancho <=78 && alto >=56 && alto <= 102 ) {
Posicion[17] ++;
Icono[ Posicion[17]+2209*17] = byte;
} else
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
if( ancho>=/*272*/279 && ancho <=/*318*/316 && alto >= /*8*/11 && alto <= 29 ) {
// Flecha Izquierda
putpixel( 568 - 51 + (ancho - 279), 102 + 4 + (alto - 11), byte);
} else
if( ancho>=/*272*/276 && ancho <=/*318*/313 && alto >= /*32*/35 && alto <= 52 ) {
// Flecha Derecha
putpixel( 565 - 51 + (ancho - 276), 129 - 52 + (alto - 35), byte);
} else
if( ancho>=251 && ancho <=270 && alto >= 14 && alto <= 54 ) {
// Flecha Arriba
putpixel( 235 - 25 + (ancho-248), 420 + 2 + (alto-8), byte);
putpixel( 385 - 25 + (ancho-248), 360 + 3 + (alto-8), byte);
} else
if( ancho>=/*224*/227 && ancho <= 245 && alto >= /*8*/12 && alto <= /*54*/49 ) {
// Flecha Abajo
putpixel( 235 - 25 + 1 + (ancho-224), 470 - 100 + (alto-8), byte);
putpixel( 385 - 25 + 1 + (ancho-224), 415 -2 - 100 + (alto-8), byte);
} else
/*
if( ancho>=180 && ancho <= 220 && alto >= 12 && alto <= 52 ) {
// Punteros del Raton...
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
}
*/
if( ancho>=180 && ancho <= 199 && alto >= 12 && alto <= 31 ) {
// Punteros del Raton...
PR1++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton1[/*(199-ancho) + 20*(31-alto)*/PR1] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=201 && ancho <= 220 && alto >= 12 && alto <= 31 ) {
// Punteros del Raton...
PR2++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton2[/*(220-ancho) + 20*(31-alto)*/PR2] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=180 && ancho <= 199 && alto >= 33 && alto <= 52 ) {
// Punteros del Raton...
PR3++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton3[/*(199-ancho) + 20*(52-alto)*/PR3] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
} else
if( ancho>=201 && ancho <= 220 && alto >= 33 && alto <= 52 ) {
// Punteros del Raton...
PR4++;
if ( raton!=0 && PunteroRaton == 100 )
P_Raton4[/*(220-ancho) + 20*(52-alto)*/PR4] = byte;
// putpixel( 400 + 46 + (176-ancho), 150 + (49-alto), byte);
}
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
/////////////////
// putpixel( (10+ancho), (10+alto), byte);
/////////////////
ancho--;
}
}
}
}
getc(handle);
// for(n=0; n<256*3; n++) dac[n]=getc(handle) >> 2;
for(n=0; n<256*3; n++)
if( n >= (256-16)*3 )
dac[n]=getc(handle) >> 2;
else
getc(handle);
fclose(handle);
}
void Coloca_Iconos_Dos_Windows(void){
int x, y, i;
for( y = 0; y <= (46-1); y++ )
for( x = 1; x <= 46; x++ ) {
// ****** 1
putpixel( /*397*/512 + x, 12+y, Icono[ x + (47*y) + (2209*11) ] );
putpixel( 577 + x, 12+y, Icono[ x + (47*y) + (2209*17) ] );
// C_Icon++;
}
}
void Coloca_Iconos(int Start_Icon){
int x, y, i;
const char Icon_inx[] = { Juegos, Texto, Musica, Dibujo, Util, Base, Hoja,
Red, TC, Scanner, News, Zip, Peli, Varios, CD, Ayuda };
Start_Icon--;
for( y = 0; y <= (46-1); y++ )
for( x = 1; x <= 46; x++ ) {
// ****** 1
// putpixel( 447 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon]) ] );
// putpixel( 512 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon+1]) ] );
putpixel( 577 + x, 77+y, Icono[ x + (47*y) + (2209*Icon_inx[Start_Icon/*+2*/]) ] );
// C_Icon++;
}
}