168 lines
6.3 KiB
C++
168 lines
6.3 KiB
C++
///////////////////////////////////////////////////////////////////////////
|
||
///// Nombre: Craton.cpp ///
|
||
///// Modulo: Perteneciente a Catalogo.C ///
|
||
//// Descripci¢n: Utilidades para el manejo del raton ///
|
||
//// ///
|
||
//// Autor: ( Ver Pc-Mania n§ 20 ) ///
|
||
//// Autor puntero del raton: Jos‚ David Guill‚n Dominguez ///
|
||
//// Fecha: ( Desconocida ) ///
|
||
//// ///
|
||
//// Compilador Borland C++ 3.0 ( Creaci¢n original en Turbo C 2.0 ) ///
|
||
///////////////////////////////////////////////////////////////////////////
|
||
|
||
#include <dos.h>
|
||
|
||
void desactiva_raton(void);
|
||
void activa_raton(void);
|
||
void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py);
|
||
|
||
int raton=0;
|
||
int x_raton;
|
||
int y_raton;
|
||
int boton_izq;
|
||
int boton_der;
|
||
extern int PunteroRaton;
|
||
int dir_raton [32+32] = {
|
||
|
||
// 0x3FFF, /*± ± 1 1 1 1 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0x1FFF, /*± Û ± 1 1 1 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0x0FFF, /*± Û Û ± 1 1 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0x07FF, /*± Û Û Û ± 1 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0x03FF, /*± Û Û Û Û ± 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0x07FF, /*± ± Û Û ± 1 1 1 1 1 1 1 1 1 1 1*/
|
||
// 0xC3FF, /*1 1 ± Û Û ± 1 1 1 1 1 1 1 1 1 1*/
|
||
|
||
0x007F, /*± ± ± ± ± ± ± ± ± 1 1 1 1 1 1 1*/
|
||
0x00FF, /*± Û Û Û Û Û Û ± 1 1 1 1 1 1 1 1*/
|
||
0x01FF, /*± Û Û Û Û Û ± 1 1 1 1 1 1 1 1 1*/
|
||
0x01FF, /*± Û Û Û Û Û ± 1 1 1 1 1 1 1 1 1*/
|
||
0x00FF, /*± Û Û Û Û Û Û ± 1 1 1 1 1 1 1 1*/
|
||
0x007F, /*± Û Û ± ± Û Û Û ± 1 1 1 1 1 1 1*/
|
||
0x18FF, /*± ± ± 1 1 ± Û ± 1 1 1 1 1 1 1 1*/
|
||
|
||
// 0xFC7F, /*1 1 1 1 1 1 ± Û ± 1 1 1 1 1 1 1*/
|
||
// 0xF83F, /*1 1 1 1 1 ± Û Û Û ± 1 1 1 1 1 1*/
|
||
// 0xF01F, /*1 1 1 1 ± Û Û Û Û Û ± 1 1 1 1 1*/
|
||
// 0xE00F, /*1 1 1 ± Û Û Û Û Û Û Û ± 1 1 1 1*/
|
||
// 0xE00F, /*1 1 1 ± ± ± Û Û Û ± ± ± 1 1 1 1*/
|
||
// 0xF83F, /*1 1 1 1 1 ± Û Û Û ± 1 1 1 1 1 1*/
|
||
// 0xF83F, /*1 1 1 1 1 ± ± ± ± ± 1 1 1 1 1 1*/
|
||
|
||
0x800F, /*1 ± ± ± ± ± ± ± ± ± ± ± 1 1 1 1*/
|
||
0x8083, /*1 ± Û Û Û Û Û ± ± Û Û Û ± ± 1 1*/
|
||
0x8001, /*1 ± ± ± ± ± Û ± ± Û ± ± Û ± ± 1*/
|
||
0xF810, /*1 1 1 1 1 ± Û ± ± Û ± 1 ± Û ± 1*/
|
||
0x8810, /*1 ± ± ± 1 ± Û ± ± Û ± 1 ± Û ± 1*/
|
||
0x8811, /*1 ± Û ± 1 ± Û ± ± Û ± 1 ± Û ± 1*/
|
||
0x8003, /*1 ± Û ± ± ± Û ± ± Û ± ± Û ± 1 1*/
|
||
0x8007, /*1 ± Û Û Û Û Û ± ± Û Û Û ± 1 1 1*/
|
||
0x800F, /*1 ± ± ± ± ± ± ± ± ± ± ± 1 1 1 1*/
|
||
|
||
// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x4000, /*0 Û 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x6000, /*0 Û Û 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x7000, /*0 Û Û Û 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x7800, /*0 Û Û Û Û 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x3000, /*0 0 Û Û 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
// 0x1800, /*0 0 0 Û Û 0 0 0 0 0 0 0 0 0 0 0*/
|
||
|
||
0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
0x7E00, /*0 Û Û Û Û Û Û 0 0 0 0 0 0 0 0 0*/
|
||
0x7C00, /*0 Û Û Û Û Û 0 0 0 0 0 0 0 0 0 0*/
|
||
0x7C00, /*0 Û Û Û Û Û 0 0 0 0 0 0 0 0 0 0*/
|
||
0x7E00, /*0 Û Û Û Û Û Û 0 0 0 0 0 0 0 0 0*/
|
||
0x6700, /*0 Û Û 0 0 Û Û Û 0 0 0 0 0 0 0 0*/
|
||
0x0200, /*0 0 0 0 0 0 Û 0 0 0 0 0 0 0 0 0*/
|
||
|
||
|
||
// 0x0100, /*0 0 0 0 0 0 0 Û 0 0 0 0 0 0 0 0*/
|
||
// 0x0380, /*0 0 0 0 0 0 Û Û Û 0 0 0 0 0 0 0*/
|
||
// 0x07C0, /*0 0 0 0 0 Û Û Û Û Û 0 0 0 0 0 0*/
|
||
// 0x0FE0, /*0 0 0 0 Û Û Û Û Û Û Û 0 0 0 0 0*/
|
||
// 0x0380, /*0 0 0 0 0 0 Û Û Û 0 0 0 0 0 0 0*/
|
||
// 0x0380, /*0 0 0 0 0 0 Û Û Û 0 0 0 0 0 0 0*/
|
||
// 0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
|
||
0x0000, /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
0x3E70, /*0 0 Û Û Û Û Û 0 0 Û Û Û 0 0 0 0*/
|
||
0x0248, /*0 0 0 0 0 0 Û 0 0 Û 0 0 Û 0 0 0*/
|
||
0x0244, /*0 0 0 0 0 0 Û 0 0 Û 0 0 0 Û 0 0*/
|
||
0x0242, /*0 0 0 0 0 0 Û 0 0 Û 0 0 0 Û 0 0*/
|
||
0x2244, /*0 0 Û 0 0 0 Û 0 0 Û 0 0 0 Û 0 0*/
|
||
0x2248, /*0 0 Û 0 0 0 Û 0 0 Û 0 0 Û 0 0 0*/
|
||
0x3E70, /*0 0 Û Û Û Û Û 0 0 Û Û Û 0 0 0 0*/
|
||
0x0000 /*0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0*/
|
||
};
|
||
|
||
|
||
void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py)
|
||
{
|
||
struct SREGS seg;
|
||
union REGS ent, sal;
|
||
long dir;
|
||
|
||
ent.x.ax = 0;
|
||
int86(0x33, &ent, &sal); /* averigua si hay rat¢n conectado */
|
||
|
||
raton = sal.x.ax; /* indica a la variable global el estado
|
||
del raton */
|
||
|
||
if(raton!=0) {
|
||
|
||
|
||
ent.x.ax = 15;
|
||
ent.x.cx = 5;
|
||
ent.x.dx = 11;
|
||
int86(0x33, &ent, &sal); /* fija la raz¢n mickey/pixel */
|
||
|
||
ent.x.ax = 7;
|
||
ent.x.cx = x1;
|
||
ent.x.dx = x2;
|
||
int86(0x33, &ent, &sal); /* fija la posici¢n m x. y m¡n. horizontal */
|
||
|
||
ent.x.ax = 8;
|
||
ent.x.cx = y1;
|
||
ent.x.dx = y2;
|
||
int86(0x33, &ent, &sal); /* fija la posici¢n m x. y m¡n. vertical */
|
||
|
||
if(!PunteroRaton) {
|
||
dir = (long)dir_raton;
|
||
ent.x.ax = 9;
|
||
ent.x.bx = 0;
|
||
ent.x.cx = 0;
|
||
ent.x.dx = (int) dir;
|
||
seg.es = (int) (dir >> 16);
|
||
int86x(0x33, &ent, &sal, &seg); /* asigna un cursor diferente */
|
||
}
|
||
|
||
ent.x.ax = 4;
|
||
ent.x.cx = px;
|
||
x_raton=ent.x.cx >> 1;
|
||
ent.x.dx = py;
|
||
y_raton=ent.x.dx;
|
||
int86(0x33, &ent, &sal); /* fija la posici¢n del rat¢n */
|
||
|
||
ent.x.ax = 1;
|
||
int86(0x33, &ent, &sal); /* muestra el puntero del rat¢n */
|
||
}
|
||
}
|
||
|
||
void activa_raton(void)
|
||
{
|
||
union REGS ent, sal;
|
||
|
||
ent.x.ax = 1;
|
||
int86(0x33, &ent, &sal);
|
||
}
|
||
|
||
void desactiva_raton(void)
|
||
{
|
||
union REGS ent, sal;
|
||
|
||
ent.x.ax = 2;
|
||
int86(0x33, &ent, &sal);
|
||
}
|
||
|
||
|
||
|