-+-+-+-+-+-+-+-+ START OF PART 274 -+-+-+-+-+-+-+-+ X ptk_setmenuposition(rot3d1, &pos); X ptk_postmenu(viewwsid, rot3d1); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot3d1) X`09 `7B X do_rotatevector(&menuoutput, &vpn); X updatemxvom(); X updatemxinvvom(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X`09 `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot3d1); X`7D /* do_vpn */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_vup() X`7B X Ppoint pos; X ptkboolean quit; X Pevent eventdata; X Ploc inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X Plocrec locrec; X X if (!inputmode) X `7B X vup.x = ptk_readfloat(viewwsid, 0.0, "Input vup, x (0.0) >", &echoarea); X vup.y = ptk_readfloat(viewwsid, 0.0, "Input vup, y (0.0) >", &echoarea); X vup.z = ptk_readfloat(viewwsid, 0.0, "Input vup, z (0.0) >", &echoarea); X updatemxvom(); X updatemxinvvom(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X else X `7B X ptk_setrotatortitle(rot3d1, "rotate vup"); X pos = ptk_point(0.15, 0.88); X ptk_setmenuposition(rot3d1, &pos); X ptk_postmenu(viewwsid, rot3d1); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot3d1) X `09 `7B X do_rotatevector(&menuoutput, &vup); X updatemxvom(); X updatemxinvvom(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot3d1); X`7D /* do_vup */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_prp() X`7B X Ppoint pos; X ptkboolean quit; X Pevent eventdata; X Ploc inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X Plocrec locrec; X Pviewmapping3 tempmap; X X if (!inputmode) X `7B X viewmap.prp.x = ptk_readfloat(viewwsid, 0.0, "Input prp, x (0.0) >",`20 X &echoarea); X viewmap.prp.y = ptk_readfloat(viewwsid, 0.0, "Input prp, y (0.0) >",`20 X &echoarea); X viewmap.prp.z = ptk_readfloat(viewwsid, 0.0, "Input prp, z (0.0) >",`20 X &echoarea); X updatemxvmm(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X else X `7B X ptk_setrotatortitle(rot3d1, "shift prp"); X pos = ptk_point(0.15, 0.88); X ptk_setmenuposition(rot3d1, &pos); X ptk_postmenu(viewwsid, rot3d1); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X tempmap = viewmap; X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot3d1) X `09 `7B X tempmap.prp = viewmap.prp; X do_shiftpoint3(&menuoutput, &tempmap.prp); X if (checkmapping(&tempmap)) X `09 `7B X viewmap.prp = tempmap.prp; X updatemxvmm(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `09 `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot3d1); X`7D /* do_prp */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_viewplane() X`7B X Ppoint pos; X ptkboolean quit; X Pevent eventdata; X Ploc inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X Plocrec locrec; X Pviewmapping3 tempmap; X X if (!inputmode) X `7B X tempmap = viewmap; X tempmap.view_plane = ptk_readfloat(viewwsid, 0.0,`20 X "Input view plane distance (0.0) >", &echoarea); X if (checkmapping(&tempmap)) X `7B X viewmap.view_plane = tempmap.view_plane; X updatemxviewplane(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `7D X else X `7B X ptk_setrotatortitle(rot1d, "shift plane"); X pos = ptk_point(0.1, 0.88); X ptk_setmenuposition(rot1d, &pos); X ptk_postmenu(viewwsid, rot1d); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X tempmap = viewmap; X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot1d) X `09 `7B X tempmap.view_plane = viewmap.view_plane; X switch (menuoutput.itemnum) X `09 `7B X case 1: X tempmap.view_plane += menuoutput.value.y * movefactor; X break; X `20 X case 2: X tempmap.view_plane -= (1.0 - menuoutput.value.y) * movefacto Vr; X break; X `7D X if (checkmapping(&tempmap)) X `09 `7B X viewmap.view_plane = tempmap.view_plane; X updatemxviewplane(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `09 `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot1d); X`7D /* do_viewplane */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_frontplane() X`7B X Ppoint pos; X ptkboolean quit; X Pevent eventdata; X Ploc inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X Plocrec locrec; X Pviewmapping3 tempmap; X X if (!inputmode) X `7B X tempmap = viewmap; X tempmap.front_plane = ptk_readfloat(viewwsid, 0.0,`20 X "Input front plane distance (0.0) >", &echoarea); X if (checkmapping(&tempmap)) X `7B X viewmap.front_plane = tempmap.front_plane; X updatemxviewplane(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `7D X else X `7B X ptk_setrotatortitle(rot1d, "shift plane"); X pos = ptk_point(0.1, 0.88); X ptk_setmenuposition(rot1d, &pos); X ptk_postmenu(viewwsid, rot1d); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X tempmap = viewmap; X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot1d) X `09 `7B X tempmap.front_plane = viewmap.front_plane; X switch (menuoutput.itemnum) X `09 `7B X case 1: X tempmap.front_plane += menuoutput.value.y * movefactor; X break; X `20 X case 2: X tempmap.front_plane -= (1.0 - menuoutput.value.y) *`20 X movefactor; X break; X `7D X if (checkmapping(&tempmap)) X `09 `7B X viewmap.front_plane = tempmap.front_plane; X updatemxvmm(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `09 `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot1d); X`7D /* do_frontplane */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_backplane() X`7B X Ppoint pos; X ptkboolean quit; X Pevent eventdata; X Ploc inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X Plocrec locrec; X Pviewmapping3 tempmap; X X if (!inputmode) X `7B X tempmap = viewmap; X tempmap.back_plane = ptk_readfloat(viewwsid, 0.0,`20 X "Input back plane distance (0.0) >", &echoarea); X if (checkmapping(&tempmap)) X `7B X viewmap.back_plane = tempmap.back_plane; X updatemxviewplane(); X updatemxprp(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `7D X else X `7B X ptk_setrotatortitle(rot1d, "shift plane"); X pos = ptk_point(0.1, 0.88); X ptk_setmenuposition(rot1d, &pos); X ptk_postmenu(viewwsid, rot1d); X predrawallstruct(viewwsid, PALWAYS); X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X tempmap = viewmap; X quit = FALSE; X do X `7B X pawaitevent(0.0, &eventdata); X if ((eventdata.class == PI_LOCATOR) && (eventdata.ws == viewwsid)) X `7B X pgetloc(&inputloc); X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(viewwsid, &geninput, &menuoutput)) X `7B X psetlocmode(viewwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == rot1d) X `09 `7B X tempmap.back_plane = viewmap.back_plane; X switch (menuoutput.itemnum) X `09 `7B X case 1: X tempmap.back_plane += menuoutput.value.y * movefactor; X break; X `20 X case 2: X tempmap.back_plane -= (1.0 - menuoutput.value.y) * movefacto Vr; X break; X `7D X if (checkmapping(&tempmap)) X `09 `7B X viewmap.back_plane = tempmap.back_plane; X updatemxvmm(); X updatemxviewvolume(); X updatedcwindow(); X predrawallstruct(viewwsid, PALWAYS); X `7D X `09 `7D X psetlocmode(viewwsid, 1, PEVENT, PES_ECHO); X `7D X else X `7B X quit = TRUE; X `7D X `7D X `7D while (!quit); X `7D X ptk_unpostmenu(viewwsid, rot1d); X`7D /* do_backplane */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_scalewindow(C(ptksmenuoutput *) menuout, C(Plimit *) window) XPreANSI(ptksmenuoutput *menuout) XPreANSI(Plimit *window) X`7B X Ppoint scale; X X switch (menuout->itemnum) X `7B X case 1: /* increase y */ X scale = ptk_point(1.0, 1.0 + (menuout->value.y * 0.1)); X break; X X case 2: /* decrease y */ X scale = ptk_point(1.0, 1.0 - ((1.0 - menuout->value.y) * 0.1)); X break; X X case 3: /* decrease x */ X scale = ptk_point(1.0 - ((1.0 - menuout->value.x) * 0.1), 1.0); X break; X X case 4: /* increase x */ X scale = ptk_point(1.0 + (menuout->value.x * 0.1), 1.0); X break; X `7D X ptk_scalelimits(&scale, window); X`7D /* do_scalewindow */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_shiftwindow(C(ptksmenuoutput *) menuout, C(Plimit *) window) XPreANSI(ptksmenuoutput *menuout) XPreANSI(Plimit *window) X`7B X Ppoint shift; X X switch (menuout->itemnum) X `7B X case 1: /* increase y */ X shift = ptk_point(0.0, (menuout->value.y * movefactor)); X break; X X case 2: /* decrease y */ X shift = ptk_point(0.0, -((1.0 - menuout->value.y) * movefactor)); X break; X X case 3: /* decrease x */ X shift = ptk_point(-((1.0 - menuout->value.x) * movefactor), 0.0); X break; X X case 4: /* increase x */ X shift = ptk_point((menuout->value.x * movefactor), 0.0); X break; X `7D X ptk_shiftlimits(&shift, window); X`7D /* do_shiftwindow */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_viewwindow() X`7B X Ppoint pos; X ptkboolean quit; +-+-+-+-+-+-+-+- END OF PART 274 +-+-+-+-+-+-+-+-