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

/**
 * A Compressor.
 */
public interface ICompress {

    /**
     * Gets the compressed X series
     * 
     * @return the compressed X series
     */
    public abstract double[] getCompressedXSeries();

    /**
     * Gets the compressed Y series
     * 
     * @return the compressed Y series
     */
    public abstract double[] getCompressedYSeries();

    /**
     * Gets the compressed series indexes
     * 
     * @return the compressed series indexes
     */
    public abstract int[] getCompressedIndexes();

    /**
     * Sets X series which have to be sorted.
     * 
     * @param xSeries
     *            the X series
     */
    public abstract void setXSeries(double[] xSeries);

    /**
     * sets the Y series
     * 
     * @param ySeries
     *            the Y series
     */
    public abstract void setYSeries(double[] ySeries);

    /**
     * Ignores the points which are in the same grid as the previous point.
     * 
     * @param config
     *            the configuration for compression
     * @return true if the compression succeeds
     */
    public abstract boolean compress(CompressConfig config);

}