/** * Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT * All rights reserved. Use is subject to license terms. See LICENSE.TXT */ package org.diirt.graphene.profile.impl; import java.awt.Graphics2D; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import org.diirt.graphene.Graph2DRendererUpdate; import org.diirt.graphene.InterpolationScheme; import org.diirt.graphene.MultiAxisLineGraph2DRenderer; import org.diirt.graphene.MultiAxisLineGraph2DRendererUpdate; import org.diirt.graphene.Point2DDataset; import org.diirt.graphene.ReductionScheme; import org.diirt.graphene.profile.ProfileGraph2D; import org.diirt.graphene.profile.utils.DatasetFactory; /** * Handles profiling for <code>MultiAxisLineGraph2DRenderer</code>. * Takes a <code>Point2DDataset</code> dataset and repeatedly renders * through a <code>Point2DDataset</code>. * * @author asbarber */ public class ProfileMultiYAxisGraph2D extends ProfileGraph2D<MultiAxisLineGraph2DRenderer, List<Point2DDataset>>{ private int numGraphs = 3; //Dataset Sepcific //-------------------------------------------------------------------------- /** * Gets the number of graphs for the renderer. * @return number of graphs being rendered */ public int getNumGraphs(){ return this.numGraphs; } /** * Sets the number of graphs for the renderer. * Must be a value greater than zero. * @param numGraphs number of graphs being rendered */ public final void setNumGraphs(int numGraphs){ if (numGraphs <= 0){ throw new IllegalArgumentException("Invalid number of graphs"); } this.numGraphs = numGraphs; this.createDatasetMessage(); } @Override public void setNumDataPoints(int numData){ super.setNumDataPoints(numData); this.createDatasetMessage(); } /** * Creates a dataset message to output the number of graphs. */ public final void createDatasetMessage(){ super.getSaveSettings().setDatasetMessage(getNumDataPoints() + " & " + numGraphs + "graphs"); } //-------------------------------------------------------------------------- //Superclass //-------------------------------------------------------------------------- @Override protected List<Point2DDataset> getDataset() { List<Point2DDataset> data = new ArrayList<>(); for (int i = 0; i < numGraphs; ++i){ data.add(DatasetFactory.makePoint2DGaussianRandomData(super.getNumDataPoints())); } return data; } @Override protected MultiAxisLineGraph2DRenderer getRenderer(int imageWidth, int imageHeight) { return new MultiAxisLineGraph2DRenderer(imageWidth, imageHeight); } @Override protected void render(Graphics2D graphics, MultiAxisLineGraph2DRenderer renderer, List<Point2DDataset> data) { renderer.draw(graphics, data); } @Override public LinkedHashMap<String, Graph2DRendererUpdate> getVariations() { LinkedHashMap<String, Graph2DRendererUpdate> map = new LinkedHashMap<>(); map.put("None", null); map.put("Nearest Neighbor Interpolation", new MultiAxisLineGraph2DRendererUpdate().interpolation(InterpolationScheme.NEAREST_NEIGHBOR)); map.put("First Max Min Last Reduction", new MultiAxisLineGraph2DRendererUpdate().dataReduction(ReductionScheme.FIRST_MAX_MIN_LAST)); map.put("No Data Reduction", new MultiAxisLineGraph2DRendererUpdate().dataReduction(ReductionScheme.NONE)); return map; } @Override public String getGraphTitle() { return "MultiYAxisGraph2D"; } //-------------------------------------------------------------------------- }