示例#1
0
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;
}
示例#2
0
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();
}