gleicher@CS.CMU.EDU (Michael Gleicher) (12/25/90)
I will be videotaping my program, so I'd like to make things bigger so they can be seen on the (poor quality) VHS tapesthat they ultimately will be dubbed to. I can scale eveything in my program up a bit without much problem. I also would like to make the cursor big too. Defining a 32x32 bitmap cursor that looks like the standard arrow (except bigger) shouldn't be that hard, just a hassle to draw all the little dots and encode them. I was wondering though, if anyone done it already? Could you please send me the code? Does anyone have a cursor editing tool? Thanks, Mike
tomm@voodoo.UUCP (Tom Mackey) (01/04/91)
> >I will be videotaping my program, so I'd like to make things bigger so they >can be seen on the (poor quality) VHS tapesthat they ultimately will be dubbed >to. >I can scale eveything in my program up a bit without much problem. I also >would like to make the cursor big too. > >Defining a 32x32 bitmap cursor that looks like the standard arrow (except >bigger) shouldn't be that hard, just a hassle to draw all the little dots and >encode them. I was wondering though, if anyone done it already? Could you >please send me the code? Does anyone have a cursor editing tool? > >Thanks, > > Mike ---------------------------------------------------------------------------- Wotdahell...... I got the basic idea from the net, so now its payback time. -TomM- ---------------------------------------------------------------------------- /**********************************************************************\ * * * FILE: bit_defs.h * * * * DESCRIPTION: include file containing defines for binary constants * * * \**********************************************************************/ #ifndef BIT_DEFS_H #define BIT_DEFS_H #ifndef lint #ifdef RCS_INFO static char RCS_bit_defs_h[] = "\ $Source: RCS/bit_defs.h,v $\ $Revision: 5.1 $\ $Date: 90/08/28 09:54:38 $\ $State: Exp $"; #endif RCS_INFO #endif lint #define ___ ((((((((((((((((((((((((((((((((0 #define __ ((((((((((((((((0 #define _ <<1|0) #define X <<1|1) /* ** These clever defines were found somewhere on UseNet sometime ** in 1987. They provide an easy way to "see" what your patterns ** look like by making them human visible ascii patterns. The ** usual approach is to use hex definitions which are hard to ** visualize. The defines make the c-preprocessor do the hard work ** for you. For each line you define a zero prefaced with a bunch ** of open-parens; then you give a series of left-shift-and-OR-with ** -zero-or-one-close-parens which define a hex value. For example, ** here is how you would build a sailboat pattern. ** ** static ** Cursor sailboat = ** { ** __ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ _ , ** __ _ _ _ _ _ _ X X _ _ _ _ _ _ _ _ , ** __ _ _ _ _ _ _ X _ X _ _ _ _ _ _ _ , ** __ _ _ _ _ _ _ X _ X _ _ _ _ _ _ _ , ** __ _ _ _ _ _ X X _ _ X _ _ _ _ _ _ , ** __ _ _ _ _ X _ X _ _ X _ _ _ _ _ _ , ** __ _ _ _ _ X _ X _ _ _ X _ _ _ _ _ , ** __ _ _ _ X _ _ X _ _ _ X _ _ _ _ _ , ** __ _ _ _ X _ _ X _ _ _ _ X _ _ _ _ , ** __ _ _ X _ _ _ X _ _ _ _ X _ _ _ _ , ** __ _ _ X _ _ _ X _ _ _ _ _ X _ _ _ , ** __ X X X X X X X X X X X X X X _ _ , ** __ _ _ X _ _ _ X _ _ _ _ _ _ X X _ , ** __ _ _ X X _ _ _ _ _ _ _ _ _ _ X _ , ** __ _ _ _ X X _ _ _ _ _ _ _ _ _ X _ , ** __ _ _ _ _ X X X X X X X X X X _ _ ** }; ** ** The second line would really look like this: ** ((((((((((((((((0<<1|0)<<1|0)<<1|0)<<1|0)<<1|0)<<1|0)<<1|1) \ ** <<1|1)<<1|0)<<1|0)<<1|0)<<1|0)<<1|0)<<1|0)<<1|0)<<1|0) , ** ** which is the hex value 0x0300 ** ** Usually, working directly in an editor is good enough, but for ** tricky glyphs, you might want to work on graph paper first. ** ** One more thing: These define the rows of the pattern in reverse ** order, and so will appear upside-down. You can either build your ** patterns upside down, or use the flip_C16X1() and flip_C16X2() ** functions to flip your creations automagically. These two functions ** are defined in the file cursors.c ** -TomM- (tomm@voodoo.boeing.com) */ #endif BIT_DEFS_H /**********************************************************************\ * * * FILE: cursors.c * * * * DESCRIPTION: Implementation file for cursor creation routines * * * \**********************************************************************/ #ifndef lint #ifdef RCS_INFO static char RCSinfo[] = "\ $Source: RCS/cursors.c,v $\ $Revision: 5.2 $\ $Date: 90/08/28 11:27:00 $\ $State: Exp $"; #endif RCS_INFO #endif lint #include <device.h> #include <gl.h> void flip_C16X1(c_array) unsigned short c_array[][16]; { register int i, j; unsigned short tmp_array[1][16]; for (i=0; i<16; i++) tmp_array[0][i] = c_array[0][i]; j = 15; for (i=0; i<16; i++) { c_array[0][i] = tmp_array[0][j]; j--; } } void flip_C16X2(c_array) unsigned short c_array[][16]; { register int h, i, j; unsigned short tmp_array[2][16]; for (h=0; h<2; h++) { for (i=0; i<16; i++) { tmp_array[h][i] = c_array[h][i]; } } for (h=0; h<2; h++) { j = 15; for (i=0; i<16; i++) { c_array[h][i] = tmp_array[h][j]; j--; } } } /* ** flip_C32X[12] left as an excercise for the reader! */ /*************************************************************************\ * * * FILE: cursors.h * * * * DESCRIPTION: include file containing cursor pattern definitions * * This should give a good start to your own creative * * flights of fantasy. Note that the multi-color * * cursors are useless on the 4D-2x series :-( * * * * I'll take the credit, you take the blame! tomm@voodoo.boeing.com ;^) * * * \*************************************************************************/ #ifndef CURSORS_H #define CURSORS_H #ifndef lint #ifdef RCS_INFO static char RCS_cursors_h[] = "\ $Source: RCS/cursors.h,v $\ $Revision: 5.2 $\ $Date: 90/11/27 11:56:10 $\ $State: Exp $"; #endif RCS_INFO #endif lint #include <device.h> #include <gl.h> #include "bit_defs.h" extern void flip_C16X1(); extern void flip_C16X2(); /* ** The following pattern definitions must be flipped 180 degrees to ** provide proper input to defcursor(). Use either flip_C16X1() or ** filp_C16X2() to flip the cursor array from its visual orientation ** to the proper input orientation. */ static unsigned short cir_target[2][16] = /* RED border, YELLOW target */ { /* 1's bits RED */ __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ X X X _ _ _ _ _ X X X _ _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ _ X X X _ _ _ _ _ X X X _ _ _ , __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , /* 2's bits YELLOW */ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ X X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; static unsigned short x_target_1[1][16] = { __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ _ _ X X X X X X X _ _ _ _ _ , __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ X _ _ _ _ _ X X X _ _ _ _ _ X _ , __ X X _ _ _ _ _ X _ _ _ _ _ X X _ , __ X X X _ _ _ _ _ _ _ _ _ X X X _ , __ X X X X _ _ _ _ _ _ _ X X X X _ , __ X X X X X _ _ _ _ _ X X X X X _ , __ X X X X _ _ _ _ _ _ _ X X X X _ , __ X X X _ _ _ _ _ _ _ _ _ X X X _ , __ X X _ _ _ _ _ X _ _ _ _ _ X X _ , __ X _ _ _ _ _ X X X _ _ _ _ _ X _ , __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ _ _ _ _ X X X X X X X _ _ _ _ _ , __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; static unsigned short clock[1][16] = { __ _ _ _ _ _ X X X X X X _ _ _ _ _ , __ _ _ _ X X _ _ _ _ _ _ X X _ _ _ , __ _ _ X X _ _ _ X X _ _ _ X X _ _ , __ _ X X _ _ _ _ _ _ _ _ _ _ X X _ , __ _ X _ _ _ _ _ _ _ _ _ _ _ _ X _ , __ X _ _ _ _ X _ _ _ _ _ _ _ _ _ X , __ X _ _ _ _ _ X _ _ _ _ _ _ _ _ X , __ X _ X _ _ _ _ X X _ _ _ _ X _ X , __ X _ X _ _ _ _ X X _ _ _ _ X _ X , __ X _ _ _ _ _ _ _ X _ _ _ _ _ _ X , __ X _ _ _ _ _ _ _ _ X _ _ _ _ _ X , __ _ X _ _ _ _ _ _ _ X _ _ _ _ X _ , __ _ X X _ _ _ _ _ _ _ X _ _ X X _ , __ _ _ X X _ _ _ X X _ X _ X X _ _ , __ _ _ _ X X _ _ _ _ _ _ X X _ _ _ , __ _ _ _ _ _ X X X X X X _ _ _ _ _ }; static unsigned short hourglass[2][16] = /* RED hourglass, YELLOW sand */ { /* 1's bits RED */ __ _ X X X X X X X X X X X X X _ _ , __ _ X X X X X X X X X X X X X _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ _ _ X X X _ _ _ X X X _ _ _ _ , __ _ _ _ _ _ X X _ X X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ X X _ X X _ _ _ _ _ _ , __ _ _ _ X X X _ _ _ X X X _ _ _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ _ _ X X _ _ _ _ _ X X _ _ _ _ , __ _ X X X X X X X X X X X X X _ _ , __ _ X X X X X X X X X X X X X _ _ , /* 2's bits YELLOW */ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ X X _ X X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ X X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; static unsigned short martini[2][16] = /* RED swizzle, YELLOW glass */ { /* 1's bits RED */ __ X _ _ _ _ _ _ _ _ _ _ _ _ _ _ X , __ _ X _ _ _ _ _ _ _ _ _ _ _ _ X _ , __ _ _ X X X X X X X _ _ X X X _ _ , __ _ _ _ X _ _ _ _ _ _ _ _ X _ _ _ , __ _ _ _ _ X _ _ _ _ _ _ X _ _ _ _ , __ _ _ _ _ _ X _ _ _ _ X _ _ _ _ _ , __ _ _ _ _ _ _ X _ _ X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ X X _ _ _ _ _ _ _ , __ _ _ _ X X X X X X X X X X _ _ _ , /* 2's bits YELLOW */ __ _ _ _ _ _ _ _ _ _ _ _ X _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ X _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ X X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ X X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; static unsigned short coffee_cup[1][16] = { __ _ _ _ _ X _ _ X _ _ _ _ _ _ _ _ , __ _ _ _ _ _ X _ _ X _ _ _ _ _ _ _ , __ _ _ _ _ _ X _ _ X _ _ _ _ _ _ _ , __ _ _ _ _ _ _ X _ _ X _ _ _ _ _ _ , __ _ _ _ _ X X X X X X _ _ _ _ _ _ , __ _ _ X X _ X _ _ X _ X X _ _ _ _ , __ _ X _ _ _ X _ _ X _ _ _ X _ X _ , __ _ X _ _ _ _ _ _ _ _ _ _ X X _ X , __ _ X X X _ _ _ _ _ _ X X X _ _ X , __ _ X _ _ X X X X X X _ _ X _ _ X , __ _ _ X _ _ _ _ _ _ _ _ X _ _ _ X , __ _ _ X _ _ _ _ _ _ _ _ X _ _ X _ , __ _ _ X _ _ _ _ _ _ _ _ X _ X _ _ , __ _ _ X _ _ _ _ _ _ _ _ X X _ _ _ , __ _ _ X X _ _ _ _ _ _ X X _ _ _ _ , __ _ _ _ _ X X X X X X _ _ _ _ _ _ }; static unsigned short circle_dot[1][16] = { __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ X X X _ _ _ _ _ X X X _ _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ X _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ X X _ _ _ _ _ _ _ _ _ _ _ X X _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ X X _ _ _ _ _ _ _ _ _ X X _ _ , __ _ _ X X X _ _ _ _ _ X X X _ _ _ , __ _ _ _ X X X X X X X X X _ _ _ _ , __ _ _ _ _ _ X X X X X _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; static unsigned short blank[1][16] = { __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ }; #endif CURSORS_H --------- Then you do something like this somewhere -------- _________ in your initialization routines. -------- #include "cursors.h" void map_cursor_colors() { mapcolor(1, 255, 0, 0); /* RED */ mapcolor(2, 255, 255, 0); /* YELLOW */ mapcolor(3, 0, 0, 255); /* BLUE */ } void init_cursors() { long saved_mode; saved_mode = getdrawmode(); drawmode(CURSORDRAW); map_cursor_colors(); curstype(C16X2); flip_C16X2(cir_target); defcursor(1, cir_target); curorigin(1, 7, 8); flip_C16X2(hourglass); defcursor(2, hourglass); curorigin(2, 7, 7); flip_C16X2(martini); defcursor(3, martini); curorigin(3, 7, 8); curstype(C16X1); flip_C16X1(x_target_1); defcursor(4, x_target_1); curorigin(4, 7, 8); flip_C16X1(clock); defcursor(5, clock); curorigin(5, 7, 8); flip_C16X1(coffee_cup); defcursor(6, coffee_cup); curorigin(6, 7, 7); flip_C16X1(circle_dot); defcursor(7, circle_dot); curorigin(7, 7, 8); defcursor(8, blank); curorigin(8, 7, 8); drawmode(saved_mode); } -- Tom Mackey (206) 865-6575 tomm@voodoo.boeing.com Boeing Computer Services ....uunet!bcstec!voodoo!tomm M/S 7K-20, P.O. Box 24346, Seattle, WA 98124-0346