/******************************************************************************* * Copyright (c) 2008-2011 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() { 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; } }