/* Generated by Together */ package SesameGUI; import java.awt.Graphics2D; import java.awt.*; import java.awt.geom.*; import java.text.NumberFormat; import java.awt.font.FontRenderContext; public class AbsoluteHorizontalScale extends HorizontalScale { public AbsoluteHorizontalScale(SpectrumView view) { super(view); } public void draw(Graphics2D g) { g.setPaint(Color.gray); double iter; DoubleWrapper paneStep = new DoubleWrapper(); DoubleWrapper xOrigin = new DoubleWrapper(); paneStep.value = getStep(); xOrigin.value = 0.0; real2Pane(paneStep); xOrigin.value = getView().getScaleY().getOrigin(); if (xOrigin.value < 0.0) xOrigin.value *= (-1.0); else // PRS xOrigin.value = 0.0; getView().getScaleY().real2Pane(xOrigin); g.draw(new Line2D.Double(getView().getLeftMargin(), xOrigin.value, getView().getRightMargin(), xOrigin.value)); double pos; double realStep; realStep = java.lang.Math.round(getStep()); paneStep = new DoubleWrapper(); while (realStep > 1.0 && (getUpperVisibleBound() - getLowerVisibleBound()) < realStep) realStep -= 1.0; // draw tickers NumberFormat formater = NumberFormat.getNumberInstance(); formater.setMaximumFractionDigits(1); FontRenderContext context = g.getFontRenderContext(); for (iter = getLowerVisibleBound() - realStep ; iter < getUpperVisibleBound(); iter += realStep) { double d; d = java.lang.Math.round(iter + realStep); paneStep.value = d - getLowerVisibleBound(); real2PaneAbsolute(paneStep); if (paneStep.value >= 0.0 && paneStep.value + getView().getLeftMargin() <= getView().getRightMargin()) { pos = paneStep.value + getView().getLeftMargin(); g.draw(new Line2D.Double(pos, xOrigin.value - 2, pos, xOrigin.value)); g.scale(1.0, -1.0); Rectangle2D bounds = g.getFont().getStringBounds(formater.format(d + getOrigOffset()), context); // PRS: aqui if (isLog()) { bounds = g.getFont().getStringBounds(formater.format(d / getSamplingRate()), context); g.drawString(formater.format(getTicker((int) (d / getSamplingRate()))), (int)(pos - (bounds.getWidth() / 2)), (int)((xOrigin.value - 14.0) * (-1.0))); } else g.drawString(formater.format(d + getOrigOffset()), (int)(pos - (bounds.getWidth() / 2)), (int)((xOrigin.value - 14.0) * (-1.0))); g.scale(1.0, -1.0); } } g.setPaint(Color.black); g.scale(1.0, -1.0); Rectangle2D bounds1 = g.getFont().getStringBounds(getLabel(), context); g.drawString(getLabel(), (int)(getView().getLeftMargin() + (((getView().getRightMargin() - getView().getLeftMargin()) / 2.0) - (bounds1.getWidth() / 2.0))), -6); g.scale(1.0, -1.0); } public void pane2Real(DoubleWrapper paneCoord) { setFactor(getLength() / (getView().getRightMargin() - getView().getLeftMargin())); paneCoord.value = (paneCoord.value * getFactor()) + getLowerVisibleBound(); } public void real2PaneAbsolute(DoubleWrapper realCoord) { setFactor(getLength() / (getView().getRightMargin() - getView().getLeftMargin())); realCoord.value /= getFactor(); } public void real2Pane(DoubleWrapper realCoord) { real2PaneAbsolute(realCoord); realCoord.value += getView().getLeftMargin(); } }