Files
Arquivotheca.SunOS-4.1.4/usr.lib/libcgi/examples/exE-4.2.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

118 lines
3.5 KiB
C

#ifndef lint
static char sccsid[] = "@(#)exE-4.2.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.2, page 151
*/
#include <suntool/sunview.h>
#include <suntool/panel.h>
#include <suntool/canvas.h>
#include <suntool/scrollbar.h>
#include <sunwindow/notify.h>
#include <cgipw.h>
#include <math.h>
Frame frame;
Panel panel;
Panel_item button;
int button_notify();
Canvas canvas;
Pixwin *pw;
Ccgiwin desc;
Cint name;
u_char red[8], green[8], blue[8];
main()
{
initialize_sunview();
set_up_sunview_colors();
initialize_cgipw();
window_main_loop( frame);
}
int
initialize_sunview() /* initialize Sunview */
{
frame = window_create( NULL, FRAME, 0);
panel = window_create(frame, PANEL, 0);
button= panel_create_item( panel, PANEL_BUTTON,
PANEL_LABEL_IMAGE, panel_button_image(panel, "Draw",4,0),
PANEL_NOTIFY_PROC, button_notify,
0);
window_fit_height( panel);
canvas= window_create(frame, CANVAS,
CANVAS_RETAINED, TRUE,
CANVAS_WIDTH, 750,
CANVAS_HEIGHT, 750,
WIN_VERTICAL_SCROLLBAR, scrollbar_create(0),
WIN_HORIZONTAL_SCROLLBAR, scrollbar_create(0),
CANVAS_FIXED_IMAGE, TRUE,
CANVAS_AUTO_EXPAND, FALSE,
CANVAS_AUTO_SHRINK, FALSE,
0);
pw = canvas_pixwin( canvas);
}
int
initialize_cgipw() /* initialize cgi, view surface */
{
open_pw_cgi();
open_cgi_canvas( canvas, &desc, &name);
}
button_notify()
{
Ccoor center;
Cint radius;
printf("we are in the panel button notify proc\n");
pw_vector(pw, 000, 000, 100, 100, PIX_SRC| PIX_COLOR(1), 1);
pw_vector(pw, 100, 100, 200, 200, PIX_SRC| PIX_COLOR(2), 1);
pw_vector(pw, 200, 200, 300, 300, PIX_SRC| PIX_COLOR(3), 1);
pw_vector(pw, 300, 300, 400, 400, PIX_SRC| PIX_COLOR(4), 1);
pw_vector(pw, 400, 400, 500, 500, PIX_SRC| PIX_COLOR(5), 1);
pw_vector(pw, 500, 500, 600, 600, PIX_SRC| PIX_COLOR(6), 1);
pw_text( pw, 20, 20, PIX_SRC| PIX_COLOR(7), 0, "canvas text");
interior_style( SOLIDI, ON);
perimeter_color( 3); /* set perimeter color */
fill_color( 3); /* set fill color */
center.x = 400;
center.y = 400;
radius = 50;
cgipw_circle( &desc, &center, radius);
}
set_up_sunview_colors()
{
/* initialize Sunview colormap */
red[0] = 255; green[0] = 255; blue[0] = 255; /* white */
red[1] = 000; green[1] = 255; blue[1] = 000; /* green */
red[2] = 000; green[2] = 000; blue[2] = 255; /* blue */
red[3] = 255; green[3] = 255; blue[3] = 000; /* yellow */
red[4] = 000; green[4] = 255; blue[4] = 255; /* aqua */
red[5] = 255; green[5] = 000; blue[5] = 255; /* purple */
red[6] = 255; green[6] = 000; blue[6] = 000; /* red */
red[7] = 000; green[7] = 000; blue[7] = 000; /* black */
pw_setcmsname( pw, "my_colors");
pw_putcolormap(pw, 0, 8, red, green, blue);
}