|
|
1.1 root 1: #include <CC/jerq.h>
2: #include "frame.pri"
3: #include "camera.pub"
4:
5: Movie.Movie()
6: {
7: start = 0;
8: showgrid = 1;
9: doshade = 0;
10: nx = ny = 0;
11: period = 0;
12: maxframe = 0;
13: N = 10;
14: m = this;
15: tdata = 0;
16: camera = new Camera(Drect, &bound);
17: ctr = bound.o;
18: string(&defont, "hold down buutton 2 near a control for help", &display,
19: add(bound.o, Pt(20, 20)), F_OR);
20: }
21:
22: void
23: Movie.read()
24: {
25: register n;
26: Point temp, orig;
27: Bitmap *tempb;
28:
29: for(wait(RCV); (n = rcvchar()) != 'Q'; wait(RCV))
30: switch(n)
31: {
32: case 'G':
33: showgrid = 1;
34: break;
35: case 'S':
36: doshade = 1;
37: break;
38: case 'X':
39: nx = getn();
40: break;
41: case 'Y':
42: ny = getn();
43: break;
44: case 'P':
45: period = getn();
46: break;
47: case 'n':
48: nframes = getn();
49: for(;;)
50: {
51: if(tempb = balloc(bound))
52: {
53: bfree(tempb);
54: break;
55: }
56: orig = (bound.o+bound.c)/2;
57: temp = bound.c - bound.o;
58: n = muldiv(temp.x, 95, 100);
59: if(temp.x <= temp.y)
60: temp.x = temp.y = n;
61: else
62: temp.x = n;
63: bound.o = orig - temp/2;
64: bound.c = bound.o + temp;
65: }
66: frames = (Frame *)alloc(nframes*sizeof(Frame));
67: break;
68: case 'F':
69: if(tdata == 0)
70: tdata = alloc(nx*ny*sizeof(Hcoord));
71: n = maxframe++;
72: frames[n].rd(nx*ny);
73: frames[n].view(camera->clat, camera->clon, camera->cdist,
74: camera->alat, camera->alon, camera->persp);
75: break;
76: case 'I':
77: floor = getn();
78: break;
79: }
80:
81: }
82:
83: void
84: Movie.showframe(int i)
85: {
86: rectf(&display, bound, F_CLR);
87: start = i;
88: show();
89: }
90:
91: char *
92: Movie.ft(int i)
93: {
94: return(frames[i].time);
95: }
96:
97: void
98: Movie.show()
99: {
100: frames[start].view(camera->clat, camera->clon, camera->cdist,
101: camera->alat, camera->alon, camera->persp);
102: }
103:
104: void
105: Movie.advance()
106: {
107: if(adv->val)
108: {
109: if(++start == maxframe) start = 0;
110: }
111: camera->advance();
112: }
113:
114: void
115: Movie.adjust()
116: {
117: camera->adjust();
118: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.