Package nodebox.client.visualizer

Source Code of nodebox.client.visualizer.CanvasVisualizer

package nodebox.client.visualizer;

import com.google.common.collect.Iterables;
import nodebox.graphics.Canvas;
import nodebox.graphics.Grob;

import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

import static com.google.common.base.Preconditions.checkArgument;

public class CanvasVisualizer implements Visualizer {

    public static final CanvasVisualizer INSTANCE = new CanvasVisualizer();
    private Canvas firstCanvas;

    private CanvasVisualizer() {
    }

    public boolean accepts(Iterable<?> objects, Class listClass) {
        return nodebox.graphics.Canvas.class.isAssignableFrom(listClass);
    }

    public Rectangle2D getBounds(Iterable<?> objects) {
        Rectangle2D r = new Rectangle2D.Double();
        for (Object o : objects) {
            if (o instanceof Grob) {
                r.add(((Grob) o).getBounds().getRectangle2D());
            }
        }
        return r;
    }

    public Point2D getOffset(Iterable<?> objects, Dimension2D size) {
        return new Point2D.Double(size.getWidth() / 2, size.getHeight() / 2);
    }

    @SuppressWarnings("unchecked")
    public void draw(Graphics2D g, Iterable<?> objects) {
        firstCanvas = getFirstCanvas(objects);
        drawCanvasBounds(g, firstCanvas);
        GrobVisualizer.drawGrobs(g, (Iterable<Grob>) objects);
    }

    private void drawCanvasBounds(Graphics2D g, Canvas canvas) {
        Rectangle2D canvasBounds = canvas.getBounds().getRectangle2D();
        g.setColor(Color.DARK_GRAY);
        g.setStroke(new BasicStroke(1f));
        g.draw(canvasBounds);
    }

    private Canvas getFirstCanvas(Iterable<?> objects) {
        Canvas c = (Canvas) Iterables.getFirst(objects, null);
        return c != null ? c : new Canvas();
    }

}
TOP

Related Classes of nodebox.client.visualizer.CanvasVisualizer

TOP
Copyright © 2018 www.massapi.com. 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.