X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fnet%2Fsf%2Fopenrocket%2Fgui%2Fscalefigure%2FAbstractScaleFigure.java;h=63d2f469838b03b5fb6c06c13ff385fb7b4e075e;hb=8320c04afa30e2aa0150adc870d02abeedb01066;hp=5a515ba765e15d1155dad79ed7632721e1ddbde4;hpb=6460090e9ec07b12234369583032d02d7c5ed3b1;p=debian%2Fopenrocket diff --git a/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java b/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java index 5a515ba7..63d2f469 100644 --- a/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java +++ b/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java @@ -13,41 +13,46 @@ import net.sf.openrocket.util.Prefs; public abstract class AbstractScaleFigure extends JPanel implements ScaleFigure { - - // Number of pixels to leave at edges when fitting figure - public static final int BORDER_PIXELS_WIDTH=30; - public static final int BORDER_PIXELS_HEIGHT=20; + // Number of pixels to leave at edges when fitting figure + private static final int DEFAULT_BORDER_PIXELS_WIDTH = 30; + private static final int DEFAULT_BORDER_PIXELS_HEIGHT = 20; - protected final double dpi; + protected final double dpi; + protected double scale = 1.0; protected double scaling = 1.0; + protected int borderPixelsWidth = DEFAULT_BORDER_PIXELS_WIDTH; + protected int borderPixelsHeight = DEFAULT_BORDER_PIXELS_HEIGHT; + protected final List listeners = new LinkedList(); - + public AbstractScaleFigure() { this.dpi = Prefs.getDPI(); this.scaling = 1.0; - this.scale = dpi/0.0254*scaling; + this.scale = dpi / 0.0254 * scaling; setBackground(Color.WHITE); setOpaque(true); } - + public abstract void updateFigure(); + public abstract double getFigureWidth(); + public abstract double getFigureHeight(); - + @Override public double getScaling() { return scaling; } - + @Override public double getAbsoluteScale() { return scale; @@ -64,49 +69,61 @@ public abstract class AbstractScaleFigure extends JPanel implements ScaleFigure if (Math.abs(this.scaling - scaling) < 0.01) return; this.scaling = scaling; - this.scale = dpi/0.0254*scaling; + this.scale = dpi / 0.0254 * scaling; updateFigure(); } @Override public void setScaling(Dimension bounds) { double zh = 1, zv = 1; - int w = bounds.width - 2*BORDER_PIXELS_WIDTH -20; - int h = bounds.height - 2*BORDER_PIXELS_HEIGHT -20; + int w = bounds.width - 2 * borderPixelsWidth - 20; + int h = bounds.height - 2 * borderPixelsHeight - 20; if (w < 10) w = 10; if (h < 10) h = 10; - zh = ((double)w) / getFigureWidth(); - zv = ((double)h) / getFigureHeight(); - - double s = Math.min(zh, zv)/dpi*0.0254 - 0.001; + zh = (w) / getFigureWidth(); + zv = (h) / getFigureHeight(); + + double s = Math.min(zh, zv) / dpi * 0.0254 - 0.001; setScaling(s); } - - + + @Override + public Dimension getBorderPixels() { + return new Dimension(borderPixelsWidth, borderPixelsHeight); + } + + @Override + public void setBorderPixels(int width, int height) { + this.borderPixelsWidth = width; + this.borderPixelsHeight = height; + } + + @Override public void addChangeListener(ChangeListener listener) { - listeners.add(0,listener); + listeners.add(0, listener); } - + @Override public void removeChangeListener(ChangeListener listener) { listeners.remove(listener); } private ChangeEvent changeEvent = null; + protected void fireChangeEvent() { ChangeListener[] list = listeners.toArray(new ChangeListener[0]); - for (ChangeListener l: list) { + for (ChangeListener l : list) { if (changeEvent == null) changeEvent = new ChangeEvent(this); l.stateChanged(changeEvent); } } - + }