/******************************************************************************* * Copyright (c) 2008-2009 SWTChart project. All rights reserved. * * This code is distributed under the terms of the Eclipse Public License v1.0 * which is available at http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.swtchart.internal.compress; /** * Configuration for compression. */ public class CompressConfig { /** the width in pixels */ private long widthInPixels; /** the height in pixels */ private long heightInPixels; /** the lower value of X range */ private double xLowerValue; /** the upper value of X range */ private double xUpperValue; /** the lower value of Y range */ private double yLowerValue; /** the upper value of Y range */ private double yUpperValue; /** the state indicating whether the X axis is log scale */ private boolean xLogScale; /** the state indicating whether the Y axis is log scale */ private boolean yLogScale; /** * Constructor. */ public CompressConfig () { widthInPixels = 1024; heightInPixels = 512; xLogScale = false; yLogScale = false; } /** * Constructor. * * @param config * the configuration for compression */ public CompressConfig ( CompressConfig config ) { widthInPixels = config.getWidthInPixel (); heightInPixels = config.getHeightInPixel (); xLowerValue = config.getXLowerValue (); xUpperValue = config.getXUpperValue (); yLowerValue = config.getYLowerValue (); yUpperValue = config.getYUpperValue (); xLogScale = config.isXLogScale (); yLogScale = config.isYLogScale (); } /* * @see Object#equals(Object) */ @Override public boolean equals ( Object obj ) { if ( obj == null || ! ( obj instanceof CompressConfig ) ) { return false; } CompressConfig config = (CompressConfig)obj; if ( widthInPixels != config.getWidthInPixel () || heightInPixels != config.getHeightInPixel () ) { return false; } double diff = Math.abs ( xLowerValue - config.getXLowerValue () ) / ( xUpperValue - xLowerValue ); if ( diff > 1.0 / widthInPixels ) { return false; } diff = Math.abs ( xUpperValue - config.getXUpperValue () ) / ( xUpperValue - xLowerValue ); if ( diff > 1.0 / widthInPixels ) { return false; } diff = Math.abs ( yLowerValue - config.getYLowerValue () ) / ( yUpperValue - yLowerValue ); if ( diff > 1.0 / heightInPixels ) { return false; } diff = Math.abs ( yUpperValue - config.getYUpperValue () ) / ( yUpperValue - yLowerValue ); if ( diff > 1.0 / heightInPixels ) { return false; } if ( config.isXLogScale () != xLogScale ) { return false; } if ( config.isYLogScale () != yLogScale ) { return false; } return true; } /* * @see Object#hashCode() */ @Override public int hashCode () { assert false; return 0; } /** * Sets the size in pixels. * * @param width * the width in pixels * @param height * the height in pixels */ public void setSizeInPixel ( long width, long height ) { widthInPixels = width; heightInPixels = height; } /** * Gets the width of plot area in pixels * * @return the width of plot area in pixels */ public long getWidthInPixel () { return widthInPixels; } /** * Gets the height of plot area in pixels * * @return the height of plot area in pixels */ public long getHeightInPixel () { return heightInPixels; } /** * Sets the X range. * * @param lower * the lower value of x range * @param upper * the upper value of x range */ public void setXRange ( double lower, double upper ) { xLowerValue = lower; xUpperValue = upper; } /** * Sets the Y range. * * @param lower * the lower value of y range * @param upper * the upper value of y range */ public void setYRange ( double lower, double upper ) { yLowerValue = lower; yUpperValue = upper; } /** * Gets the lower value of x range. * * @return the lower value of x range */ public double getXLowerValue () { return xLowerValue; } /** * Gets the upper value of x range. * * @return the upper value of x range */ public double getXUpperValue () { return xUpperValue; } /** * Gets the lower value of y range. * * @return the lower value of y range */ public double getYLowerValue () { return yLowerValue; } /** * Gets the upper value of y range. * * @return the upper value of y range */ public double getYUpperValue () { return yUpperValue; } /** * Gets the state indicating whether the X axis is log scale. * * @return true if the X axis is log scale */ public boolean isXLogScale () { return xLogScale; } /** * Sets the state indicating whether the X axis is log scale. * * @param value * the state indicating whether the X axis is log scale */ public void setXLogScale ( boolean value ) { this.xLogScale = value; } /** * Gets the state indicating whether the Y axis is log scale. * * @return true if the Y axis is log scale */ public boolean isYLogScale () { return yLogScale; } /** * Sets the state indicating whether the Y axis is log scale. * * @param value * the state indicating whether the Y axis is log scale */ public void setYLogScale ( boolean value ) { this.yLogScale = value; } /* * @see Object#toString() */ @Override public String toString () { return "pixelWidth = " + widthInPixels + ", " + "pixelHeight = " + heightInPixels + ", " + "xLowerValue = " + xLowerValue + ", " + "xUpperValue = " + xUpperValue + ", " + "yLowerValue = " + yLowerValue + ", " + "yUpperValue = " + yUpperValue + ", " + yLogScale; } }