#include #include #include #include #include"wdef.h" /* Notes on parameters in the following declarations * * The 'short' parameters are: * Setup Draw Hit Ctrl * undefined x-origin (main) x_ptr (rel) Pos of hit on bar * x-scaling y-origin (main) y_ptr (rel) Length of bar * y-scaling - keystroke Item no * - - event no pan/scroll */ /* Notes on parameters in the following declarations * * The 'short' parameters are: * x-pointer position (absolute) * y-pointer position (absolute) * keystroke * event number of keystroke */ int alit0_0(void); int alit0_1(WM_wwork_t *, WM_litm_t *, WM_wstat_t *); int alit0_2(WM_wwork_t *, WM_litm_t *, WM_wstat_t *); int alit0_3(WM_wwork_t *, WM_litm_t *, WM_wstat_t *); int alit1_0(void); static QD_TEXTI (txt0,"PE in C test 4"); static QD_TEXTI (txt1,"Quit"); static short app_list0[2] = { %%<&appw0>, 0 }; static struct WM_dappw appw0 = { 16474, /* xsize */ 16464, /* ysize */ 14, /* xorg */ 40, /* yorg */ 0, /* flag */ 4, /* borw */ 255, /* borc */ 4, /* papr */ %%<<&wm_sprite_hand>, /* pspr * */ 0, /* setr * */ 0, /* draw * */ %%, /* hit * */ 0, /* cntrl * */ 0, /* nxsc */ 0, /* nysc */ 9, /* skey */ 0 /* spr1 */ }; W_OBL (1,pobl0) { 84, /* xsize */ 10, /* ysize */ 0, /* xorg */ 0, /* yorg */ 0, /* type */ 0, /* spar */ {0,0,0}, /* t.ink, t.cwid, t.chgt */ %%<&txt0>, /* pobj * */ -1 }; W_INFW (1, infw0) { 16468, /* xsize */ 10, /* ysize */ 2, /* xorg */ 3, /* yorg */ 0, /* flag */ 0, /* borw */ 0, /* borc */ 220, /* papr */ %%<&pobl0>, /* pobl * */ -1 /* end */ }; static struct WM_action afun0_0 = {JSR,wm_actli,alit0_0}; static struct WM_action afun0_1 = {JSR,wm_actli,alit0_1}; static struct WM_action afun0_2 = {JSR,wm_actli,alit0_2}; static struct WM_action afun0_3 = {JSR,wm_actli,alit0_3}; W_LITM (4,litm0) { 24, 10, /* xsize, ysize */ 16474, 3, /* xorg, yorg */ 0, 0, /* xjst, yjst */ 0, 3, /* type, skey */ %%<&txt1>, /* pobj * */ 0, /* item */ %%<&afun0_0>, /* pact * */ 16, 14, /* xsize, ysize */ 4, 16, /* xorg, yorg */ 0, 0, /* xjst, yjst */ 2, 7, /* type, skey */ %%<<&wm_sprite_sleep>,/* pobj * */ 1, /* item */ %%<&afun0_1>, /* pact * */ 16, 14, /* xsize, ysize */ 32, 16, /* xorg, yorg */ 0, 0, /* xjst, yjst */ 2, 5, /* type, skey */ %%<<&wm_sprite_move>, /* pobj * */ 2, /* item */ %%<&afun0_2>, /* pact * */ 16, 14, /* xsize, ysize */ 60, 16, /* xorg, yorg */ 0, 0, /* xjst, yjst */ 2, 6, /* type, skey */ %%<<&wm_sprite_size>, /* pobj * */ 3, /* item */ %%<&afun0_3>, /* pact * */ -1 /* end */ }; static struct WM_action afun1_0 = {JSR,wm_actli,alit1_0}; W_LITM (1,litm1) { 16404, 12, /* xsize, ysize */ 0, 0, /* xorg, yorg */ 0, 0, /* xjst, yjst */ 0, 0, /* type, skey */ %%<&txt0>, /* pobj * */ 0, /* item */ %%<&afun1_0>, /* pact * */ -1 /* end */ }; static short num = 1; static struct WM_wstat ws[1] = {0}; WDEF (2,wd0) { 180, /* xsize */ 230, /* ysize */ 20, /* xorg */ 8, /* yorg */ 0, /* flag */ 1, /* borw */ 0, /* borc */ 7, /* papr */ 0, /* sprt * */ 1, /* curw */ 0, /* curc */ 7, /* uback */ 4, /* uink */ 0, /* ublob * */ 0, /* upatt * */ 7, /* aback */ 0, /* aink */ 0, /* ablob * */ 0, /* apatt * */ 0, /* sback */ 7, /* sink */ 0, /* sblob * */ 0, /* spatt * */ 0, /* help */ 16504, /* xsize */ 16514, /* ysize */ %%<&infw0>, /* pinfo * */ %%<&litm0>, /* plitem * */ %%<&app_list0>, /* pappl * */ 16384, /* xsize */ 12, /* ysize */ 0, /* pinfo * */ %%<&litm1>, /* plitem * */ 0, /* pappl * */ -1,0,0 /* end, ptrl, addr * */ }; %%<> /************************************** * END OF DECLARATIONS * **************************************/ void (*_consetup)() = NULL; char *_endmsg = NULL; char _prog_name[] = "PE in C tutorial 4"; void (*_cmd_params) () = NULL; /* No arguments are passed */ long (*_cmdchannels) () = NULL; /* Redirection is not used */ long (*_stackchannels) () = NULL; /* No parameters are passed */ WM_wwork_t *wwa0; chanid_t chid0; int err; int main(void) { /* make mode 8 mode 4 */ short mode, type; mode = -1; type = -1; mt_dmode(&mode, &type); if (mode == 8) { mode = 4; mt_dmode(&mode, &type); } if(getsze(&wd0, prtab, &ws[0], wd0_sizes, &num)) exit (ERR_NC); if(!(chid0 = fgetchid(stdout))) exit(ERR_NI); if(!wm_findv(chid0)) exit(ERR_NF); if (!(wwa0 = malloc(wd0_sizes[0]))) exit (ERR_OM); if (wm_setup(chid0,0,0,&wd0,&ws[0],&wwa0,0)) exit (ERR_NI); if(wm_prpos (wwa0,DEFXY)) exit(ERR_NI); if(wm_wdraw (wwa0)) exit(ERR_BO); while(!(err = wm_rptr(wwa0))) ; free(wwa0); exit (err); } /**************************** ESC action routine *******************************/ int alit0_0(void) { exit (EXIT_SUCCESS); } /*************************** sleep action routine ******************************/ int alit0_1(WM_wwork_t *wwk, WM_litm_t *li, WM_wstat_t * wst) { int err = 0; wst->evnt |= PT_ZZZZ; (do_sleep3(wwk->chid, wwk, 0, _prog_name, NULL, wd0_sizes)); return slitem(wwk, li->item, 0); } /**************************** move action routine ******************************/ int alit0_2(WM_wwork_t *wwk, WM_litm_t *li, WM_wstat_t * wst) { short dx,dy; int err; wst->evnt |= PT_WMOVE; if (err = wm_chwin(wwk, &dx, &dy)) return err; return slitem(wwk, li->item, 0); } /*************************** resize action routine *****************************/ int alit0_3(WM_wwork_t *wwk, WM_litm_t *li, WM_wstat_t * wst) { int err; short dx,dy; short ddx,ddy; wst->evnt |= PT_WSIZE; ddx = wwk->xsize +wwk->xorg + wd0.wdefa.xorg; ddy = wwk->ysize +wwk->yorg + wd0.wdefa.yorg; dx = 4*((dx + 3)/4); dy = 2*((dy + 2)/2); if (err = wm_chwin(wwk, &dx, &dy) < 0) return err; dx = EVEN(MIN(wd0.wdefa.xsize,MAX(wd0.wdefb[0].xsize & 0x3FFF, wwk->xsize-dx))); dy = MIN(wd0.wdefa.ysize,MAX(wd0.wdefb[0].ysize & 0x3FFF, wwk->ysize-dy)); if (err = wm_unset(wwk)) return err; if (err = wm_setup(chid0, dx, dy, &wd0, &wst[0], &wwk ,0)) return err; if (err = wm_prpos (wwk, ddx - dx, ddy - dy)) return err; if (err = wm_wdraw(wwk)) return err; return slitem(wwk, li->item, 0); } /****************** Dummy action routine for the sleep window *****************/ int alit1_0(void) { exit (EXIT_FAILURE); }