boolean ConnectManip::Manipulating (Event& e) { GraphicView* views = GetViewer()->GetGraphicView(); Rubberband* r = GetRubberband(); float cx, cy; if (r == nil) { return false; } if (e.eventType == MotionEvent) { _target = views->ConnectorIntersecting( e.x-SLOP, e.y-SLOP, e.x+SLOP, e.y+SLOP ); if (_target == nil) { r->Track(e.x, e.y); } else { _target->GetGraphic()->GetCenter(cx, cy); r->Track(Math::round(cx), Math::round(cy)); } } else if (e.eventType == UpEvent) { r->Erase(); return false; } return true; }
boolean VertexManip::Manipulating (Event& e) { Rubberband* r = GetRubberband(); if (r == nil) { return false; } if (e.eventType == MotionEvent) { Constrain(e); r->Track(e.x, e.y); } else if (e.eventType == DownEvent) { Constrain(e); if (e.button == LEFTMOUSE) { GetGrowingVertices()->AddVertex(e.x, e.y); _origx = e.x; _origy = e.y; } else if (e.button == MIDDLEMOUSE) { GetGrowingVertices()->AddVertex(e.x, e.y); return false; } else if (e.button == RIGHTMOUSE) { GetGrowingVertices()->RemoveVertex(); if (GetGrowingVertices()->Count()==0) return false; } } return true; }
void View::Track (Event& e, Rubberband& r) { r.Draw(); Listen(allEvents); do { if (e.eventType == MotionEvent) { r.Track(e.x, e.y); } Read(e); } while (e.eventType != UpEvent); Listen(input); r.Erase(); }
void RubberTool::execute() { sp_->bind_select(rb_); sp_->set_scene_tool(tool_); if (Oc::helpmode()) { rb_->help(); }else if (sel_) { sel_->execute(); } }
boolean ScribbleVertexManip::Manipulating (Event& e) { Rubberband* r = GetRubberband(); if (r == nil) { return false; } if (e.eventType == MotionEvent) { if (!_first) { GetGrowingVertices()->AddVertex(e.x, e.y); r->Track(e.x, e.y); } else _first = false; } else if (e.eventType == UpEvent) { return false; } return true; }