panel02/06

David A. Tristram dat at ORVILLE.NAS.NASA.GOV
Fri Aug 19 07:20:15 AEST 1988


#!/bin/sh
# this is part 2 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file demo18.c continued
#
CurArch=2
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
sed 's/^X//' << 'SHAR_EOF' >> demo18.c
X
X    a=mkact(pnl_typein);
X    a->x=2.0;
X    a->y=1.0;
X    a->upfunc=getfile;
X    a->label="file";
X    a->labeltype=PNL_LABEL_LEFT;
X    PNL_ACCESS(Typein,a,len)=60;
X    addact(a,p);
X
X    filewindow=mkact(pnl_typeout);
X    filewindow->x=0.0;
X    filewindow->y=2.0;
X    PNL_ACCESS(Typeout,filewindow,col)=80;
X    PNL_ACCESS(Typeout,filewindow,lin)=40;
X    PNL_ACCESS(Typeout,filewindow,size)=FILE_WINDOW_BUFSIZ;
X    addact(filewindow,p);
X}
X
SHAR_EOF
chmod 0644 demo18.c || echo "restore of demo18.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo19.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <fcntl.h>
X#include <gl.h>
X#include "panel.h"
X
XActuator *messagewindow,*gridfiletypein,*solnfiletypein;
XPanel *defpanel();
X
Xmain() 
X{
X    foreground();
X    noport();
X    winopen("typeout demo");
X    winconstraints();
X    winconstraints();
X
X    doublebuffer();
X    gconfig();
X
X    defpanel();
X
X    for (;;) {
X        dopanel();
X	swapbuffers();
X    }
X}
X
Xvoid
Xcleanexit()
X{
X    exit(0);
X}
X
Xvoid
Xcancelfunc()
X{
X    exit(0);
X}
X
Xvoid
Xopenfiles(a)
XActuator *a;
X{
Xint gridfd, solnfd;
Xint n=0;
XTypein *adgrid=(Typein *)gridfiletypein->data;
XTypein *adsoln=(Typein *)solnfiletypein->data;
XTypeout *adout=(Typeout *)messagewindow->data;
Xchar *p=adout->buf;
X    
X    if (!strcmp(adgrid->str,"")) {
X	ringbell();
X	tprint(messagewindow,"null grid file name");
X	return;
X    }
X
X    if (!strcmp(adsoln->str,"")) {
X	ringbell();
X	tprint(messagewindow,"null solution file name");
X	return;
X    }
X
X    gridfd=open(adgrid->str, O_RDONLY);
X    if (gridfd<0) {
X	tprint(messagewindow,"can't open grid file");
X	return;
X    }
X
X    solnfd=open(adsoln->str, O_RDONLY);
X    if (solnfd<0) {
X	tprint(messagewindow,"can't open solution file");
X	return;
X    }
X}
X
XPanel
X*defpanel()
X{
XActuator *a;
XPanel *p;
X
X    p=mkpanel();
X    p->label="file window";
X    p->x=200;
X    p->y=100;
X
X    a=mkact(pnl_wide_button);
X    a->x=1.0;
X    a->y=0.0;
X    a->label="ok";
X    a->upfunc=openfiles;
X    addact(a,p);
X
X    a=mkact(pnl_wide_button);
X    a->x=6.0;
X    a->y=0.0;
X    a->label="cancel";
X    a->upfunc=cancelfunc;
X    addact(a,p);
X
X    gridfiletypein=mkact(pnl_typein);
X    gridfiletypein->x=1.0;
X    gridfiletypein->y=1.0;
X    gridfiletypein->label="grid file";
X    gridfiletypein->labeltype=PNL_LABEL_LEFT;
X    PNL_ACCESS(Typein,gridfiletypein,len)=60;
X    addact(gridfiletypein,p);
X
X    solnfiletypein=mkact(pnl_typein);
X    solnfiletypein->x=1.0;
X    solnfiletypein->y=1.5;
X    solnfiletypein->label="solution file";
X    solnfiletypein->labeltype=PNL_LABEL_LEFT;
X    PNL_ACCESS(Typein,solnfiletypein,len)=60;
X    addact(solnfiletypein,p);
X
X    messagewindow=mkact(pnl_typeout);
X    messagewindow->x=0.0;
X    messagewindow->y=2.5;
X    messagewindow->label="messages";
X    PNL_ACCESS(Typeout,messagewindow,col)=80;
X    PNL_ACCESS(Typeout,messagewindow,lin)=20;
X    addact(messagewindow,p);
X}
X
SHAR_EOF
chmod 0644 demo19.c || echo "restore of demo19.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo2.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *b1;
X
XPanel
X*defpanel();
X
Xmain() 
X{
XActuator *a;
XPanel *panel;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    panel=defpanel();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) {
X	    exit(0);
X	}
X	s2->w=s1->val*10.0;
X	s2->dirtycnt=2;
X	panel->dirtycnt=2;	/* because we are modifying the layout */
X	pushmatrix();
X	translate(s1->val,s2->val,0.0);
X	color(BLACK);
X	clear();
X	color(WHITE);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel()
X{
XPanel *panel;
X
X    panel=mkpanel();
X
X    s1=mkact(pnl_slider);
X    s1->label="slider 1";
X    s1->x=0.0;
X    s1->y=0.0;
X    s1->minval= -1.0;
X    s1->maxval=1.0;
X    addact(s1, panel);
X
X    s2=mkact(pnl_slider);
X    s2->label="slider 2";
X    s2->x=1.0;
X    s2->y=0.0;
X    s2->minval= -1.0;
X    s2->maxval=1.0;
X    addact(s2, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="button 1";
X    b1->x=2.0;
X    b1->y=0.0;
X    addact(b1, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo2.c || echo "restore of demo2.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo20.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *b1, *b2, *b3, *b4,
X  *b5, *b6, *b7, *b8, *b9, *b10, *rb1, *rb2, *rb3;
X
XPanel
X*defpanel1(), *defpanel2(), *defpanel3();
X
Xmain() 
X{
XActuator *a;
XPanel *panel1;
XPanel *panel2;
Xshort col=RED;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X    defpanel3();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) exit(0);
X	if (a==b4) dumppanel();
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X	if (a==rb1) col=CYAN;
X	if (a==rb2) col=GREEN;
X	if (a==rb3) col=RED;
X
X	pushmatrix();
X	translate(PNL_ACCESS(Puck, s1, x),PNL_ACCESS(Puck, s1, y),0.0);
X	color(BLACK);
X	clear();
X	color(col);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
Xvoid
Xbeginscript()
X{
X  pnl_beginwritescript("panel.script");
X}
X
Xvoid
Xappendscript()
X{
X  pnl_beginappendscript("panel.script");
X}
X
Xvoid
Xendscript()
X{
X  pnl_endwritescript();
X}
X
Xvoid
Xreadscript()
X{
X  pnl_beginreadscript("panel.script");
X}
X
Xvoid
Xstopscript()
X{
X  pnl_endreadscript();
X}
X
XPanel
X*defpanel1()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel one";
X    panel->ppu=50.0;
X
X    s1=mkact(pnl_puck);
X    s1->label="position";
X    s1->x=4.0;
X    s1->y=0.0;
X    s1->minval= -1.0;
X    s1->maxval=1.0;
X    addact(s1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
XPanel
X*defpanel2()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel two";
X    panel->ppu=50.0;
X
X    b10=mkact(pnl_button);
X    b10->label="dump state";
X    b10->x=1.0;
X    b10->y=4.5;
X    b10->downfunc=dumpstate;
X    addact(b10, panel);
X
X    b5=mkact(pnl_button);
X    b5->label="begin script";
X    b5->x=1.0;
X    b5->y=4.0;
X    b5->downfunc=beginscript;
X    addact(b5, panel);
X
X    b6=mkact(pnl_button);
X    b6->label="end script";
X    b6->x=1.0;
X    b6->y=3.5;
X    b6->downfunc=endscript;
X    addact(b6, panel);
X
X    b9=mkact(pnl_button);
X    b9->label="append to script";
X    b9->x=1.0;
X    b9->y=3.0;
X    b9->downfunc=appendscript;
X    addact(b9, panel);
X
X    b7=mkact(pnl_button);
X    b7->label="read script";
X    b7->x=1.0;
X    b7->y=2.5;
X    b7->downfunc=readscript;
X    addact(b7, panel);
X
X    b8=mkact(pnl_button);
X    b8->label="stop reading script";
X    b8->x=1.0;
X    b8->y=2.0;
X    b8->downfunc=stopscript;
X    addact(b8, panel);
X
X    b4=mkact(pnl_button);
X    b4->label="dumppanel";
X    b4->x=1.0;
X    b4->y=1.5;
X    addact(b4, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    return panel;
X}
X
XPanel
X*defpanel3()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel three";
X    panel->ppu=50.0;
X
X    rb3=mkact(pnl_radio_button);
X    rb3->label="red";
X    rb3->x=1.0;
X    rb3->y=2.0;
X    rb3->val=1.0;
X    addact(rb3, panel);
X
X    rb2=mkact(pnl_radio_button);
X    rb2->label="green";
X    rb2->x=1.0;
X    rb2->y=1.5;
X    addact(rb2, panel);
X
X    rb1=mkact(pnl_radio_button);
X    rb1->label="cyan";
X    rb1->x=1.0;
X    rb1->y=1.0;
X    addact(rb1, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo20.c || echo "restore of demo20.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo21.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *m, *b1, *b2, *b3;
X
XPanel
X*defpanel();
X
Xmain() 
X{
XActuator *a;
XPanel *panel;
XMouse *md;
X
X    foreground();
X    winopen("demo");
X
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    panel=defpanel();
X    md=(Mouse *)m->data;
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) {
X	    exit(0);
X	}
X
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X
X	pushmatrix();
X	translate(md->x/(float)XMAXSCREEN, md->y/(float)YMAXSCREEN,0.0);
X
X	color(BLACK);
X	clear();
X	color(WHITE);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="demo";
X    panel->ppu=50.0;
X
X    m=mkact(pnl_mouse);
X    addact(m, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo21.c || echo "restore of demo21.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo22.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *b1, *b2, *b3;
X
XPanel
X*defpanel();
X
Xmain() 
X{
XActuator *a;
XPanel *panel;
X
X    foreground();
X    winopen("demo");
X
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    panel=defpanel();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) {
X	    exit(0);
X	}
X
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X
X	pushmatrix();
X	translate(s1->val,s2->val,0.0);
X	color(BLACK);
X	clear();
X	color(WHITE);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="demo";
X
X    s1=mkact(pnl_slideroid);
X    s1->label="x position";
X    s1->x=0.0;
X    s1->y=0.0;
X    s1->minval= -1.0;
X    s1->maxval=1.0;
X    addact(s1, panel);
X
X    s2=mkact(pnl_slideroid);
X    s2->label="y position";
X    s2->x=2.0;
X    s2->y=0.0;
X    s2->minval= -1.0;
X    s2->maxval=1.0;
X    addact(s2, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=3.0;
X    addact(b1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=3.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=4.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo22.c || echo "restore of demo22.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo23.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *s3, *b1, *b2, *b3;
X
Xvoid defpanel();
X
Xmain() 
X{
XActuator *a;
Xshort col=RED;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    defpanel();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) s1->visible= !(b1->val==1.0);
X	if (a==b2) s2->visible= !(b2->val==1.0);
X	if (a==b3) s3->visible= !(b3->val==1.0);
X
X	color(BLACK);
X	clear();
X	swapbuffers();
X    }
X}
X
X
Xvoid
Xdefpanel()
X{
XPanel *p;
X
X    p=mkpanel();
X    p->label="fixpanel demo";
X    p->ppu=50.0;
X    p->upfunc=p->fixfunc;
X
X    s1=mkact(pnl_slider);
X    s1->label="slider 1";
X    s1->x=4.0;
X    s1->y=0.0;
X    addact(s1, p);
X
X    s2=mkact(pnl_hslider);
X    s2->label="slider 2";
X    s2->x=0.0;
X    s2->y= -2.0;
X    addact(s2, p);
X
X    s3=mkact(pnl_slider);
X    s3->label="slider 3";
X    s3->x= -2.0;
X    s3->y=0.0;
X    addact(s3, p);
X
X    b1=mkact(pnl_toggle_button);
X    b1->label="slider 1";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, p);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="slider 2";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, p);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="slider 3";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, p);
X}
X
SHAR_EOF
chmod 0644 demo23.c || echo "restore of demo23.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo24.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include	<stdio.h>
X#include	<gl.h>
X#include	<device.h>
X#include	"panel.h"
X
X#define	BACK_COLOR_INDEX	99
X#define	MAX_INTENSITY	255.0
X
X
XActuator		*pal;
X
Xint		cur_index = BACK_COLOR_INDEX;
X
Xfloat		back_r;
Xfloat		back_g;
Xfloat		back_b;
X
XActuator	*back_r_label;
XActuator	*back_g_label;
XActuator	*back_b_label;
X
XActuator	*back_r_slider;
XActuator	*back_g_slider;
XActuator	*back_b_slider;
X
X
Xmain()
X{
X	void	make_back_color_panel();
X
X
X
X	foreground();
X	noport();
X	winopen("Testpan");
X	doublebuffer();
X	gconfig();
X	mapcolor(BACK_COLOR_INDEX, 250, 200, 150);
X	make_back_color_panel();
X
X
X	while (1)
X	{
X		dopanel();
X		swapbuffers();
X	}
X
X}
X
Xvoid make_back_color_panel()
X{
X	extern Actuator	*back_r_slider;
X	extern Actuator	*back_g_slider;
X	extern Actuator	*back_b_slider;
X	
X	extern Actuator	*back_r_label;
X	extern Actuator	*back_g_label;
X	extern Actuator	*back_b_label;
X	
X	Panel			*back_color_panel;
X	short			r;
X	short			g;
X	short			b;
X	static char		rchar[10];
X	static char		gchar[10];
X	static char		bchar[10];
X	static char		cbuf[20];
X
X	void			update_back_color();
X
X	extern Actuator	*pal;
X
X	Actuator		*map;
X	void			set_cur_index();
X
X
X	getmcolor(BACK_COLOR_INDEX, &r, &g, &b);
X
X	back_color_panel = mkpanel();
X	back_color_panel -> label = "Background";
X	back_color_panel -> ppu = 40;
X
X	sprintf(rchar, "%3.0f%%", (float) (100.0 * r / MAX_INTENSITY));
X	back_r_label = mkact(pnl_label);
X	back_r_label -> label = rchar;
X	back_r_label -> y = 3.05;
X	addact(back_r_label, back_color_panel);
X
X	sprintf(gchar, "%3.0f%%", (float) (100.0 * g / MAX_INTENSITY));
X	back_g_label = mkact(pnl_label);
X	back_g_label -> label = gchar;
X	back_g_label -> x = 1.0;
X	back_g_label -> y = 3.05;
X	addact(back_g_label, back_color_panel);
X
X	sprintf(bchar, "%3.0f%%", (float) (100.0 * b / MAX_INTENSITY));
X	back_b_label = mkact(pnl_label);
X	back_b_label -> label = bchar;
X	back_b_label -> x = 2.0;
X	back_b_label -> y = 3.05;
X	addact(back_b_label, back_color_panel);
X
X	back_r_slider = mkact(pnl_slider);
X	back_r_slider -> label = "R";
X	back_r_slider -> minval = 0.0;
X	back_r_slider -> maxval = MAX_INTENSITY;
X	back_r_slider -> val = (float) r;
X	back_r_slider -> h = 3.0;
X	back_r_slider -> u = (char *) back_r_label;
X	back_r_slider -> activefunc = update_back_color;
X	addact(back_r_slider, back_color_panel);
X
X	back_g_slider = mkact(pnl_slider);
X	back_g_slider -> label = "G";
X	back_g_slider -> minval = 0.0;
X	back_g_slider -> maxval = MAX_INTENSITY;
X	back_g_slider -> val = (float) g;
X	back_g_slider -> x = 1.0;
X	back_g_slider -> h = 3.0;
X	back_g_slider -> u = (char *) back_g_label;
X	back_g_slider -> activefunc = update_back_color;
X	addact(back_g_slider, back_color_panel);
X
X	back_b_slider = mkact(pnl_slider);
X	back_b_slider -> label = "B";
X	back_b_slider -> minval = 0.0;
X	back_b_slider -> maxval = MAX_INTENSITY;
X	back_b_slider -> val = (float) b;
X	back_b_slider -> x = 2.0;
X	back_b_slider -> h = 3.0;
X	back_b_slider -> u = (char *) back_b_label;
X	back_b_slider -> activefunc = update_back_color;
X	addact(back_b_slider, back_color_panel);
X
X	pal = mkact(pnl_palette);
X	sprintf(cbuf, "Index = %4d", BACK_COLOR_INDEX);
X	pal -> label = cbuf;
X	pal -> minval = (float) BACK_COLOR_INDEX;
X	pal -> maxval = (float) BACK_COLOR_INDEX;
X	pal -> y = 4.0;
X	pal -> w = 3.0;
X	pal -> h = 3.0;
X	addact(pal, back_color_panel);
X
X	map = mkact(pnl_palette);
X	map -> minval = 0.0;
X	map -> maxval = 1023.0;
X	map -> x = -1.0;
X	map -> activefunc = set_cur_index;
X	addact(map, back_color_panel);
X
X
X}
X
Xvoid update_back_color(a)
XActuator	*a;
X{
X	switch (*a->label)
X	{
X		case 'R':
X			back_r = a -> val;
X			break;
X			
X		case 'G':
X			back_g = a -> val;
X			break;
X			
X		case 'B':
X			back_b = a -> val;
X			break;
X
X		default:
X			return;
X	}
X
X	mapcolor(	(Colorindex) cur_index,
X			(Colorindex) back_r,
X			(Colorindex) back_g,
X			(Colorindex) back_b);
X
X	sprintf(((Actuator *)(a -> u)) -> label, "%3.0f%%",
X		(100.0 * a -> val / MAX_INTENSITY));
X	fixact(a -> u);
X
X}
X
X
Xvoid set_cur_index(a)
XActuator	*a;
X{
X	extern int		cur_index;
X
X	static char		rchar[10];
X	static char		gchar[10];
X	static char		bchar[10];
X	static char		cbuf[20];
X
X	short			r;
X	short			g;
X	short			b;
X
X	extern float	back_r;
X	extern float	back_g;
X	extern float	back_b;
X
X	extern Actuator	*back_r_label;
X	extern Actuator	*back_g_label;
X	extern Actuator	*back_b_label;
X	extern Actuator	*back_r_slider;
X	extern Actuator	*back_g_slider;
X	extern Actuator	*back_b_slider;
X
X	cur_index = (int) (pal -> minval = pal -> maxval = a -> val);
X	sprintf(cbuf, "Index = %4d", cur_index);
X	pal->label = cbuf;
X	fixact(pal);
X
X	getmcolor((Colorindex) cur_index, &r, &g, &b);
X
X	back_r_slider->val = back_r = (float) r;
X	back_g_slider->val = back_g = (float) g;
X	back_b_slider->val = back_b = (float) b;
X	fixact(back_r_slider);
X      fixact(back_g_slider);
X      fixact(back_b_slider);
X
X	sprintf(rchar, "%3.0f%%", (100.0 * back_r / MAX_INTENSITY));
X	back_r_label -> label = rchar;
X	fixact(back_r_label);
X
X	sprintf(gchar, "%3.0f%%", (100.0 * back_g / MAX_INTENSITY));
X	back_g_label -> label = gchar;
X	fixact(back_g_label);
X
X	sprintf(bchar, "%3.0f%%", (100.0 * back_b / MAX_INTENSITY));
X	back_b_label -> label = bchar;
X	fixact(back_b_label);
X
X}
SHAR_EOF
chmod 0644 demo24.c || echo "restore of demo24.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo25.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *d1, *d2, *b1, *b2, *b3;
X
XPanel
X*defpanel();
X
Xmain() 
X{
XActuator *a;
XPanel *panel;
X
X    foreground();
X    winopen("demo");
X
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    panel=defpanel();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) {
X	    exit(0);
X	}
X
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X
X	pushmatrix();
X	translate(d1->val,d2->val,0.0);
X	color(BLACK);
X	clear();
X	color(WHITE);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="demo";
X    panel->ppu=50.0;
X
X    d1=mkact(pnl_dial);
X    d1->label="y position";
X    d1->x= -2.0;
X    d1->y= 1.5;
X    d1->minval= -1.0;
X    d1->maxval=1.0;
X    addact(d1, panel);
X
X    d2=mkact(pnl_dial);
X    d2->label="x position";
X    d2->x= -2.0;
X    d2->y=0.0;
X    d2->minval= -1.0;
X    d2->maxval=1.0;
X    addact(d2, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo25.c || echo "restore of demo25.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo26.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XPanel
X*defpanel();
X
Xmain() 
X{
X  Actuator *a;
X  Panel *panel;
X  
X  foreground();
X  noport();
X  winopen("demo");
X  
X  doublebuffer();
X  gconfig();
X  
X  ortho2(-1.0,1.0,-1.0,1.0);
X  
X  panel=defpanel();
X  
X  for (;;) {
X    dopanel();
X    swapbuffers();
X  }
X}
X
X#define MKBIGBUTTON()	\
X  a=mkact(pnl_wide_button);	\
X  a->w=1.0-PNL_DIM_1;		\
X  a->h=1.0-PNL_DIM_1;		\
X  a->x=x;			\
X  a->y=(y-=d);			\
X  addact(a, p)
X
X#define MKDIAL()	\
X  a=mkact(pnl_dial);	\
X  a->x=(x+=d);			\
X  a->y=y;			\
X  addact(a, p)
X
XPanel
X*defpanel()
X{
X  Actuator *a;
X  Panel *p;
X  Coord y, x, d=1.0;
X
X  p=mkpanel();
X  p->label="demo";
X  p->ppu=50.0;
X
X  x=0.0;
X  y=0.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x=1.0;
X  y=1.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x=2.0;
X  y=1.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x=3.0;
X  y=1.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x=4.0;
X  y=1.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x=5.0;
X  y=0.0;
X
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X  MKBIGBUTTON();
X
X  x= -1.0;
X  y= -6.0;
X
X  MKDIAL();
X  MKDIAL();
X  MKDIAL();
X  MKDIAL();
X  MKDIAL();
X  MKDIAL();
X
X  return p;
X}
X
SHAR_EOF
chmod 0644 demo26.c || echo "restore of demo26.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo3.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *b1, *b2, *b3;
X
XPanel
X*defpanel1(), *defpanel2();
X
Xmain() 
X{
XActuator *a;
XPanel *panel1;
XPanel *panel2;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) {
X	    exit(0);
X	}
X
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X
X	pushmatrix();
X	translate(s1->val,s2->val,0.0);
X	color(BLACK);
X	clear();
X	color(WHITE);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel1()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel1";
X    panel->ppu=50.0;
X
X    s1=mkact(pnl_hslider);
X    s1->label="y position";
X    s1->x=1.0;
X    s1->y=0.0;
X    s1->minval= -1.0;
X    s1->maxval=1.0;
X    addact(s1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
XPanel
X*defpanel2()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel2";
X    panel->ppu=50.0;
X
X    s2=mkact(pnl_vslider);
X    s2->label="x position";
X    s2->x=0.0;
X    s2->y=0.0;
X    s2->minval= -1.0;
X    s2->maxval=1.0;
X    addact(s2, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo3.c || echo "restore of demo3.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo4.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *s1, *s2, *b1, *b2, *b3, *b4, *rb1, *rb2, *rb3;
X
XPanel
X*defpanel1(), *defpanel2(), *defpanel3();
X
Xmain() 
X{
XActuator *a;
XPanel *panel1;
XPanel *panel2;
Xshort col=RED;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X    defpanel3();
X
X    for (;;) {
X        a=dopanel();
X	if (a==b1) exit(0);
X	if (a==b4) dumppanel();
X	if (a==b2) {
X	    b3->val=b2->val;
X	    b3->dirtycnt=2;
X	}
X	if (a==rb1) col=CYAN;
X	if (a==rb2) col=GREEN;
X	if (a==rb3) col=RED;
X
X	pushmatrix();
X	translate(s1->val,s2->val,0.0);
X	color(BLACK);
X	clear();
X	color(col);
X	drawit();
X	swapbuffers();
X	popmatrix();
X    }
X}
X
X
Xdrawit()
X{
X    rectf(-.10,-.10,.10,.10);
X}
X
X
XPanel
X*defpanel1()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel one";
X    panel->ppu=50.0;
X
X    s1=mkact(pnl_hslider);
X    s1->label="y position";
X    s1->x=1.0;
X    s1->y=0.0;
X    s1->minval= -1.0;
X    s1->maxval=1.0;
X    addact(s1, panel);
X
X    b2=mkact(pnl_toggle_button);
X    b2->label="push me";
X    b2->x=1.0;
X    b2->y=1.5;
X    addact(b2, panel);
X
X    b3=mkact(pnl_toggle_button);
X    b3->label="I push myself";
X    b3->x=1.0;
X    b3->y=2.0;
X    addact(b3, panel);
X
X    return panel;
X}
X
XPanel
X*defpanel2()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel two";
X    panel->ppu=50.0;
X
X    s2=mkact(pnl_vslider);
X    s2->label="x position";
X    s2->x=0.0;
X    s2->y=0.0;
X    s2->minval= -1.0;
X    s2->maxval=1.0;
X    addact(s2, panel);
X
X    b4=mkact(pnl_button);
X    b4->label="dumppanel";
X    b4->x=1.0;
X    b4->y=1.5;
X    addact(b4, panel);
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    return panel;
X}
X
XPanel
X*defpanel3()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel three";
X    panel->ppu=50.0;
X
X    rb3=mkact(pnl_radio_button);
X    rb3->label="red";
X    rb3->x=1.0;
X    rb3->y=2.0;
X    rb3->val=1.0;
X    addact(rb3, panel);
X
X    rb2=mkact(pnl_radio_button);
X    rb2->label="green";
X    rb2->x=1.0;
X    rb2->y=1.5;
X    addact(rb2, panel);
X
X    rb1=mkact(pnl_radio_button);
X    rb1->label="cyan";
X    rb1->x=1.0;
X    rb1->y=1.0;
X    addact(rb1, panel);
X
X    return panel;
X}
X
SHAR_EOF
chmod 0644 demo4.c || echo "restore of demo4.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo5.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XActuator *sy, *sx, *sd, *b1, *b2, *b3, *b4, *rb1, *rb2, *rb3;
X
XPanel
X*defpanel1(), *defpanel2(), *defpanel3();
X
Xmain() 
X{
XActuator *a;
Xshort col=RED;
X
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X    defpanel3();
X
X    needredraw();
X
X    drawit(col);
X    swapbuffers();
X    drawit(col);
X
X    for (;;) {
X        a=dopanel();
X	if (userredraw()||a) {
Xredo:
X	    if (a==b1) exit(0);
X	    if (a==b4) dumppanel();
X	    if (a==rb1) col=CYAN;
X	    if (a==rb2) col=GREEN;
X	    if (a==rb3) col=RED;
X
X	    drawit(col);
X	    swapbuffers();
X
X	    if (a=dopanel()) goto redo;
X
X	    drawit(col);
X	    swapbuffers();
X	    drawit(col);
X	    swapbuffers();
X	}
X	swapbuffers();
X    }
X}
X
X
Xdrawit(col)
XColorindex col;
X{
XCoord x,y;
X
X    color(BLACK);
X    clear();
X    color(col);
X
X    for (x= -1.0;x<1.0;x+=sd->val)
X    for (y= -1.0;y<1.0;y+=sd->val) {
X	move2(sx->val,sy->val);
X	draw2(x,y);
X    }
X}
X
X
XPanel
X*defpanel1()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="position";
X
X    sy=mkact(pnl_vslider);
X    sy->label="y";
X    sy->x=0.0;
X    sy->y=0.0;
X    sy->minval= -1.0;
X    sy->maxval=1.0;
X    addact(sy, panel);
X
X    sx=mkact(pnl_hslider);
X    sx->label="x position i said - x position";
X    sx->x=0.0;
X    sx->y=1.0;
X    sx->minval= -1.0;
X    sx->maxval=1.0;
X    addact(sx, panel);
X}
X
XPanel
X*defpanel2()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="frob it";
X
X    sd=mkact(pnl_vslider);
X    sd->label="density";
X    sd->x=1.0;
X    sd->y=0.0;
X    sd->minval=0.01;
X    sd->maxval=0.2;
X    sd->val=0.1;
X    addact(sd, panel);
X}
X
XPanel
X*defpanel3()
X{
XPanel *panel;
X
X    panel=mkpanel();
X    panel->label="panel three";
X
X    b1=mkact(pnl_button);
X    b1->label="exit";
X    b1->x=1.0;
X    b1->y=1.0;
X    addact(b1, panel);
X
X    rb3=mkact(pnl_radio_button);
X    rb3->label="red";
X    rb3->x=1.0;
X    rb3->y=3.0;
X    rb3->val=1.0;
X    addact(rb3, panel);
X
X    rb2=mkact(pnl_radio_button);
X    rb2->label="green";
X    rb2->x=1.0;
X    rb2->y=2.5;
X    addact(rb2, panel);
X
X    rb1=mkact(pnl_radio_button);
X    rb1->label="cyan";
X    rb1->x=1.0;
X    rb1->y=2.0;
X    addact(rb1, panel);
X
X    endgroup(panel);
X}
SHAR_EOF
chmod 0644 demo5.c || echo "restore of demo5.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo6.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XPanel
X*defpanel1(), *defpanel2();
X
Xvoid (*drawfunc)();
Xvoid (*savedfunc)();
Xlong snorkseed;
Xshort col;
X
Xmain() 
X{
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X
X    needredraw();
X
X#ifdef IRIS_4D
X    (*drawfunc)();
X    for (;;) {
X	drawpanel();
X	if (userredraw()) (*drawfunc)();
X    }
X#else  IRIS_4D
X    (*drawfunc)();
X    (*drawfunc)();
X    for (;;) {
X	drawpanel();
X	if (userredraw()) {
X	    (*drawfunc)();
X	    (*drawfunc)();  /* must have even number here */
X	}
X	swapbuffers();
X    }
X#endif IRIS_4D
X}
X
Xvoid
Xsetcol(a)
XActuator *a;
X{
X    if (!strcmp(a->label,"green"))  col=GREEN;
X    if (!strcmp(a->label,"cyan"))   col=CYAN;
X    if (!strcmp(a->label,"red"))    col=RED;
X}
X
Xvoid
Xcleanexit()
X{
X    exit(0);
X}
X
Xvoid
Xdrawstar()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    move2(-0.6,-0.7);
X    draw2( 0.0, 0.7);
X    draw2( 0.6,-0.7);
X    draw2(-0.7, 0.2);
X    draw2( 0.7, 0.2);
X    draw2(-0.6,-0.7);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawcross()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    rect(-0.2,-0.7, 0.2, 0.7);
X    rect(-0.7,-0.2, 0.7, 0.2);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawsnork()
X{
Xint i;
Xfloat x,y;    
X
X    srand(snorkseed);
X
X    color(BLACK);
X    clear();
X    color(col);
X    move2(0.0,0.0);
X    for (i=0;i<100;i++) {
X	x=(float)(rand()%500-250)/275.0;
X	y=(float)(rand()%500-250)/275.0;
X	draw2(x,y);
X    }
X
X    swapbuffers();
X}
X
Xvoid setstar()	  { drawfunc=drawstar; }
Xvoid setcross()	  { drawfunc=drawcross; }
Xvoid setsnork()	  { drawfunc=drawsnork; }
Xvoid savefunc()   { savedfunc=drawfunc; }
Xvoid newsnork()	  { 
X    setsnork();
X    snorkseed+=3;
X}
Xvoid restorefunc() { 
Xprintf("restoring old drawfunc\n");
X    drawfunc=savedfunc;
X#ifdef IRIS_4D
X    (*drawfunc)();
X#else  IRIS_4D
X    (*drawfunc)();
X    (*drawfunc)();
X#endif IRIS_4D
X}
Xvoid setgreen()	  { col=GREEN; }
Xvoid setred()	  { col=RED; }
Xvoid setcyan()    { col=CYAN; }
X
XPanel
X*defpanel1()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="colors";
X
X    a=mkact(pnl_label);
X    a->label="color controls";
X    a->x=0.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_button);
X    a->label="exit";
X    a->x=1.0;
X    a->y=1.0;
X    a->labeltype=PNL_LABEL_BOTTOM;
X    a->downfunc=cleanexit;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="red";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setred;
X    a->val=1.0;
X    setred();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="green";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setgreen;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cyan";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setcyan;
X    addact(a, p);
X
X    endgroup(p);
X}
X
XPanel
X*defpanel2()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="shapes";
X
X    a=mkact(pnl_label);
X    a->label="shape controls";
X    a->x=0.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="star";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setstar;
X    a->val=1.0;
X    setstar();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cross";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setcross;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="snork";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setsnork;
X    addact(a, p);
X
X    endgroup(p);
X
X    a=mkact(pnl_button);
X    a->label="newsnork";
X    a->x=1.0;
X    a->y=1.5;
X    a->downfunc=savefunc;
X    a->activefunc=newsnork;
X    a->upfunc=restorefunc;
X    addact(a, p);
X}
X
SHAR_EOF
chmod 0644 demo6.c || echo "restore of demo6.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo7.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XPanel
X*defpanel1(), *defpanel2();
X
Xvoid (*drawfunc)();
Xvoid (*savedfunc)();
Xlong snorkseed;
Xshort col;
X
Xmain() 
X{
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X
X    needredraw();
X
X#ifdef IRIS_4D
X    (*drawfunc)();
X    for (;;) {
X        if (dopanel()) (*drawfunc)();
X	if (userredraw()) (*drawfunc)();
X    }
X#else  IRIS_4D
X    (*drawfunc)();
X    (*drawfunc)();
X    for (;;) {
X        if (dopanel()) {
X	    do {
X		(*drawfunc)();
X	    } while (dopanel());
X	    (*drawfunc)();
X	    drawpanel();
X	    (*drawfunc)();
X	    (*drawfunc)();
X
X /* must have even number here */
X	}
X	if (userredraw()) {
X	    (*drawfunc)();
X	    (*drawfunc)();  /* must have even number here */
X	}
X	swapbuffers();
X    }
X#endif IRIS_4D
X}
X
Xvoid
Xsetcol(a)
XActuator *a;
X{
X    if (!strcmp(a->label,"green"))  col=GREEN;
X    if (!strcmp(a->label,"cyan"))   col=CYAN;
X    if (!strcmp(a->label,"red"))    col=RED;
X}
X
Xvoid
Xcleanexit()
X{
X    exit(0);
X}
X
Xvoid
Xdrawstar()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    move2(-0.6,-0.7);
X    draw2( 0.0, 0.7);
X    draw2( 0.6,-0.7);
X    draw2(-0.7, 0.2);
X    draw2( 0.7, 0.2);
X    draw2(-0.6,-0.7);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawcross()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    rect(-0.2,-0.7, 0.2, 0.7);
X    rect(-0.7,-0.2, 0.7, 0.2);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawsnork()
X{
Xint i;
Xfloat x,y;    
X
X    srand(snorkseed);
X
X    color(BLACK);
X    clear();
X    color(col);
X    move2(0.0,0.0);
X    for (i=0;i<100;i++) {
X	x=(float)(rand()%500-250)/275.0;
X	y=(float)(rand()%500-250)/275.0;
X	draw2(x,y);
X    }
X
X    swapbuffers();
X}
X
Xvoid setstar()	  { drawfunc=drawstar; }
Xvoid setcross()	  { drawfunc=drawcross; }
Xvoid setsnork()	  { drawfunc=drawsnork; }
Xvoid savefunc()   { savedfunc=drawfunc; }
Xvoid newsnork()	  { 
X    setsnork();
X    snorkseed+=3;
X}
Xvoid restorefunc(a) { drawfunc=savedfunc; }
Xvoid setgreen()	  { col=GREEN; }
Xvoid setred()	  { col=RED; }
Xvoid setcyan()    { col=CYAN; }
X
XPanel
X*defpanel1()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="colors";
X
X    a=mkact(pnl_label);
X    a->label="color controls";
X    a->x=0.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_button);
X    a->label="exit";
X    a->x=1.0;
X    a->y=1.0;
X    a->labeltype=PNL_LABEL_BOTTOM;
X    a->downfunc=cleanexit;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="red";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setcol;
X    a->val=1.0;
X    setred();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="green";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setgreen;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cyan";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setcyan;
X    addact(a, p);
X
X    endgroup(p);
X}
X
XPanel
X*defpanel2()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="shapes";
X
X    a=mkact(pnl_label);
X    a->label="shape controls";
X    a->x=0.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="star";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setstar;
X    a->val=1.0;
X    setstar();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cross";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setcross;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="snork";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setsnork;
X    addact(a, p);
X
X    endgroup(p);
X
X    a=mkact(pnl_button);
X    a->label="newsnork";
X    a->x=1.0;
X    a->y=1.5;
X    a->downfunc=savefunc;
X    a->activefunc=newsnork;
X    a->upfunc=restorefunc;
X    addact(a, p);
X}
X
SHAR_EOF
chmod 0644 demo7.c || echo "restore of demo7.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo8.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include <device.h>
X#include "panel.h"
X
XPanel
X*defpanel1(), *defpanel2();
X
Xvoid (*drawfunc)();
Xvoid (*savedfunc)();
Xlong snorkseed;
Xshort col;
X
Xmain() 
X{
X    foreground();
X    winopen("demo");
X    doublebuffer();
X    gconfig();
X
X    ortho2(-1.0,1.0,-1.0,1.0);
X
X    defpanel1();
X    defpanel2();
X
X    needredraw();
X
X#ifdef IRIS_4D
X    (*drawfunc)();
X    for (;;) {
X        if (dopanel()) {
X	  do {
X	    (*drawfunc)();
X	  } while (dopanel());
X	  (*drawfunc)();
X	}
X	if (userredraw()) {
X	  reshapeviewport();
X	  ortho2(-1.0,1.0,-1.0,1.0);
X	  (*drawfunc)();
X	}
X    }
X#else  IRIS_4D
X    (*drawfunc)();
X    (*drawfunc)();
X    for (;;) {
X        if (dopanel()) {
X	    do {
X		(*drawfunc)();
X	    } while (dopanel());
X	    (*drawfunc)();
X	    drawpanel();
X	    (*drawfunc)();
X	    (*drawfunc)();
X
X /* must have even number here */
X	}
X	if (userredraw()) {
X	  reshapeviewport();
X	  ortho2(-1.0,1.0,-1.0,1.0);
X	  (*drawfunc)();
X	  (*drawfunc)();  /* must have even number here */
X	}
X	swapbuffers();
X    }
X#endif IRIS_4D
X}
X
Xvoid
Xsetcol(a)
XActuator *a;
X{
X    if (!strcmp(a->label,"green"))  col=GREEN;
X    if (!strcmp(a->label,"cyan"))   col=CYAN;
X    if (!strcmp(a->label,"red"))    col=RED;
X}
X
Xvoid
Xcleanexit()
X{
X    exit(0);
X}
X
Xvoid
Xdrawstar()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    move2(-0.6,-0.7);
X    draw2( 0.0, 0.7);
X    draw2( 0.6,-0.7);
X    draw2(-0.7, 0.2);
X    draw2( 0.7, 0.2);
X    draw2(-0.6,-0.7);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawcross()
X{
X    color(BLACK);
X    clear();
X    color(col);
X    rect(-0.2,-0.7, 0.2, 0.7);
X    rect(-0.7,-0.2, 0.7, 0.2);
X
X    swapbuffers();
X}
X
Xvoid
Xdrawsnork()
X{
Xint i;
Xfloat x,y;    
X
X    srand(snorkseed);
X
X    color(BLACK);
X    clear();
X    color(col);
X    move2(0.0,0.0);
X    for (i=0;i<100;i++) {
X	x=(float)(rand()%500-250)/275.0;
X	y=(float)(rand()%500-250)/275.0;
X	draw2(x,y);
X    }
X
X    swapbuffers();
X}
X
Xvoid setstar()	  { drawfunc=drawstar; }
Xvoid setcross()	  { drawfunc=drawcross; }
Xvoid setsnork()	  { drawfunc=drawsnork; }
Xvoid savefunc()   { savedfunc=drawfunc; }
Xvoid newsnork()	  { 
X    setsnork();
X    snorkseed+=3;
X}
Xvoid restorefunc(a) { drawfunc=savedfunc; }
Xvoid setgreen()	  { col=GREEN; }
Xvoid setred()	  { col=RED; }
Xvoid setcyan()    { col=CYAN; }
X
XPanel
X*defpanel1()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="colors";
X
X    a=mkact(pnl_label);
X    a->label="color controls";
X    a->x=1.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_wide_button);
X    a->label="exit";
X    a->x=1.0;
X    a->y=1.0;
X    a->downfunc=cleanexit;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="red";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setcol;
X    a->val=1.0;
X    setred();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="green";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setgreen;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cyan";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setcyan;
X    addact(a, p);
X
X    endgroup(p);
X}
X
XPanel
X*defpanel2()
X{
XPanel *p;
XActuator *a;
X
X    p=mkpanel();
X    p->label="shapes";
X
X    a=mkact(pnl_label);
X    a->label="shape controls";
X    a->x=1.0;
X    a->y=4.0;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="star";
X    a->x=1.0;
X    a->y=3.0;
X    a->downfunc=setstar;
X    a->val=1.0;
X    setstar();
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="cross";
X    a->x=1.0;
X    a->y=2.5;
X    a->downfunc=setcross;
X    addact(a, p);
X
X    a=mkact(pnl_radio_button);
X    a->label="snork";
X    a->x=1.0;
X    a->y=2.0;
X    a->downfunc=setsnork;
X    addact(a, p);
X
X    endgroup(p);
X
X    a=mkact(pnl_wide_button);
X    a->label="make new snorks";
X    a->w=4.0;
X    a->x=1.0;
X    a->y=1.0;
X    a->downfunc=savefunc;
X    a->activefunc=newsnork;
X    a->upfunc=restorefunc;
X    addact(a, p);
X}
X
SHAR_EOF
chmod 0644 demo8.c || echo "restore of demo8.c fails"
sed 's/^X//' << 'SHAR_EOF' > demo9.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <gl.h>
X#include "panel.h"
X
Xstruct view    /* user-defined struct with an Actuator as its FIRST element */
X{
X  Actuator act;
X  float x_angle;
X  float y_angle;
X  float z_angle;
X};
X
X
Xfunc (v)
Xstruct view *v;	    /* here the parameter is a user-defined structure */
X{
X  printf("it is %f\n", v->x_angle);
X}
X
Xcallit (a)
XActuator *a;	    /* and here its an Actuator */
X{
X  (*a->downfunc)(a);
X}
X
Xmain()
X{
Xstruct view *v = PNL_MKUSERACT (view, pnl_button);
X
X  v->act.label   = "test";
X  v->x_angle = 10.0;
X  v->y_angle = 20.0;
X  v->z_angle = 30.0;
X  
X  v->act.downfunc = (void (*)()) func;
X
X  callit (v);
X}
X
X
SHAR_EOF
chmod 0644 demo9.c || echo "restore of demo9.c fails"
sed 's/^X//' << 'SHAR_EOF' > dial.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <math.h>
X#include <gl.h>
X#include "panel.h"
X
X#define FINE_CONTROL_FACTOR	0.05
X
X#define PNL_VAL_TO_WORLD(val, min, max, dist)     \
X  (((val)-(min))/((max)-(min))*(dist))
X
X#define PNL_WORLD_TO_VAL(x, min, max, dist)       \
X  ((x)/(dist)*((max)-(min))+(min))  
X
Xvoid _newvaldial(a,p,sx,sy)
X     Actuator *a;
X     Panel *p;
X     Screencoord sx,sy;
X{    
X  Dial *ad=(Dial *)a->data;
X  Coord wx, wy;
X  float theta, dtheta;
X  
X  if (!a->active) return;
X  
X  mapw2(p->vobj,sx,sy,&wx,&wy);
X  
X  theta = atan2(wx-a->x-a->w/2.0, wy-a->y-a->h/2.0);
X
X  if (pnl_justdown) {
X    ad->wsave = theta;
X    if (!pnl_controlkey)
X      a->val=PNL_WORLD_TO_VAL(theta, (a->minval+a->maxval)/2.0,
X			      a->maxval, ad->winds*PI);
X  }
X
X  dtheta=theta-ad->wsave;
X  if (dtheta> PI) dtheta-=2.0*PI;;
X  if (dtheta<-PI) dtheta+=2.0*PI;
X
X  if (pnl_controlkey)
X    a->val+=ad->finefactor
X      *PNL_WORLD_TO_VAL(dtheta, 0.0, a->maxval-a->minval, ad->winds*2.0*PI);
X  else
X    a->val+=PNL_WORLD_TO_VAL(dtheta, 0.0,
X			     a->maxval-a->minval, ad->winds*2.0*PI);
X  a->val=RANGE(a->val, a->maxval, a->minval);
X
X  ad->wsave=theta;
X}
X
Xvoid
X_drawdial(a, p)
XActuator *a;
XPanel *p;
X{
X  float thetadeg;
X  Dial *ad=(Dial *)a->data;
X
X  pushmatrix();
X  
X  translate(a->x,a->y,0.0);
X  
X  color(pnl_other_color);
X  rectf(0.0,0.0,a->w,a->h);
X  color(pnl_outline_color);
X  rect(0.0,0.0,a->w,a->h);
X  color(pnl_normal_color);
X  circf(a->w/2.0, a->h/2.0, MIN(a->w/2.0, a->h/2.0)-PNL_DIM_3);
X  color(pnl_outline_color);
X  circ(a->w/2.0, a->h/2.0, MIN(a->w/2.0, a->h/2.0)-PNL_DIM_3);
X
X  translate(a->w/2.0, a->h/2.0, 0.0);
X
X  thetadeg=PNL_VAL_TO_WORLD(a->val, a->minval, a->maxval,
X			    ad->winds*2.0*PI)*180.0/PI;
X  rot(-thetadeg+ad->winds*180.0+90.0, 'z');
X
X  color(pnl_highlight_color);
X  rectf(0.0,-PNL_DIM_4, MIN(a->w/2.0, a->h/2.0)-PNL_DIM_3, PNL_DIM_4);
X  color(pnl_outline_color);
X  rectf(0.0,-PNL_DIM_4, MIN(a->w/2.0, a->h/2.0)-PNL_DIM_3, PNL_DIM_4);
X  
X  popmatrix();
X  if (a->label) drawlabel(a, p);
X}
X
Xvoid
X_hitdial()
X{
X}
X
Xvoid
Xpnl_dial(a)
XActuator *a;
X{
X  Dial *ad;
X
X  a->type=PNL_DIAL;
X
X  a->data = alloc(sizeof(Dial));
X  a->datasize = sizeof(Dial);
X  ad=(Dial *)a->data;
X  ad->wsave=0.0;
X  ad->finefactor=FINE_CONTROL_FACTOR;
X  ad->winds=PNL_DIAL_WINDS;
X
X  a->labeltype=PNL_LABEL_BOTTOM;
X
X  a->w=PNL_DIAL_EDGE;
X  a->h=PNL_DIAL_EDGE;
X  a->newvalfunc=_newvaldial;
X  a->drawfunc=_drawdial;
X}
X
SHAR_EOF
chmod 0644 dial.c || echo "restore of dial.c fails"
sed 's/^X//' << 'SHAR_EOF' > ep.c &&
X/*
X *	this software is in the public domain, it may not be resold
X *	or relicensed.  Do not remove this notice.  Send modifications
X *	and requests for most recent version to:
X *
X *	Author:  David A. Tristram
X *		 NASA  Ames Research Center
X *		 MS 258-5
X *		 Moffett Field, CA  94035
X *		 415-694-4404
X *		 dat at orville.nas.nasa.gov
X */
X#include <math.h>
X#include <gl.h>
X#include <device.h>
X#include <panel.h>
X
X#define MAXCOLORS	4096	/* for simplicity just make the storage */
X				/* the size of the whole map */
X#define MARGIN		5
X#define WINSIZE		(YMAXSCREEN-(2*MARGIN)-PNL_TITLE_BAR_HEIGHT)
X#define NPNTS		128
X#define BASECOLOR	512
X#define FATLINEWIDTH	3
X#define NORMALLINEWIDTH 1
X#define SQRT3	1.7320508
X
X/* #define ABS(x)	((x)<0?-(x):(x))*/
X
Xlong	/* position and size of regularscreen window */
SHAR_EOF
echo "End of part 2, continue with part 3"
echo "3" > s2_seq_.tmp
exit 0



More information about the Comp.sys.sgi mailing list