/* * Open Source Physics software is free software as described near the bottom of this code file. * * For additional information and documentation on Open Source Physics please see: * <http://www.opensourcephysics.org/> */ package org.opensourcephysics.display2d; import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import org.opensourcephysics.display.DrawingPanel; /** * ComplexInterpolatedPlot creates an image of a scalar field by inerpolating every * image pixel to an untabulated point (x,y) in the 2d data. This interpolation smooths * the resulting image. * * @author Wolfgang Christian * @created February 2, 2003 * @version 1.0 */ public class ComplexContourPlot extends ComplexInterpolatedPlot { ContourPlot contour; boolean showContours = true; /** * Constructs the ComplexContourPlot using the given 2d datset. */ public ComplexContourPlot() { super(null); } /** * Constructs the ComplexContourPlot using the given 2d datset. * * @param griddata GridData */ public ComplexContourPlot(GridData griddata) { super(griddata); contour = new ContourPlot(griddata); contour.setPaletteType(ColorMapper.WIREFRAME); contour.setShowColorLevels(false); contour.setGridLineColor(Color.lightGray); contour.update(); } public ContourPlot getContour() { return contour; } /** * Sets the autoscale flag and the floor and ceiling values for the colors. * * If autoscaling is true, then the min and max values of z are span the colors. * * If autoscaling is false, then floor and ceiling values limit the colors. * Values below min map to the first color; values above max map to the last color. * * @param isAutoscale * @param floor * @param ceil */ public void setAutoscaleZ(boolean isAutoscale, double floor, double ceil) { super.setAutoscaleZ(isAutoscale, ceil); contour.setAutoscaleZ(isAutoscale, floor, ceil); } /** * Updates the buffered image using the data array. */ public void update() { super.update(); if((contour!=null)&&showContours) { contour.update(); } } /** * Sets the data storage to the given value. * * @param griddata */ public void setGridData(GridData griddata) { super.setGridData(griddata); super.setShowGridLines(false); contour.setGridData(griddata); } /** * Sets the indexes for the data component that will be plotted. * * @param indexes the sample-component */ public void setIndexes(int[] indexes) { super.setIndexes(indexes); contour.setIndexes(indexes); } /** * Sets the visibility of the contour plot. * Drawing will be disabled if visible is false. * * @param isVisible */ public void setVisible(boolean isVisible) { visible = isVisible; } /** * Shows how values map to colors. */ public JFrame showLegend() { return colorMap.showLegend(); } /** * Shows the contour lines. * * @param show */ public void setShowGridLines(boolean show) { contour.setShowGridLines(show); } /** * Setting the color palette is not supported. The complex palette always maps phase to color. * @param colors */ public void setColorPalette(Color[] colors) {} /** * Setting the palette is not supported. The complex palette always maps phase to color. * @param type */ public void setPaletteType(int type) {} /** * Sets the floor and ceiling colors. * * @param floorColor * @param ceilColor */ public void setFloorCeilColor(Color floorColor, Color ceilColor) { super.setFloorCeilColor(floorColor, ceilColor); } /** * Sets the contour line color. * The default line color is dark green. * @param color */ public void setGridLineColor(Color color) { contour.setGridLineColor(color); } /** * Draws the image and the grid. * @param panel * @param g */ public void draw(DrawingPanel panel, Graphics g) { if(!visible) { return; } super.draw(panel, g); if(showContours) { contour.draw(panel, g); } } } /* * Open Source Physics software is free software; you can redistribute * it and/or modify it under the terms of the GNU General Public License (GPL) as * published by the Free Software Foundation; either version 2 of the License, * or(at your option) any later version. * Code that uses any portion of the code in the org.opensourcephysics package * or any subpackage (subdirectory) of this package must must also be be released * under the GNU GPL license. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA * or view the license online at http://www.gnu.org/copyleft/gpl.html * * Copyright (c) 2007 The Open Source Physics project * http://www.opensourcephysics.org */