dat@ORVILLE.NAS.NASA.GOV ("David A. Tristram") (08/19/88)
#!/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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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