|
|
1.1 root 1: /*% cyntax -j % && 3cc -go #.m %
2: * movy -- jerq movie editor
3: */
4: #include <jerq.h>
5: #include <jerqio.h>
6: #define NWIN 40
7: struct win{
8: Bitmap *image;
9: struct winfns *f;
10: void *private;
11: }win[NWIN];
12: int nwin=0;
13: struct winfns{
14: int (*input)();
15: int (*output)();
16: };
17: int nframe=0;
18: main(){
19: register i;
20: request(KBD|MOUSE);
21: for(;;){
22: if(button3())
23: menu3();
24: if(nwin)
25: (*win[0].f->input)(&win[0]);
26: for(i=0;i!=nwin;i++)
27: (*win[i].f->output)(&win[i]);
28: wait(CPU);
29: }
30: }
31: #include <menu.h>
32: /*
33: * Button 3 menu:
34: * M3 M3new M3frame
35: * +-------+ +--------+
36: * |New ->|-----> |playback|
37: * |Delete | |exposure| +---+
38: * |Move | |frame ->|----> | 1 |
39: * |Exit | +--------+ | 2 |
40: * +-------+ | 3 |
41: * | 4 |
42: * | . |
43: * | . |
44: * | . |
45: * +---+
46: */
47: M3framegen(n){
48: static NMitem item;
49: static char name[10]={0, 0, 0, 0, 0, HitFrame};
50: if(++n<1 || nframe<n)
51: item.text=0;
52: else{
53: sprintf(name, "%d", n);
54: item.text=name;
55: item.data=n;
56: }
57: return &item;
58: }
59: NMenu M3frame={0, M3framegen};
60: NMitem M3newitems={
61: {"playback", 0, 0, 0, 0, HitPlayback},
62: {"exposure", 0, 0, 0, 0, HitExposure},
63: {"frame, 0, M3frame},
64: 0
65: };
66: NMenu M3new={M3newitems};
67: NMitem M3items[]={
68: {"New", 0, M3new},
69: {"Delete", 0, 0, 0, 0, HitDelete},
70: {"Move", 0, 0, 0, 0, HitMove},
71: {"Exit", 0, 0, 0, 0, HitExit},
72: 0
73: };
74: NMenu M3={M3items};
75: menu3(){
76: mhit(&M3, 3);
77: }
78: cursswitch(t);
79: return button(b);
80: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.