java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/tags/SerializableGradientPaint.java
author František Kučera <franta-hg@frantovo.cz>
Sun, 01 Mar 2009 11:06:49 +0100
changeset 4 249560bcc466
parent 1 639991d0808a
permissions -rw-r--r--
Doplnění serializovatelnosti
     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.Color;
    26 import java.awt.GradientPaint;
    27 import java.awt.Paint;
    28 import java.awt.Rectangle;
    29 import java.awt.RenderingHints;
    30 import java.awt.geom.AffineTransform;
    31 import java.awt.geom.Rectangle2D;
    32 import java.awt.image.ColorModel;
    33 import java.io.Serializable;
    34 
    35 /** 
    36  * Special gradient paint which can be serialized.
    37  * @see GradientPaint
    38  * @author  Guido Laures 
    39  */
    40 public class SerializableGradientPaint implements Paint, Serializable {
    41 
    42     private int x1;
    43     private int y1;
    44     private Color c1 = Color.white;
    45     private int x2;
    46     private int y2;
    47     private Color c2 = Color.white;
    48     private boolean cyclic = false;
    49     private transient Paint paint = null;
    50 
    51     public SerializableGradientPaint() {
    52     }
    53 
    54     /** Creates a new instance of SerializableGradientPaint */
    55     public SerializableGradientPaint(int x1, int y1, Color c1, int x2, int y2, Color c2) {
    56         this.x1 = x1;
    57         this.y1 = y1;
    58         this.c1 = c1;
    59         this.x2 = x2;
    60         this.y2 = y2;
    61         this.c2 = c2;
    62     }
    63 
    64     private Paint getPaint() {
    65         if (paint == null) {
    66             createPaint();
    67         }
    68         return paint;
    69     }
    70 
    71     private void createPaint() {
    72         paint = new GradientPaint(x1, y1, c1, x2, y2, c2, cyclic);
    73     }
    74 
    75     public void setPoint1(int x, int y, Color c) {
    76         this.x1 = x;
    77         this.y1 = y;
    78         this.c1 = c;
    79     }
    80 
    81     public void setPoint2(int x, int y, Color c) {
    82         this.x2 = x;
    83         this.y2 = y;
    84         this.c2 = c;
    85     }
    86 
    87     public java.awt.PaintContext createContext(ColorModel colorModel, Rectangle rectangle, Rectangle2D rectangle2D,
    88     AffineTransform affineTransform, RenderingHints renderingHints) {
    89         return getPaint().createContext(colorModel, rectangle, rectangle2D, affineTransform, renderingHints);
    90     }
    91 
    92     public int getTransparency() {
    93         return getPaint().getTransparency();
    94     }
    95 
    96     public void setCyclic(boolean b) {
    97         this.cyclic = b;
    98     }
    99 
   100     public String toString() {
   101         return "" + x1 + "," + y1 + "," + c1 + "," + x2 + "," + y2 + "," + c2;
   102     }
   103 }