Package org.antlr.xjlib.appkit.gview.base

Examples of org.antlr.xjlib.appkit.gview.base.Vector2D


            }
        }
    }

    public void buildVerticalPath() {
        Vector2D start_ = link.getStartWithOffset();
        Vector2D end_ = link.getEndWithOffset();

        Vector2D ab = end_.sub(start_);
        Vector2D p1 = start_.add(new Vector2D(0, ab.getY()*0.5));
        Vector2D p2 = p1.add(new Vector2D(ab.getX(), 0));
        Vector2D p3 = p2.add(new Vector2D(0, ab.getY()*0.5));

        path.add(link.start);
        path.add(start_);
        path.add(p1);
        path.add(p2);
View Full Code Here


        link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, -LABEL_OFFSET));
    }

    public void buildHorizontalPath() {
        Vector2D start_ = link.getStartWithOffset();
        Vector2D end_ = link.getEndWithOffset();

        Vector2D ab = end_.sub(start_);
        Vector2D p1 = start_.add(new Vector2D(ab.getX()*0.5, 0));
        Vector2D p2 = p1.add(new Vector2D(0, ab.getY()));
        Vector2D p3 = p2.add(new Vector2D(ab.getX()*0.5, 0));

        path.add(link.start);
        path.add(start_);
        path.add(p1);
        path.add(p2);
View Full Code Here

        link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(LABEL_OFFSET, 0));
    }

    public void buildHorizontalRightPath(int direction) {
        Vector2D start_ = link.getStartWithOffset();
        Vector2D end_ = link.getEndWithOffset();

        Vector2D start = link.start;
        Vector2D end = link.end;

        double farest_x = Math.max(start_.x, end_.x)+40;


        if(direction == BOTTOM_TOP) {
            if(start_.y < end.y+GElementRect.DEFAULT_HEIGHT+link.outOffsetLength) {

                // Extend start out offset only if the end box is on the RIGHT
                double end_box_right_edge = end.x+GElementRect.DEFAULT_WIDTH*0.5;
                if(start_.x<=end_box_right_edge+5)
                    start_.y = end.y+GElementRect.DEFAULT_HEIGHT+link.outOffsetLength;
            }

            if(end_.y > start.y-GElementRect.DEFAULT_HEIGHT-link.outOffsetLength) {

                // Extend end out offset only if the start box is on the RIGHT
                double start_box_right_edge = start.x+GElementRect.DEFAULT_WIDTH*0.5;
                if(end_.x<=start_box_right_edge+5)
                    end_.y = start.y-GElementRect.DEFAULT_HEIGHT-link.outOffsetLength;
            }
        } else if(direction == TOP_BOTTOM) {
            if(start_.y > end.y-GElementRect.DEFAULT_HEIGHT-link.outOffsetLength) {

                // Extend start out offset only if the end box is on the RIGHT
                double end_box_right_edge = end.x+GElementRect.DEFAULT_WIDTH*0.5;
                if(start_.x<=end_box_right_edge+5)
                    start_.y = end.y-GElementRect.DEFAULT_HEIGHT-link.outOffsetLength;
            }

            if(end_.y < start.y+GElementRect.DEFAULT_HEIGHT+link.outOffsetLength) {

                // Extend end out offset only if the start box is on the RIGHT
                double start_box_right_edge = start.x+GElementRect.DEFAULT_WIDTH*0.5;
                if(end_.x<=start_box_right_edge+5)
                    end_.y = start.y+GElementRect.DEFAULT_HEIGHT+link.outOffsetLength;
            }
        }

        // 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));
    }
View Full Code Here

        else
            buildHorizontalLeftPath(true);
    }

    public void buildVerticalPath() {
        Vector2D start_ = link.getStartWithOffset();
        Vector2D end_ = link.getEndWithOffset();

        if(link.start.x > link.end.x+link.outOffsetLength && link.startDirection == Anchor2D.DIRECTION_LEFT) {
            path.add(link.start);
            path.add(link.end.x, link.start.y);
            path.add(link.end);

            link.label.setPosition(link.end.x+(link.start.x-link.end.x)*0.5, link.start.y-LABEL_OFFSET);
        } else if(link.start.x < link.end.x-link.outOffsetLength && link.startDirection == Anchor2D.DIRECTION_RIGHT) {
            path.add(link.start);
            path.add(link.end.x, link.start.y);
            path.add(link.end);

            link.label.setPosition(link.end.x+(link.start.x-link.end.x)*0.5, link.start.y-LABEL_OFFSET);
        } else if(link.start.y+GElementRect.DEFAULT_HEIGHT*0.5>end_.y-10) {
            Vector2D p1 = new Vector2D(link.end.x, link.start.y-GElementRect.DEFAULT_HEIGHT*0.5-10);
            Vector2D p2 = new Vector2D(start_.x, p1.y);

            path.add(link.start);
            path.add(start_);
            path.add(p2);
            path.add(p1);
            path.add(link.end);

            link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, -LABEL_OFFSET));
        } else {
            Vector2D ab = start_.sub(link.end);
            Vector2D p1 = new Vector2D(link.end.x, link.end.y+ab.y*0.5);
            Vector2D p2 = new Vector2D(p1.x+ab.x, p1.y);
            Vector2D p3 = new Vector2D(p2.x, start_.y);

            path.add(link.start);
            path.add(start_);
            path.add(p3);
            path.add(p2);
View Full Code Here

            link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(0, LABEL_OFFSET));
        }
    }

    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));
    }
View Full Code Here

        link.label.setPosition(p1.add(p2.sub(p1).stretch(0.5)).shift(LABEL_OFFSET, 0));
    }

    public void buildHorizontalLeftPath(boolean left) {
        Vector2D start_ = link.getStartWithOffset();
        Vector2D end_ = link.getEndWithOffset();

        double farest_x;
        double farest_y = Math.min(end_.y, start_.y-GElementRect.DEFAULT_HEIGHT*0.5-10);

        if(left)
            farest_x = Math.min(end_.x-GElementRect.DEFAULT_WIDTH*0.5-10, start_.x);
        else
            farest_x = Math.max(end_.x+GElementRect.DEFAULT_WIDTH*0.5+10, start_.x);

        Vector2D p1 = new Vector2D(end_.x, farest_y);
        Vector2D p2 = new Vector2D(farest_x, p1.y);
        Vector2D p3 = new Vector2D(p2.x, start_.y);

        path.add(link.start);
        path.add(p3);
        path.add(p2);
        path.add(p1);
View Full Code Here

    public Vector2D getPosition() {
        return position;
    }

    public void setPosition(double x, double y) {
        setPosition(new Vector2D(x, y));
    }
View Full Code Here

    public SArrow() {

    }

    public void setAnchor(double x, double y) {
        anchor = new Vector2D(x, y);
    }
View Full Code Here

    public void draw(Graphics g) {
        if(direction == null || anchor == null)
            return;

        Vector2D v = direction.copy();
        v.setLength(length);

        v.rotate(angle*0.5);
        g.drawLine((int)anchor.getX(), (int)anchor.getY(), (int)(anchor.getX()+v.getX()), (int)(anchor.getY()+v.getY()));

        v.rotate(-angle);
        g.drawLine((int)anchor.getX(), (int)anchor.getY(), (int)(anchor.getX()+v.getX()), (int)(anchor.getY()+v.getY()));
    }
View Full Code Here

        this.start = start.copy();
        computeOffsets();
    }

    public void setStart(double x, double y) {
        setStart(new Vector2D(x, y));
    }
View Full Code Here

TOP

Related Classes of org.antlr.xjlib.appkit.gview.base.Vector2D

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.