public void draw(Graphics2D g, Collection<Figure> c) { for (Figure f : c) { f.draw(g); } }
public BezierControlPointHandle(BezierFigure owner, int index, int coord, Figure transformOwner) { super(owner); this.index = index; this.controlPointIndex = coord; this.transformOwner = transformOwner; transformOwner.addFigureListener(this); }
/** * Convenience method for computing the total stroke miter limit from the * STROKE_MITER_LIMIT, and IS_STROKE_MITER_LIMIT factor. */ public static double getStrokeTotalMiterLimit(Figure f) { if (f.get(IS_STROKE_MITER_LIMIT_FACTOR)) { return f.get(STROKE_MITER_LIMIT) * f.get(STROKE_WIDTH); } else { return f.get(STROKE_MITER_LIMIT); } }
@Override public void redo() { super.redo(); f.willChange(); f.set(AttributeKey.this, value); f.changed(); } };
/** Sets ODG default values. */ public static void setDefaults(Figure f) { // Fill properties f.set(FILL_COLOR, Color.black); f.set(WINDING_RULE, WindingRule.NON_ZERO); // Stroke properties f.set(STROKE_COLOR, null); f.set(STROKE_WIDTH, 1d); f.set(STROKE_CAP, BasicStroke.CAP_BUTT); f.set(STROKE_JOIN, BasicStroke.JOIN_MITER); f.set(STROKE_MITER_LIMIT, 4d); f.set(IS_STROKE_MITER_LIMIT_FACTOR, false); f.set(STROKE_DASHES, null); f.set(STROKE_DASH_PHASE, 0d); f.set(IS_STROKE_DASH_FACTOR, false); } }
public void draw(Graphics2D g, Collection<Figure> children) { Rectangle2D clipBounds = g.getClipBounds(); if (clipBounds != null) { for (Figure f : children) { if (f.isVisible() && f.getDrawingArea().intersects(clipBounds)) { f.draw(g); } } } else { for (Figure f : children) { if (f.isVisible()) { f.draw(g); } } } }
protected Rectangle2D.Double getTransformedBounds() { Figure owner = getOwner(); Rectangle2D.Double bounds = owner.getBounds(); if (owner.get(TRANSFORM) != null) { Rectangle2D r = owner.get(TRANSFORM). createTransformedShape(bounds).getBounds2D(); bounds.x = r.getX(); bounds.y = r.getY(); bounds.width = r.getWidth(); bounds.height = r.getHeight(); } return bounds; }
public static void main(String[] args) { Figure[] figures = new Figure[3]; figures[0] = new Circle(); figures[1] = new Circle(); figures[2] = new Square(); for (Figure figure : figures) { figure.getColor(); figure.draw(); if (figure.getType() == FigureType.Circle) { ((Circle) figure).getRadius(); } } }
/** * Set a figure which renders this BasicCompositeFigure. The presentation * tasks for the BasicCompositeFigure are delegated to this presentation * figure. * * * * * * @param newPresentationFigure figure takes over the presentation tasks */ public void setPresentationFigure(@Nullable Figure newPresentationFigure) { if (this.presentationFigure != null) { this.presentationFigure.removeFigureListener(presentationFigureHandler); if (getDrawing() != null) { this.presentationFigure.removeNotify(getDrawing()); } } this.presentationFigure = newPresentationFigure; if (this.presentationFigure != null) { this.presentationFigure.addFigureListener(presentationFigureHandler); if (getDrawing() != null) { this.presentationFigure.addNotify(getDrawing()); } } // FIXME: We should calculate the layout here. }
public java.util.List<Figure> findFiguresWithin(Rectangle2D.Double bounds) { LinkedList<Figure> contained = new LinkedList<Figure>(); for (Figure f : children) { Rectangle2D r = f.getBounds(); if (f.get(TRANSFORM) != null) { r = f.get(TRANSFORM).createTransformedShape(r).getBounds2D(); } if (f.isVisible() && bounds.contains(r)) { contained.add(f); } } return contained; }
@Override public AbstractCompositeFigure clone() { AbstractCompositeFigure that = (AbstractCompositeFigure) super.clone(); that.children = new ArrayList<Figure>(); that.eventHandler = that.createEventHandler(); for (Figure thisChild : this.children) { Figure thatChild = (Figure) thisChild.clone(); that.children.add(thatChild); thatChild.addFigureListener(that.eventHandler); } return that; }
protected void updateActiveView() { DrawingView newValue = (view != null) ? // view : // ((editor != null && editor.getActiveView() != null) ? // editor.getActiveView() : null); DrawingView oldValue = activeView; if (activeView != null) { activeView.removePropertyChangeListener(eventHandler); activeView.removeFigureSelectionListener(eventHandler); if (figuresOfInterest != null) { for (Figure f : figuresOfInterest) { f.removeFigureListener(eventHandler); } } } activeView = newValue; if (activeView != null) { activeView.addPropertyChangeListener(eventHandler); activeView.addFigureSelectionListener(eventHandler); figuresOfInterest = getEditedFigures(); for (Figure f : figuresOfInterest) { f.addFigureListener(eventHandler); } } attributeRestoreData = null; updateAttributeEditor(); }
@Override public void mouseMoved(MouseEvent evt) { Point point = evt.getPoint(); updateCursor(editor.findView((Container) evt.getSource()), point); DrawingView view = editor.findView((Container) evt.getSource()); updateCursor(view, point); if (view == null || editor.getActiveView() != view) { clearHoverHandles(); } else { // Search first, if one of the selected figures contains // the current mouse location. Only then search for other // figures. This search sequence is consistent with the // search sequence of the SelectionTool. Figure figure = null; Point2D.Double p = view.viewToDrawing(point); for (Figure f : view.getSelectedFigures()) { if (f.contains(p)) { figure = f; } } if (figure == null) { figure = view.findFigure(point); Drawing drawing = view.getDrawing(); while (figure != null && !figure.isSelectable()) { figure = drawing.findFigureBehind(p, figure); } } updateHoverHandles(view, figure); } }
/** * Selects all selectable figures. */ @Override public void selectAll() { Set<Figure> oldSelection = new HashSet<Figure>(selectedFigures); selectedFigures.clear(); for (Figure figure : drawing.getChildren()) { if (figure.isSelectable()) { selectedFigures.add(figure); } } Set<Figure> newSelection = new HashSet<Figure>(selectedFigures); invalidateHandles(); fireSelectionChanged(oldSelection, newSelection); repaint(); }
if (isSelectBehindEnabled()) { for (Figure f : v.getSelectedFigures()) { if (f.contains(p)) { figure = f; break; if (figure != null && figure.isSelectable()) { if (DEBUG) { System.out.println("DelegationSelectionTool.handleDoubleClick by figure"); Tool figureTool = figure.getTool(p); if (figureTool == null) { figure = getDrawing().findFigureInside(p); if (figure != null) { figureTool = figure.getTool(p); figureTool.mousePressed(evt); } else { if (outerFigure.handleMouseClick(p, evt, getView())) { v.clearSelection(); v.addToSelection(outerFigure);
protected void updateHoverHandles(@Nullable DrawingView view, @Nullable Figure f) { if (f != hoverFigure) { Rectangle r = null; if (hoverFigure != null && hoverFigure.isSelectable()) { for (Handle h : hoverHandles) { if (r == null) { hoverHandles.addAll(hoverFigure.createHandles(-1)); for (Handle h : hoverHandles) { h.setView(view);
selectionChanged = true; newSelection.add(figure); figure.addFigureListener(handleInvalidator); if (handlesAreValid && getEditor() != null) { for (Handle h : figure.createHandles(detailLevel)) { h.setView(this); selectionHandles.add(h);
@Override public void basicAdd(int index, Figure figure) { children.add(index, figure); quadTree.add(figure, figure.getDrawingArea()); figure.addFigureListener(figureHandler); needsSorting = true; } @Override