//| Libreria bsica para trabajar con el modo 13h en C++ //| autor: DidE //| Web: http://dide.bitacoras.com //| Licencia: ESTE DOCUMENTO EST BAJO LICENCIA CREATIVE COMMONS ( http://creativecommons.org/ ) //|______________________________________________________________________________________________________________________ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include ///////////////////////////////////////////////////////// // Declaracin de Constantes ///////////////////////////////////////////////////////// #define INT_MOUSE 0x33 #define SERV_ACTIVA_MOUSE 0x00 #define SERV_GET_MOUSE_STATUS 0x03 #define SERV_SET_MOUSE_XY 0x04 #define VVID 0xA0000000L #define CANT 500 #define LX_MOUSE 640 #define LY_MOUSE 200 //////////////////////////////////////////////////////// // Tipos de Datos. ///////////////////////////////////////////////////////// // Declaracin del tipo de datos Booleano. ///////////////////////////////////////////////////////// typedef enum{F,V} boolea; ///////////////////////////////////////////////////////// // Declaracin de variables globales. ///////////////////////////////////////////////////////// int x_mouse=0; int y_mouse=0; int _mouse_pulsado=0; int _mouse_cargado=0; int _cursor_cargado=0; int activa_mouse(); // Inicializacin del ratn int get_x_mouse(); // Devuelve la coordenada x actual del ratn int get_y_mouse(); // Devuelve la coordenada y actual del ratn int pulsado_left(); // Devuelve true si esta pulsado el botn izquierdo del ratn int pulsado_right(); // Devuelve true si esta pulsado el botn derecho del ratn int mouse_movido(); // Devuelve true si el ratn ha cambiado de posicin ///////////////////////////////////////////////////////// // Listado de Prototipos de las funciones implementadas. ///////////////////////////////////////////////////////// char Sgn(int x); void IniMode (char Mode); // Inicializa un modo de video determinado ( 0x13 video , 0x03 texto ...) int get_pixel(int x, int y); // Devuelve el color del pixel situado en las coordenadas pasadas como parametros. void pon_punto(int x,int y,unsigned char color); // Procedimiento que visualiza un punto en pantalla en modo 13h void lineaH(int x1,int x2,int y,int color); // dibuja una linea horizontal en modo 13h void lineaV(int y1,int y2,int x, int color); // dibuja una linea vertical en modo 13h void recta(int x1, int y1, int x2, int y2,int color); // dibuja un rectangulo en modo 13 h void cuadro13(int x1,int y1, int x2, int y2, int color); // dibuja un rectangulo relleno en modo 13h void linea(int x1, int y1,int x2,int y2,char color); // dibuja una linea en modo 13h void cambiarcolor( unsigned char color, unsigned char r, unsigned char v, unsigned char a ); // cambia un color determinado segun paleta RGB ///////////////// Definiciones ///////////////////////// char Sgn(int x) { char res; if(x>0) res=1; if(x==0) res=0; if(x<0) res=-1; return(res); } void linea(int x1, int y1, int x2, int y2, char Color) { int i, s, d1x, d1y, d2x, d2y, u=x2-x1, v=y2 - y1, m, n; d2x = Sgn(u); d1y= Sgn(v); d2y = 0; d1x= Sgn(u); m = abs(u); n = abs(v); if(m>n==0) { d2x = 0 ; d2y = Sgn(v); m = abs(v); n = abs(u); } s=m>>1; for(i=0;i<=m;i++) { pon_punto(x1,y1,Color); s+=n; if(s