/*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ CURSOR DEMONSTRATIONM ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ /*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ INCLUDES ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ #include #include #include /*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ USER WRITTEN INCLUDES ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ #include "colors.h" #include "gtools.h" #include "gdraws.h" /*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ GLOBAL VARIABLES USED BY GRAPHICS FUNCTIONS ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ enum vidTypes {mda, cga, ega, compaq, other}; int color = 2; int background_color = 0; int LINEWIDTH=1, OPERATOR=0, ANGLE, XCENTER, YCENTER,CURSOR_X,CURSOR_Y; unsigned long int PATTERN=0xFFFFFFFF; unsigned long int style[8] = { 0xFFFFFFFF,0xC0C0C0C0,0xFF00FF00,0xFFF0FFF0, 0xF000F000, 0xFFFF0000,0xFFFFF0F0,0xFFF0F0F0}; unsigned int mask, cursor_pattern[2][16] = {0x8000,0xC000,0xE000, 0xF000,0xF800,0xFC00,0xFE00,0xFF00,0xF800,0xD800,0x8C00, 0x0C00,0x0600,0x0600,0x00,0x00,0x0100,0x0100,0x0100,0x0100, 0x0100,0x7FFC,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100}; /*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ FUNCTION DEFINITIONS ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ void move_cursor(int type,int color); void wait(char title[]); /*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ MAIN PROGRAM ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ main() { double xd,yd,ampl,aspect; char ch; cls (1); setMode(0x10); cls(1); write_big_str(-119,131,"CURSOR",226); write_vid_str(-200,-6,"DEMONSTRATION",91); wait("Move cursor with arrows"); LINEWIDTH = 3; cls(4); drawRect(-309,210,310,-200,11); drawLine(-309,210,310,-200,11); drawLine(-309,-200,310,210,11); wait("Move cursor with arrows"); } void wait(char title[]) { int tab,width,line,mode; static int cursor_type,cursor_color; cursor_type = cursor_type %2; cursor_color = cursor_color %8 + 8; mode = getMode(&width); if ((mode == 0x11) || (mode == 0x12)) line = 29; else line = 24; tab = (width - strlen(title))/2; gotoxy(tab,0); writString(title,WHITE,0); tab = (width - 33)/2; gotoxy(tab,line); writString("Press 'Enter' to continue demo...", WHITE,0); move_cursor(cursor_type,cursor_color); cursor_color--; cursor_type = (++cursor_type)%2; cls(0); } void move_cursor(int type,int color) { int i,j,k,xoff=0,yoff=0,image_store[3][4][16],ch,fast = 1,temp; char far *base; if (type == 1) { xoff = -8; yoff = -6; } CURSOR_X = -xoff; CURSOR_Y = -yoff; temp = OPERATOR; OPERATOR = 0x18; do { for (i=0; i<16; i++) { for (j=0; j<16; j++) { mask = 0x8000 >> j; if ((mask & cursor_pattern[type][i]) != 0) plot(CURSOR_X+j+xoff+319,175 - ((CURSOR_Y*93) >> 7)+i+yoff, color); } } ch = getch(); if (ch == 0) ch = getch() + 256; for (i=0; i<16; i++) { for (j=0; j<16; j++) { mask = 0x8000 >> j; if ((mask & cursor_pattern[type][i]) != 0) plot(CURSOR_X+j+xoff+319,175 - ((CURSOR_Y*93) >> 7)+i+yoff, color); } } switch(ch) { case 27: fast = (++fast) % 2; break; case 333: if ((CURSOR_X < 303) && (fast == 0)) CURSOR_X++; if ((CURSOR_X < 294) && (fast == 1)) CURSOR_X += 10; break; case 331: if ((CURSOR_X > -318) && (fast == 0)) CURSOR_X--; if ((CURSOR_X > -309) && (fast == 1)) CURSOR_X -= 10; break; case 336: if ((CURSOR_Y > -223) && (fast == 0)) CURSOR_Y--; if ((CURSOR_Y > -214) && (fast == 1)) CURSOR_Y -= 10; break; case 328: if ((CURSOR_Y < 239) && (fast == 0)) CURSOR_Y++; if ((CURSOR_Y < 230) && (fast == 1)) CURSOR_Y += 10; break; } } while (ch != 0x0D); OPERATOR = temp; }