Search in sources :

Example 26 with Vector2D

use of org.antlr.xjlib.appkit.gview.base.Vector2D in project antlrworks by antlr.

the class SLinkElbowBottomBottom method buildHorizontalRightAbovePath.

public void buildHorizontalRightAbovePath() {
    Vector2D start_ = link.getStartWithOffset();
    Vector2D end_ = link.getEndWithOffset();
    Vector2D start = link.start;
    Vector2D end = link.end;
    double farest_x = end_.x + GElementRect.DEFAULT_WIDTH * 0.5 + 10;
    // Extend the link to the RIGHT
    Vector2D p1 = start_.add(new Vector2D(farest_x - start_.x, 0));
    Vector2D p2 = end_.add(new Vector2D(farest_x - end_.x, 0));
    path.add(start);
    path.add(start_);
    path.add(p1);
    path.add(p2);
    path.add(end_);
    path.add(end);
    link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(LABEL_OFFSET, 0));
}
Also used : Vector2D(org.antlr.xjlib.appkit.gview.base.Vector2D)

Example 27 with Vector2D

use of org.antlr.xjlib.appkit.gview.base.Vector2D in project antlrworks by antlr.

the class SLinkElbowBottomLeft method buildVerticalPath.

public void buildVerticalPath() {
    Vector2D start_ = link.getStartWithOffset();
    Vector2D end_ = link.getEndWithOffset();
    if (link.end.x > link.start.x + link.outOffsetLength && link.endDirection == Anchor2D.DIRECTION_LEFT) {
        path.add(link.start);
        path.add(link.start.x, link.end.y);
        path.add(link.end);
        link.label.setPosition(link.start.x + (link.end.x - link.start.x) * 0.5, link.end.y - LABEL_OFFSET);
    } else if (link.end.x < link.start.x - link.outOffsetLength && link.endDirection == Anchor2D.DIRECTION_RIGHT) {
        path.add(link.start);
        path.add(link.start.x, link.end.y);
        path.add(link.end);
        link.label.setPosition(link.start.x + (link.end.x - link.start.x) * 0.5, link.end.y - LABEL_OFFSET);
    } else if (link.end.y - GElementRect.DEFAULT_HEIGHT * 0.5 < start_.y + 10) {
        Vector2D p1 = new Vector2D(link.start.x, link.end.y + GElementRect.DEFAULT_HEIGHT * 0.5 + 10);
        Vector2D p2 = new Vector2D(end_.x, p1.y);
        path.add(link.start);
        path.add(p1);
        path.add(p2);
        path.add(end_);
        path.add(link.end);
        link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, LABEL_OFFSET));
    } else {
        Vector2D ab = end_.sub(link.start);
        Vector2D p1 = new Vector2D(link.start.x, link.start.y + ab.y * 0.5);
        Vector2D p2 = new Vector2D(p1.x + ab.x, p1.y);
        Vector2D p3 = new Vector2D(p2.x, end_.y);
        path.add(link.start);
        path.add(p1);
        path.add(p2);
        path.add(p3);
        path.add(end_);
        path.add(link.end);
        link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, -LABEL_OFFSET));
    }
}
Also used : Vector2D(org.antlr.xjlib.appkit.gview.base.Vector2D)

Example 28 with Vector2D

use of org.antlr.xjlib.appkit.gview.base.Vector2D in project antlrworks by antlr.

the class SLinkElbowBottomLeft method buildHorizontalLeftPath.

public void buildHorizontalLeftPath(boolean left) {
    Vector2D start_ = link.getStartWithOffset();
    Vector2D end_ = link.getEndWithOffset();
    double farest_x;
    double farest_y = Math.max(start_.y, end_.y + GElementRect.DEFAULT_HEIGHT * 0.5 + 10);
    if (left)
        farest_x = Math.min(start_.x - GElementRect.DEFAULT_WIDTH * 0.5 - 10, end_.x);
    else
        farest_x = Math.max(start_.x + GElementRect.DEFAULT_WIDTH * 0.5 + 10, end_.x);
    Vector2D p1 = new Vector2D(start_.x, farest_y);
    Vector2D p2 = new Vector2D(farest_x, p1.y);
    Vector2D p3 = new Vector2D(p2.x, end_.y);
    path.add(link.start);
    path.add(start_);
    path.add(p1);
    path.add(p2);
    path.add(p3);
    path.add(link.end);
    link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, LABEL_OFFSET));
}
Also used : Vector2D(org.antlr.xjlib.appkit.gview.base.Vector2D)

Example 29 with Vector2D

use of org.antlr.xjlib.appkit.gview.base.Vector2D in project antlrworks by antlr.

the class SLinkElbowLeftBottom method buildHorizontalPath.

public void buildHorizontalPath() {
    Vector2D start_ = link.getStartWithOffset();
    Vector2D end_ = link.getEndWithOffset();
    Vector2D ab = link.start.sub(end_);
    Vector2D p1 = new Vector2D(end_.x + ab.x * 0.5, end_.y);
    Vector2D p2 = new Vector2D(p1.x, start_.y);
    path.add(link.start);
    path.add(start_);
    path.add(p2);
    path.add(p1);
    path.add(end_);
    path.add(link.end);
    link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(LABEL_OFFSET, 0));
}
Also used : Vector2D(org.antlr.xjlib.appkit.gview.base.Vector2D)

Example 30 with Vector2D

use of org.antlr.xjlib.appkit.gview.base.Vector2D in project antlrworks by antlr.

the class GLink method toggleShape.

public void toggleShape() {
    switch(shape) {
        case SHAPE_ARC:
            shape = SHAPE_ELBOW;
            break;
        case SHAPE_ELBOW:
            shape = SHAPE_ARC;
            break;
        case SHAPE_BEZIER:
            // Cannot toggle a bezier link
            return;
    }
    double flateness = link.getFlateness();
    Vector2D direction = link.getDirection();
    link = createLinkInstance();
    link.setFlateness(flateness);
    link.setDirection(direction);
}
Also used : Vector2D(org.antlr.xjlib.appkit.gview.base.Vector2D)

Aggregations

Vector2D (org.antlr.xjlib.appkit.gview.base.Vector2D)40 GElement (org.antlr.xjlib.appkit.gview.object.GElement)2 GLink (org.antlr.xjlib.appkit.gview.object.GLink)2 QuadCurve2D (java.awt.geom.QuadCurve2D)1 ArrayList (java.util.ArrayList)1