java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/SerializableTexturePaint.java
author František Kučera <franta-hg@frantovo.cz>
Sat, 28 Feb 2009 21:31:02 +0100
changeset 1 639991d0808a
permissions -rw-r--r--
Rozbalená knihovna verze 1.0
     1 /* ================================================================
     2  * Cewolf : Chart enabling Web Objects Framework
     3  * ================================================================
     4  *
     5  * Project Info:  http://cewolf.sourceforge.net
     6  * Project Lead:  Guido Laures (guido@laures.de);
     7  *
     8  * (C) Copyright 2002, by Guido Laures
     9  *
    10  * This library is free software; you can redistribute it and/or modify it under the terms
    11  * of the GNU Lesser General Public License as published by the Free Software Foundation;
    12  * either version 2.1 of the License, or (at your option) any later version.
    13  *
    14  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
    15  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    16  * See the GNU Lesser General Public License for more details.
    17  *
    18  * You should have received a copy of the GNU Lesser General Public License along with this
    19  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
    20  * Boston, MA 02111-1307, USA.
    21  */
    22 
    23 package de.laures.cewolf.taglib.tags;
    24 
    25 import java.awt.Paint;
    26 import java.awt.Rectangle;
    27 import java.awt.RenderingHints;
    28 import java.awt.TexturePaint;
    29 import java.awt.geom.AffineTransform;
    30 import java.awt.geom.Rectangle2D;
    31 import java.awt.image.BufferedImage;
    32 import java.awt.image.ColorModel;
    33 import java.io.Serializable;
    34 
    35 import de.laures.cewolf.util.ImageHelper;
    36 
    37 /** 
    38  * Special texture paint which can be serialized.
    39  * @see TexturePaint
    40  * @author  Guido Laures 
    41  */
    42 public class SerializableTexturePaint implements Paint, Serializable {
    43 
    44     private String image;
    45     private int width;
    46     private int height;
    47     private transient Paint paint = null;
    48 
    49     public SerializableTexturePaint() {
    50     }
    51 
    52     /** Creates a new instance of SerializableGradientPaint */
    53     public SerializableTexturePaint(String image, int width, int height) {
    54         this.image = image;
    55         this.width = width;
    56         this.height = height;
    57     }
    58 
    59     private Paint getPaint() {
    60         if (paint == null) {
    61             createPaint();
    62         }
    63         return paint;
    64     }
    65 
    66     private void createPaint() {
    67         BufferedImage bim = ImageHelper.loadBufferedImage(image);
    68         Rectangle rect = new Rectangle(width, height);
    69         paint = new TexturePaint(bim, rect);
    70     }
    71 
    72     public java.awt.PaintContext createContext(ColorModel colorModel, Rectangle rectangle, Rectangle2D rectangle2D,
    73     AffineTransform affineTransform, RenderingHints renderingHints) {
    74         return getPaint().createContext(colorModel, rectangle, rectangle2D, affineTransform, renderingHints);
    75     }
    76 
    77     public int getTransparency() {
    78         return getPaint().getTransparency();
    79     }
    80 
    81 }