Control* NarrowTool::CreateViewEntry (Selection* s, Editor* ed) { Control* ctrl = nil; Iterator i; if (s->Number() >= 1) { H_PopupMenu* popup = new H_PopupMenu; ctrl = popup; s->First(i); GraphicComp* kid = s->GetView(i)->GetGraphicComp(); RecurPopupInclude(ed, popup, kid); popup->LockPosition(); for (;!s->Done(i); s->Next(i)) { GraphicView* gv = s->GetView(i); GraphicComp* parent = gv->GetGraphicComp(); if (parent->IsA(SCENE_COMP) || parent->IsA(IGRAPHIC_COMPS)){ GraphicComp* mykid = nil; Iterator j(i); s->Next(j); if (!s->Done(j)) { mykid = (GraphicComp*) s->GetView(j)->GetGraphicComp(); } NavigateCmd* cmd = new NavigateCmd(ed, false, parent, mykid); popup->Include(new CommandItem(GetName(parent), Center, cmd)); } } } return ctrl; }
static Transformer* ComputeRel (Viewer* v, Transformer* t) { Transformer* rel = new Transformer; GraphicComp* comp = v->GetGraphicView()->GetGraphicComp(); comp->GetGraphic()->TotalTransformation(*rel); rel->Postmultiply(t); return rel; }
GraphicComp* ImportCmd::Import (const char* filename) { GraphicComp* comp = nil; const char* creator = ReadCreator(filename); if (creator == nil || strcmp(creator, "idraw") == 0) { Catalog* catalog = unidraw->GetCatalog(); if (catalog->Valid(filename, (Component*&) comp)) { comp = (GraphicComp*) comp->Copy(); } else if (catalog->Retrieve(filename, (Component*&) comp)) { catalog->Forget(comp); } } else { if (strcmp(creator, "X11") == 0) { comp = XBitmap_Image(filename); } else if (strcmp(creator, "TIFF") == 0) { comp = TIFF_Image(filename); } else if ( strcmp(creator, "pgmtops") == 0 || strcmp(creator, "pnmtops") == 0 ) { comp = PGM_Image(filename); } else if (strcmp(creator, "ppmtops") == 0) { comp = PPM_Image(filename); } } return comp; }
Control* ExamineTool::CreatePropsEntry (Selection* s, Editor* ed) { Control* ctrl = nil; Iterator i; if (s->Number() > 1) { for (s->First(i); !s->Done(i); s->Next(i)) { GraphicComp* comp = s->GetView(i)->GetGraphicComp(); if (comp->IsA(INTERACTOR_COMP)) { if (ctrl == nil) { ctrl = new H_PullrightMenu( new Message("Props...", Center, 2, hfil) ); } Menu* m = (Menu*) ctrl; PropsCmd* cmd = new PropsCmd(ed, (InteractorComp*) comp); m->Include( new CommandItem(GetName(comp, _shift, false), Center, cmd) ); } } } else { s->First(i); GraphicComp* comp = s->GetView(i)->GetGraphicComp(); if (comp->IsA(INTERACTOR_COMP)) { ctrl = new CommandItem( "Props...", Center, new PropsCmd(ed, (InteractorComp*) comp) ); } } return ctrl; }
void DrawImportCmd::Execute () { GraphicComp* comps = PostDialog(); Clipboard* cb; if (comps != nil) { DrawImportPasteCmd* paste_cmd = new DrawImportPasteCmd(GetEditor(), new Clipboard(comps)); paste_cmd->Execute(); paste_cmd->Log(); if(!comps->IsA(FRAME_IDRAW_COMP) && !comps->IsA(DRAW_IDRAW_COMP)) { if (chooser_->centered()) GetEditor()->GetViewer()->Align(comps, /* Center */ 4); if (!chooser_->by_pathname()) { FrameUngroupCmd* ungroup_cmd = new FrameUngroupCmd(GetEditor()); ungroup_cmd->Execute(); MacroCmd* macro_cmd = new MacroCmd(GetEditor(), paste_cmd, ungroup_cmd); macro_cmd->Log(); } else { paste_cmd->Log(); } } else delete comps; } }
void OverlaysComp::Remove (Iterator& i) { UList* doomed = Elem(i); GraphicComp* comp = Comp(doomed); Graphic* g = comp->GetGraphic(); Next(i); _comps->Remove(doomed); if (g != nil) GetGraphic()->Remove(g); SetParent(comp, nil); delete doomed; }
void PostScriptViews::Update () { DeleteViews(); GraphicComp* comps = GetGraphicComp(); Iterator i; for (comps->First(i); !comps->Done(i); comps->Next(i)) { GraphicComp* comp = comps->GetComp(i); PostScriptView* psv = CreatePSView(comp); if (psv != nil) { _views->Append(new UList(psv)); } } }
void ViewerGraphic::Update () { GraphicComp* parent = (GraphicComp*) _view->GetGraphicComp()->GetParent(); if (parent != nil) { FullGraphic gs; totalGSGraphic(parent->GetGraphic(), gs); if (Different(this, &gs)) { Damage* damage = _view->GetViewer()->GetDamage(); damage->Incur(this); *(Graphic*)this = *(Graphic*)(&gs); damage->Incur(this); } } }
static NodeComp* node (Clipboard* cb, int index) { if (index == -1) return nil; Iterator i; int count = -1; for (cb->First(i); !cb->Done(i); cb->Next(i)) { GraphicComp* gcomp = cb->GetComp(i); if (gcomp->IsA(NODE_COMP)) { count++; if (count == index) return (NodeComp*)gcomp; } } return nil; }
void PrintCmd::Execute () { GraphicComp* comps = GetGraphicComp(); boolean ok; if (_dialog == nil) { _dialog = new PrintDialog; } do { _editor->InsertDialog(_dialog); boolean accepted = _dialog->Accept(); _editor->RemoveDialog(_dialog); if (!accepted) { break; } filebuf fbuf; char* tmpfilename; if (_dialog->ToPrinter()) { tmpfilename = tmpnam(nil); ok = fbuf.open(tmpfilename, IOS_OUT) != 0; } else { ok = fbuf.open((char*) _dialog->Choice(), IOS_OUT) != 0; } if (ok) { ostream out(&fbuf); ExternView* ev = (ExternView*) comps->Create(POSTSCRIPT_VIEW); comps->Attach(ev); ev->Update(); ok = ev->Emit(out); out.flush(); delete ev; if (_dialog->ToPrinter()) { ok = print(_dialog->Choice(), tmpfilename) == 0; } } if (!ok) { _dialog->SetTitle("Couldn't print!"); } } while (!ok); _dialog->SetTitle(""); }
Command* NarrowTool::InterpretManipulator(Manipulator* manip) { Command* ncmd = nil; if (!_popup) { Iterator i; NarrowManip* nmanip = (NarrowManip*) manip; Editor* ed = nmanip->GetViewer()->GetEditor(); GraphicComp* parent = nmanip->GetParent(); if ( parent != nil && (parent->IsA(SCENE_COMP) || parent->IsA(IGRAPHIC_COMPS)) ){ ncmd = new NavigateCmd(ed, false, parent, nmanip->GetKid()); } } return ncmd; }
void OverlaysComp::InsertAfter (Iterator i, GraphicComp* comp) { Graphic* g = comp->GetGraphic(); Graphic* parent; if (Elem(i)) Elem(i)->Prepend(new UList(comp)); else { cerr << "OverlaysComp::InsertAfter -- Iterator has nil value\n"; return; } if (g != nil) { Iterator j; parent = GetGraphic(); GraphicComp* comp = GetComp(i); if (comp) { parent->SetGraphic(comp->GetGraphic(), j); parent->InsertAfter(j, g); } } SetParent(comp, this); }
boolean DrawIdrawScript::Emit (ostream& out) { out << script_name() << "("; GraphicComp* comps = GetGraphicComp(); Iterator i; int num_edge = 0; int num_node = 0; for (comps->First(i); !comps->Done(i); comps->Next(i)) { GraphicComp* comp = comps->GetComp(i); if (comp->IsA(FRAME_COMP)) { Iterator j; for(comp->First(j); !comp->Done(j); comp->Next(j)) { GraphicComp* subcomp = comp->GetComp(j); if (subcomp->IsA(NODE_COMP)) { ((NodeComp*)subcomp)->index(num_node); num_node++; } else if (subcomp->IsA(EDGE_COMP)) num_edge++; } } } out << num_edge << "," << num_node; /* make list and output unique point lists */ boolean prevout = false; if (_pts_compacted) { _ptslist = new Clipboard(); prevout = EmitPts(out, _ptslist, prevout); } /* make list and output unique graphic states */ if (_gs_compacted) { _gslist = new Clipboard(); prevout = EmitGS(out, _gslist, prevout); } /* make list and output unique picture graphics */ if (_pic_compacted) { _piclist1 = new Clipboard(); _piclist2 = new Clipboard(); prevout = EmitPic(out, _piclist1, _piclist2, prevout); } /* output graphic components */ boolean status = true; First(i); if (!Done(i) ) { if (prevout) out << ","; out << "\n"; } for (; status && !Done(i); ) { ExternView* ev = GetView(i); Indent(out); status = ev->Definition(out); Next(i); if (!Done(i)) out << ",\n"; } out << "\n"; FullGS(out); Annotation(out); Attributes(out); out << ")\n"; return status; }
void DrawImportPasteCmd::Execute () { if(!_executed) { Clipboard* cb = GetClipboard(); Iterator it; cb->First(it); GraphicComp* gcomp = cb->GetComp(it); cb->Next(it); if(cb->Done(it) && gcomp->IsA(DRAW_IDRAW_COMP) || gcomp->IsA(FRAME_IDRAW_COMP)) { gcomp->First(it); /* move to background frame */ DrawEditor* ed = (DrawEditor*)GetEditor(); FrameNumberState* fnumstate = ed->framenumstate(); int origfnum = fnumstate->framenumber(); int currfnum = 0; Append(new MoveFrameCmd(ed, -origfnum, true /* allowbg */)); /* paste contents of background frame */ FrameComp* fcomp = (FrameComp*) (gcomp->GetComp(it)->IsA(FRAME_COMP) ? gcomp->GetComp(it) : nil); if (fcomp) { while(!gcomp->Done(it)) { gcomp->Remove(it); Clipboard* newcb = new Clipboard(); Iterator jt; fcomp->First(jt); while(!fcomp->Done(jt)) { newcb->Append(fcomp->GetComp(jt)); fcomp->Remove(jt); } Append(new PasteCmd(ed, newcb)); delete fcomp; /* while more frames move to next frame and paste (create new frame if necessary) */ if(!gcomp->Done(it)) { currfnum++; fcomp = (FrameComp*) (gcomp->GetComp(it)->IsA(FRAME_COMP) ? gcomp->GetComp(it) : nil); if(currfnum>=ed->NumFrames()) Append(new CreateMoveFrameCmd(ed)); else Append(new MoveFrameCmd(ed, 1, true /* allowbg */)); } } } /* move to original frame */ Append(new MoveFrameCmd(ed, origfnum-currfnum, true /* allowbg */)); } else { Append(new PasteCmd(GetEditor(), cb->Copy())); Iterator i; for (cb->First(i); !cb->Done(i); cb->Next(i)) { GraphicComp* gcomp = cb->GetComp(i); if (gcomp->IsA(EDGE_COMP)) { EdgeComp* comp = (EdgeComp*)gcomp; NodeComp* start = node(cb, comp->GetStartNode()); NodeComp* end = node(cb, comp->GetEndNode()); EdgeConnectCmd* cmd = new EdgeConnectCmd(GetEditor(), comp, start, end); Append(cmd); } } } } MacroCmd::Execute(); _executed = 1; }