#ifndef lint static char sccsid[] = "@(#)exE-4.1.c 1.1 94/10/31 Copyr 1985-9 Sun Micro"; #endif lint /* * Copyright (c) 1985, 1986, 1987, 1988, 1989 by Sun Microsystems, Inc. * Permission to use, copy, modify, and distribute this software for any * purpose and without fee is hereby granted, provided that the above * copyright notice appear in all copies and that both that copyright * notice and this permission notice are retained, and that the name * of Sun Microsystems, Inc., not be used in advertising or publicity * pertaining to this software without specific, written prior permission. * Sun Microsystems, Inc., makes no representations about the suitability * of this software or the interface defined in this software for any * purpose. It is provided "as is" without express or implied warranty. */ /* SunCGI REFERENCE MANUAL, Rev. A, 9 May 1988, PN 800-1786-10 -- SunOS 4.0 * Example E-4.1, page 149 */ #include #include #include /* * SunView window handles */ Frame frame; Canvas canvas; /* * CGIPW canvas */ Ccgiwin vpw; /* * Canvas event handler */ canvas_event_proc( window, event) Window window; /* unused */ Event *event; { if (event_is_down( event)) return; switch (event_id( event)) { case MS_LEFT: draw_box_at( event_x( event), event_y( event)); break; case MS_MIDDLE: printf("print_canvas_event: \n"); printf("\tcanvas x,y = (%d,%d)\n", event_x(event), event_y(event)); canvas_window_event( canvas, event); printf("\tpixwin region x,y = (%d,%d)\n", event_x(event), event_y(event)); break; case MS_RIGHT: window_done( frame); close_cgi_pw( &vpw); close_pw_cgi(); exit(0); default: break; } } main() /********** MAIN **********/ { Cint name; /* goes unused in this example */ frame = window_create( NULL, FRAME, 0); canvas = window_create( frame, CANVAS, CANVAS_AUTO_SHRINK, FALSE, WIN_EVENT_PROC, canvas_event_proc, CANVAS_WIDTH, 1000, CANVAS_HEIGHT, 1000, WIN_VERTICAL_SCROLLBAR, scrollbar_create(0), WIN_HORIZONTAL_SCROLLBAR,scrollbar_create(0), 0); open_pw_cgi(); open_cgi_canvas( canvas, &vpw, &name); window_main_loop( frame); } /* * draw_box_at() * * Draw a rectangular box using the passed x,y point as * the upper left corner of the box. */ draw_box_at(x,y) int x,y; { Ccoor lr,ul; Ccoor triangle[3]; Ccoorlist coorlist; ul.x = x; ul.y = y; lr.x = x + 10; lr.y = y + 10; cgipw_rectangle( &vpw, &lr, &ul); triangle[0].x = x+2; triangle[0].y = y+7; triangle[1].x = x+8; triangle[1].y = y + 7; triangle[2].x = x + 5; triangle[2].y = y + 2; coorlist.n = 3; coorlist.ptlist = triangle; cgipw_polygon( &vpw, &coorlist); }