/************************************************************************** /* This class is part of the Java Plotlib Toolkit. /* /* Copyright (c) 1999-2004 by Bernhard Bablok (bablokb@gmx.de) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program 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 Library General Public License for more details. /* /* You should have received a copy of the GNU General Public License /* along with this program; see the file COPYING. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ package de.bablokb.plotlib.plot; import java.util.*; import java.net.*; import java.awt.*; import java.awt.image.*; import java.awt.geom.*; import de.bablokb.plotlib.core.*; import de.bablokb.plotlib.data.*; /** For every datapoint, plot a rectangle with an image as texture. @version $Revision: 1.3 $ @author $Author: bablokb $ */ public class ImagePlot extends DataPlot { /** Baseline (usually value of y-coordinate of x-axis). */ private float iBase = 0; ////////////////////////////////////////////////////////////////////////////// /** Construct a ImagePlot-object without data. */ public ImagePlot() { super(); } ////////////////////////////////////////////////////////////////////////////// /** Construct a ImagePlot-object from a given dataset. */ public ImagePlot(Dataset data) { super(data); } ////////////////////////////////////////////////////////////////////////////// /** Set the value of the baseline. */ public void setBase(float base) { iBase = base; } ////////////////////////////////////////////////////////////////////////////// /** Plot the data. Implements AbstractPlottable.plotObjects.

Fixme: Not implemented yet. This method must create rectangles from baseline to p with given width and fill them with the created texture. */ public void plotObjects(PlottingContext pc) { if (iData == null) throw new MissingDatasetException(); TexturePaint tp = createTexture(pc); Graphics2D g2 = pc.getG2(); g2.setPaint(tp); Rectangle2D r = tp.getAnchorRect(); Iterator it = iData.iterator(); while (it.hasNext()) { Point2D p = (Point2D) it.next(), base = (Point2D) p.clone(); base.setLocation(p.getX(),iBase); p = pc.transform(p); base = pc.transform(base); } } ////////////////////////////////////////////////////////////////////////////// /** Create the Texture.

Fixme: Texture resource should be attribute. */ public TexturePaint createTexture(PlottingContext pc) { URL url = ImagePlot.class.getResource("images/mini_pinguin.gif"); Image img = java.awt.Toolkit.getDefaultToolkit().getImage(url); try { MediaTracker tracker = new MediaTracker(pc.getComponent()); tracker.addImage(img, 0); tracker.waitForID(0); } catch (Exception e) { } int iw = img.getWidth(pc.getComponent()); int ih = img.getHeight(pc.getComponent()); BufferedImage bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = bi.createGraphics(); g2.drawImage(img, 0, 0,pc.getComponent()); return new TexturePaint(bi,new Rectangle(0,0,iw,ih)); } }