Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}    
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
    }
} 
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
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));
        }
    }
}
Exemplo n.º 8
0
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);
        }
    }
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 10
0
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("");
}
Exemplo n.º 11
0
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;
}
Exemplo n.º 12
0
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);
}
Exemplo n.º 13
0
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;
}
Exemplo n.º 14
-1
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;
}