home *** CD-ROM | disk | FTP | other *** search
- /*
- * drv_hp.c - a budget displayer for HP workstations, by Eric Haines
- *
- * A real kludge, I admit - do want you want in gopen().
- *
- * I assume you're in X windows and start with a graphics window:
- xwcreate -depth 24 -g 480x512+0+0 GraphWin
- */
-
- #include <stdio.h>
- #include <starbase.c.h>
- #include "drv.h"
-
- #define ClrList(c) (float)((c)[0]), (float)((c)[1]), (float)((c)[2])
- static int FD = -1 ;
- static double X_res, Y_res ;
-
- void
- display_clear()
- {
- /* Insert code to clear the graphics display here */
- clear_control( FD, CLEAR_VDC_EXTENT ) ;
- clear_view_surface( FD ) ;
- }
-
- void
- display_init(xres, yres, bk_color)
- int xres, yres;
- COORD3 bk_color;
- {
- /* Insert code to open/initialize the graphics display here */
- if ( -1 == ( FD =
- gopen( "/dev/screen/GraphWin", OUTINDEV, NULL, INIT|ACCELERATED) ) ) {
-
- fprintf( stderr, "could not open device for output!\n" ) ;
- return ;
- }
- shade_mode( FD, CMAP_FULL|INIT, FALSE ) ;
- mapping_mode( FD, TRUE ) ;
- background_color( FD, ClrList( bk_color ) ) ;
- display_clear() ;
- X_res = xres ;
- Y_res = yres ;
- }
-
- void
- display_close(wait_flag)
- int wait_flag ;
- {
- /* Insert code to close the graphics display here */
- gclose( FD ) ;
- }
-
- /* currently not used for anything, so you don't have to implement */
- void
- display_plot(x, y, color)
- int x, y;
- COORD3 color;
- {
- float clist[2] ;
-
- /* Insert code to plot a single pixel here */
- marker_color( FD, ClrList( color ) ) ;
- clist[0] = (float)x/X_res ;
- clist[1] = (float)y/Y_res ;
- polymarker2d( FD, clist, 1, FALSE ) ;
- }
-
- /* weirdly enough, x and y are centered around the origin */
- void
- display_line(x0, y0, x1, y1, color)
- int x0, y0, x1, y1;
- COORD3 color;
- {
- /* Insert line drawing code here */
- line_color( FD, ClrList( color ) ) ;
- move2d( FD, (float)(((double)x0+X_res*0.5)/X_res),
- (float)(((double)y0+Y_res*0.5)/Y_res) ) ;
- draw2d( FD, (float)(((double)x1+X_res*0.5)/X_res),
- (float)(((double)y1+Y_res*0.5)/Y_res) ) ;
- }
-
- int
- kbhit()
- {
- /* Insert keyboard hit (i.e. interrupt operation) test code here */
-
- /* currently always no interrupt */
- return( 0 ) ;
- }
-