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