package org.concord.energy2d.view; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import org.concord.energy2d.model.Thermostat; /** * @author Charles Xie * */ class ThermostatRenderer { private Stroke stroke1, stroke2; ThermostatRenderer() { stroke1 = new BasicStroke(3); stroke2 = new BasicStroke(1); } void render(Thermostat t, View2D v, Graphics2D g) { if (!v.isVisible()) return; if (t.getThermometer() != null) { Stroke oldStroke = g.getStroke(); Color oldColor = g.getColor(); g.setStroke(stroke1); g.setColor(Color.black); float x1 = v.convertPointToPixelXf(t.getThermometer().getX()); float y1 = v.convertPointToPixelYf(t.getThermometer().getY()); float x2 = v.convertPointToPixelXf(t.getPowerSource().getCenter().x); float y2 = v.convertPointToPixelYf(t.getPowerSource().getCenter().y); g.draw(new Line2D.Float(x1, y1, x1, y2)); g.draw(new Line2D.Float(x1, y2, x2, y2)); g.setStroke(stroke2); g.draw(new Ellipse2D.Float(x1 - 3, y1 - 3, 6, 6)); g.draw(new Ellipse2D.Float(x2 - 3, y2 - 3, 6, 6)); g.setColor(Color.white); g.draw(new Line2D.Float(x1, y1, x1, y2)); g.draw(new Line2D.Float(x1, y2, x2, y2)); g.fill(new Ellipse2D.Float(x1 - 2, y1 - 2, 4, 4)); g.fill(new Ellipse2D.Float(x2 - 2, y2 - 2, 4, 4)); g.setStroke(oldStroke); g.setColor(oldColor); } else { } } }