home *** CD-ROM | disk | FTP | other *** search
- /* Programmer's guide to GEM - 1986 - p.158 -listing 3.2 - CJPurcell Dec'86 */
- /* CTRLRC.C - MAIN DRIVER for draw_rc() examples using Mark Williams C */
- /* to be tested in NDC and/or RC mode with or without GDOS for implications */
- #include <portab.h> /* try <> and see ?? */
- #include <osbind.h> /* system constants */
- #include <gemdefs.h> /* GEM-definition */
- /* #include <obdefs.h> / * object definition*/
-
- WORD contrl[12], intin[128], ptsin[128], intout[128], ptsout[128];
-
- #define M_OFF 256
- #define RC_COORDS 2
- #define RIGHT_ALIGNED 2
- #define BOTTOM_ALIGNED 3
-
- VOID main() /* not GEMAIN as in ref. */
- {
- WORD handle, work_in[11], work_out[57], max_w, max_h;
- WORD ii;
-
- appl_init(); /* init AES for call */
- handle = graf_handle( &ii,&ii,&ii,&ii ); /* get screen handle */
- graf_mouse( M_OFF, NULL ); /* hide mouse */
- v_clrwk( handle ); /* clear workstation */
-
- for( ii=0; ii<11; ++ii ) work_in[ii]=1; /* init work_in array*/
- work_in[10] = RC_COORDS; /* using RC coordinates */
- v_opnvwk( work_in, &handle, work_out ); /* open the workstation */
-
- max_w = work_out[0]; max_h = work_out[1];
- draw_rc( handle,0,0,max_w,max_h ); /* do the examp.routine */
-
- vst_alignment( handle,RIGHT_ALIGNED,BOTTOM_ALIGNED,&ii,&ii );
- v_gtext( handle,max_w,max_h,"Press any Key to Continue" );
- evnt_keybd(); /* pause for viewing */
- v_clsvwk( handle ); /* close workstation */
- appl_exit(); /* tell AES finished */
- }
-
- /* ref. p.235 Listing 3.22 CPYTRAN1.C - Display a bit image bug on screen */
-
- #define ADDR /*?*/
- #define MD_REPLACE 1
- #define ImageBytes 2 /* # bytes in raster */
- #define ImageRows 10 /* rows */
- #define ImageBitWidth 11 /* # significant bits*/
- WORD image[10] = { 0x9200,0x4900,0x2480,0x3f80,0x7fd0,
- 0x7fd0,0x3f80,0x2480,0x4900,0x9200 };
- VOID draw_rc( handle, dx, dy, swidth, sheight )
- WORD handle, dx, dy, swidth, sheight;
- {
-
- FDB img_m , scr_m ;
- WORD pxy[8], colors[2];
-
- img_m.fd_addr = ADDR( image ) ;
- img_m.fd_w = ImageBytes << 3 ;
- img_m.fd_h = ImageRows ;
- img_m.fd_wdwidth = ImageBytes >> 1 ;
- img_m.fd_stand = 1 ;
- img_m.fd_nplanes = 1 ;
- img_m.fd_r1 = img_m.fd_r2 = img_m.fd_r3 = 0 ;
-
- scr_m.fd_addr = 0L ; /* Screen FDB -> physical device */
-
- colors[0] = 1 ; colors[1] = 0 ; /* Black and White */
-
- vr_trnfm( handle, &img_m, &img_m ) ; /* in place transform */
-
- pxy[0] = 0 ;
- pxy[1] = 0 ;
- pxy[2] = pxy[0] + ImageBitWidth -1 ;
- pxy[3] = pxy[1] + ImageRows - 1 ;
- pxy[4] = dx + swidth / 2 ;
- pxy[5] = dy + sheight / 2 ;
- pxy[6] = pxy[4] + ImageBitWidth ;
- pxy[7] = pxy[5] + ImageRows ;
- vrt_cpyfm( handle, MD_REPLACE, pxy, &img_m, &scr_m, colors );/*BITBLT*/
- } /*CJPurcell 07Dec'86*/
-