|
|
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.