-+-+-+-+-+-+-+-+ START OF PART 202 -+-+-+-+-+-+-+-+ X ptk_printfterminal(terminalwindow, "char expansion = %f\n", exp); X ptk_printfterminal(terminalwindow, "char spacing = %f\n", spacing);`20 X ptk_printfterminal(terminalwindow, "char height = %f\n", size); X ptk_printfterminal(terminalwindow, "char up = %f %f\n",`20 X charup.x, charup.y); X break; X X case 8: /* ctm */ X ptk_inqtslctm(global, local); X ptk_printfterminal(terminalwindow, "global transformation:\n"); X for (i = 0; i <= 3; i++) X ptk_printfterminal(terminalwindow, "%f %f %f %f\n", global`5Bi`5D`5B0 V`5D, X global`5Bi`5D`5B1`5D, global`5Bi`5D`5B2`5D, global`5 VBi`5D`5B3`5D); `20 X ptk_printfterminal(terminalwindow, "local transformation:\n"); X for (i = 0; i <= 3; i++) X ptk_printfterminal(terminalwindow, "%f %f %f %f\n", local`5Bi`5D`5B0` V5D, X local`5Bi`5D`5B1`5D, local`5Bi`5D`5B2`5D, local`5Bi` V5D`5B3`5D); `20 X break; X X case 9: /* nameset */ X ptk_inqtslnameset(0, &nameset, &totsize); X nameset.number = totsize; X nameset.integers = (Pint *)calloc(totsize, sizeof(Pint)); X ptk_inqtslnameset(totsize, &nameset, &totsize); X ptk_printfterminal(terminalwindow, "nameset, number = %d\n", nameset.n Vumber); X ptk_printfterminal(terminalwindow, "nameset, integers = "); X for (i = 0; i < nameset.number; i++) X ptk_printfterminal(terminalwindow, " %d ", nameset.integers`5Bi`5D); X ptk_printfterminal(terminalwindow, "\n"); X free(nameset.integers); X break; X X case 10: /* ids */ X ptk_inqtslids(&pickid, &hlhsrid, &viewindex); X ptk_printfterminal(terminalwindow, "pick identifier = %d\n", pickid); X ptk_printfterminal(terminalwindow, "HLHSR identifier = %d\n", hlhsrid) V; X ptk_printfterminal(terminalwindow, "view index = %d\n", viewindex); X break; X X case 11: /* asf */ X attrid = ptk_readint(debugwsid, 1,`20 X "Input number of attribute type>", &echoarea); X ptk_inqtslattrasf(attrid, &asf); X ptk_printfterminal(terminalwindow, "asf = %d\n", asf); X break; X X case 12: /* bbox */ X ptk_inqboundingbox(&bbox); X ptk_printfterminal(terminalwindow, "bounding box:\n"); X ptk_printfterminal(terminalwindow, "xmin = %f, xmax = %f\n", bbox.xmin V, bbox.xmax); X ptk_printfterminal(terminalwindow, "ymin = %f, ymax = %f\n", bbox.ymin V, bbox.ymax); X ptk_printfterminal(terminalwindow, "zmin = %f, zmax = %f\n", bbox.zmin V, bbox.zmax); X break; X `7D X ptk_unpostmenu(debugwsid, tslmenuid); `20 X ptk_unpostmenu(debugwsid, tsl2menuid); `20 X predrawallstruct(debugwsid, PALWAYS); X`7D /* do_tslmenu */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void debugmainloop() X`7B X ptkboolean debugquit, trigger; X Pevent eventdata; X Ploc initloc, inputloc; X ptksgeneralinput geninput; X ptksmenuoutput menuoutput; X ptkswindowoutput windowoutput; X Plocrec locrec; X Plimit echo; X Plimit3 echo3; X Ppickpath initpath; X Ppickrec pickdatarec; X Ppick inputpick; X Pint err, i, stid; X Ppickpathel pathel`5B10`5D; X Pint themenu; X X debugquit = FALSE; X psetlocmode(debugwsid, 1, PREQUEST, PES_ECHO); X initloc.view_index = 0; X initloc.position = ptk_point(0.5, 0.5); X echo = ptk_limit(0.0, devx, 0.0, devy); X pinitloc(debugwsid, 1, &initloc, 1, &echo, &locrec); X psetlocmode(debugwsid, 1, PEVENT, PES_ECHO); X X echo3 = ptk_limit3(0.0, devx, 0.0, devy, 0.0, devz); X psetpickmode(debugwsid, 1, PREQUEST, PES_ECHO); X initpath.depth = 0; X#ifdef VMS X pickdatarec.pickpet1_datarec.aperature = 0.01; X#endif X pinitpick3(debugwsid, 1, PP_NOPICK, &initpath, 1, &echo3,`20 X &pickdatarec, PTOP_FIRST); X psetpickmode(debugwsid, 1, PEVENT, PES_ECHO); X inputpick.pick_path.pick_path = pathel; `20 X do X `7B X trigger = FALSE; X /* get locator and pick events */ X pawaitevent(0.0, &eventdata); X if ((eventdata.ws == debugwsid) &&`20 X ((eventdata.class == PI_LOCATOR) `7C`7C (eventdata.class == PI_PICK) V)) X `7B X trigger = TRUE; `20 X if (eventdata.class == PI_LOCATOR) X `7B X pgetloc(&inputloc); X pawaitevent(0.0, &eventdata); X pgetpick(10, &inputpick); X `7D X else X `7B X pgetpick(10, &inputpick);`20 X pawaitevent(0.0, &eventdata); X pgetloc(&inputloc);`20 X `7D X `7D X if (trigger) X `7B X geninput.inputclass = PI_LOCATOR; X geninput.ptkugeninput.locpoint = inputloc.position; X if (ptk_scanmenus(debugwsid, &geninput, &menuoutput)) X `7B X psetlocmode(debugwsid, 1, PREQUEST, PES_ECHO); X psetpickmode(debugwsid, 1, PREQUEST, PES_ECHO); X if (menuoutput.menuid == debugmenuid) X `7B X if (menuoutput.itemnum == 9) X debugquit = TRUE; X else X do_debugmenu(menuoutput.itemnum, &inputloc.position); X `7D X else X if (menuoutput.menuid == windowmenuid) X `7B X do_windowmenu(menuoutput.itemnum, &windowoutput); X curmenu = 0; X `7D X else X if (menuoutput.menuid == topologymenuid) X `7B X do_topologymenu(menuoutput.itemnum, &inputloc.position); X `7D X else X if (menuoutput.menuid == contentmenuid) X `7B X do_contentmenu(menuoutput.itemnum); X curmenu = 0; X `7D X else X if (menuoutput.menuid == structmenuid) X `7B X do_structmenu(menuoutput.itemnum, windowoutput.windowid); X `7D X else X if (menuoutput.menuid == terminalmenuid) X `7B X do_terminalmenu(menuoutput.itemnum); X curmenu = 0; X `7D X else X if (menuoutput.menuid == toptypemenuid) X `7B X do_toptypemenu(menuoutput.itemnum); X `7D X else X if (menuoutput.menuid == tslmenuid) X `7B X do_tslmenu(menuoutput.itemnum); X `7D X if (menuoutput.menuid == tsl2menuid) X `7B X do_tslmenu(menuoutput.itemnum + 6); X `7D X psetlocmode(debugwsid, 1, PEVENT, PES_ECHO); X psetpickmode(debugwsid, 1, PEVENT, PES_ECHO); X psetpickfilter(debugwsid, 1, &incl, &excl); X#ifdef SUN X pflushevents(debugwsid, PF_LOCATOR, 1); X pflushevents(debugwsid, PF_PICK, 1); X#endif X#ifdef VMS X pflushevents(debugwsid, PI_LOCATOR, 1); X pflushevents(debugwsid, PI_PICK, 1); X#endif X `7D X else X if (ptk_scanwindows(debugwsid, &geninput, &windowoutput)) X `7B X Pint err; X X if ((inputpick.status == PP_OK) &&`20 X ((windowoutput.windowid == topologywindow) `7C`7C`20 X (windowoutput.windowid == contentwindow))) X `7B `20 X /* topology node */ X /* change structure content window */ X if (inputpick.pick_path.pick_path`5B1`5D.struct_id == topologystid V) X `09 `7B X stid = inputpick.pick_path.pick_path`5B1`5D.pick_id; X ptk_settopologyhighlightnode(topology, stid); X /* update structure content */ X pemptystruct(structcontent); X ptk_openstruct(structcontent);`20 X paddnameset(&contentset); X ptk_structcontent(debugwsid, stid, 0, 0, 0, 1, &err); X currentcontent = stid; X premovenameset(&contentset); X drawbreakpts(stid); X drawtracepts(stid); X ptk_closestruct(); `20 X ptk_posttowindow(contentwindow, structcontent); X ptk_setcontentviewrange(contentwindow, 0, 10); X predrawallstruct(debugwsid, PALWAYS); X `7D X else X if (inputpick.pick_path.pick_path`5B1`5D.struct_id == structconten Vt) X `7B X Pint elemid, err; X Peltype eltype; X `20 X elemid = inputpick.pick_path.pick_path`5B1`5D.pick_id; X ptk_openstruct(currentcontent); X psetelemptr(elemid); X ptk_inqcurelemtype(&err, &eltype); X if (eltype == PEL_EXECUTE_STRUCTURE) X do_examine(currentcontent, elemid); X else X do_examine(getcopystid(currentcontent), elemid); X ptk_closestruct(); X `7D X `7D X else X if ((windowoutput.windowarea == PTKEWINDOWICON) `7C`7C X (windowoutput.windowarea == PTKEWINDOWBANNER)) X `7B X if (windowoutput.windowarea == PTKEWINDOWICON) X ptk_createtextmenuitem(windowmenuid, "open", 1, PEDIT_REPLACE,`2 V0 X &err); X else X ptk_createtextmenuitem(windowmenuid, "close", 1, PEDIT_REPLACE,` V20 X &err); X ptk_setmenuposition(windowmenuid, &inputloc.position); X ptk_unpostallmenu(debugwsid); X if ((curmenu != windowmenuid) `7C`7C X (curwindow != windowoutput.windowid)) X`09 `7B X ptk_postmenu(debugwsid, windowmenuid); X curmenu = windowmenuid; X curwindow = windowoutput.windowid; X `7D X else X`09 `7B X curmenu = 0; X curwindow = 0; X `7D X predrawallstruct(debugwsid, PALWAYS); X `7D X else X`09`7B X if (windowoutput.windowid == topologywindow) X themenu = topologymenuid; X else X if (windowoutput.windowid == contentwindow) X themenu = contentmenuid; X else X if ((windowoutput.windowid == structwindow) `7C`7C X (windowoutput.windowid == elementwindow)) X themenu = structmenuid; X else X if (windowoutput.windowid == terminalwindow) X themenu = terminalmenuid; X ptk_unpostallmenu(debugwsid); X if ((curmenu != themenu) `7C`7C`20 X (curwindow != windowoutput.windowid)) X`09 `7B X ptk_setmenuposition(themenu, &inputloc.position); X ptk_postmenu(debugwsid, themenu); X curmenu = themenu; X curwindow = windowoutput.windowid; X `7D X else X`09 `7B X curmenu = 0; X curwindow = 0; X `7D X predrawallstruct(debugwsid, PALWAYS); `20 X `7D X `7D X else X `7B `20 X curwindow = 0; X ptk_unpostallmenu(debugwsid); X if (curmenu != debugmenuid) X`09`7B X ptk_setmenuposition(debugmenuid, &inputloc.position); X ptk_postmenu(debugwsid, debugmenuid); X curmenu = debugmenuid; X `7D X else X curmenu = 0; X predrawallstruct(debugwsid, PALWAYS); X `7D X `7D X `7D while (!debugquit); X`7D /* debugmainloop */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_debugger(C(Pint) wsid, C(Pint) stid) XPreANSI(Pint wsid) XPreANSI(Pint stid) X/* X** \parambegin X** \param`7BPint`7D`7Bwsid`7D`7Bworkstation identifier`7D`7BIN`7D X** \param`7BPint`7D`7Bstid`7D`7Bstructure identifier`7D`7BIN`7D X** \paramend X** \blurb`7BThis function starts the PHIGS debugger on workstation X** \pardesc`7Bwsid`7D, and makes structure \pardesc`7Bstid`7D the root of th Ve`20 X** structure network to be debugged. This function requires hashtables X** "structureid", "label", "name", "viewindex", "topologyid", "menuid", X** "windowid".`7D X*/ X`7B X Ppoint pos, size; X Pchar ststr`5B20`5D, str`5B20`5D; X Pint lenstr, err, stcom, i, totsize; X Pintlst pmenus, pwindows; X Pstructpostlst structs; X Pdefmode defmode; X Pmod modmode; X Pdspsurf dspsurf; X Pvisualrep visualrep; X Pcobundl backrep; X ptksexeclist *ptr, *temp; X X /* inquire and set display update state */ X pinqdisplayupdatest(wsid, &err, &defmode, &modmode, &dspsurf, &visualrep); X psetdisplayupdatest(wsid, PWAIT, PNIVE);`20 X X /* inquire and set background colour */ X pinqcolourrep(wsid, 0, PSET, &err, &backrep); X ptk_setbackgroundcolourind(wsid, backgroundcolourind); X X /* inquire all posted menus and windows */ X ptk_inqpostedmenus(wsid, 0, &pmenus, &totsize, &err); X pmenus.integers = (Pint *)calloc(totsize, sizeof(Pint)); X ptk_inqpostedmenus(wsid, totsize, &pmenus, &totsize, &err); X pmenus.number = totsize; X ptk_inqpostedwindows(wsid, 0, &pwindows, &totsize, &err); X pwindows.integers = (Pint *)calloc(totsize, sizeof(Pint)); X ptk_inqpostedwindows(wsid, totsize, &pwindows, &totsize, &err); X pwindows.number = totsize; X /* clear menus and windows */ X for (i = 0; i < pmenus.number; i++) X ptk_unpostmenu(wsid, pmenus.integers`5Bi`5D); X for (i = 0; i < pwindows.number; i++) X ptk_unpostwindow(wsid, pwindows.integers`5Bi`5D); X X /* inquire all other posted structure */ X pinqpostedstruct(wsid, 0, 0, &err, &structs, &totsize); X structs.postings = (Pstructpost *)calloc(totsize, sizeof(Pstructpost)); X pinqpostedstruct(wsid, totsize, 0, &err, &structs, &totsize); X structs.number = totsize; X /* clear all posted structures */ X punpostallstruct(wsid); X X /* stack TSL */ X ptk_stacktsl(); X X /* clear workstation */ X X debugwsid = wsid; X debugrootstid = stid; X /* set up windows */ X pos = ptk_point(0.25, 0.25); X size = ptk_point(0.45, 0.45); `20 X X structwindow = ptk_stringtoint("windowid", "dbg$structwindow"); X topologywindow = ptk_stringtoint("windowid", "dbg$topologywindow"); X contentwindow = ptk_stringtoint("windowid", "dbg$contentwindow"); X terminalwindow = ptk_stringtoint("windowid", "dbg$terminalwindow"); X elementwindow = ptk_stringtoint("windowid", "dbg$elementwindow"); X ptk_createwindow(wsid, structwindow, &size, &pos, "structure"); X ptk_setwindowattrs(structwindow, windowtextfont, bannertextcolourind, X bannercolourind, windowcolourind, bannercolourind,`20 X tlcolourind, brcolourind); X pos = ptk_point(0.25, 0.75); X ptk_createwindow(wsid, topologywindow, &size, &pos, "topology"); X ptk_setwindowattrs(topologywindow, windowtextfont, bannertextcolourind, +-+-+-+-+-+-+-+- END OF PART 202 +-+-+-+-+-+-+-+-