com.flagstone.transform.fillstyle
Class GradientFill

java.lang.Object
  extended by com.flagstone.transform.fillstyle.GradientFill
All Implemented Interfaces:
Copyable<FillStyle>, SWFEncodeable, FillStyle

public final class GradientFill
extends Object
implements FillStyle

GradientFill defines how a colour changes across an area to be filled with colour. Two types of gradient fill are supported:

  1. Linear - where the gradient changes in one direction across the area to be filled.
  2. Radial - where the gradient changes radially from the centre of the area to be filled.

Gradients are defined in terms of a standard space called the gradient square, centred at (0,0) and extending from (-16384, -16384) to (16384, 16384).

A coordinate transform is required to map the gradient square to the coordinates of the filled area. The transformation is applied in two steps. First the gradient square is scaled so the colour covers the shape followed by a translation to map the gradient square coordinates to the coordinate range of the shape.

A series of gradient points is used to control how the colour displayed changes across the gradient. At least two points are required to define a gradient - one for the starting colour and one for the final colour. When the Flash Player displays the control points they are sorted by the ratio defined in each Gradient object, with the smallest ratio value displayed first.

See Also:
Gradient

Constructor Summary
GradientFill(GradientFill object)
          Creates and initialises a GradientFill fill style using the values copied from another GradientFill object.
GradientFill(GradientType gradientType, CoordTransform matrix, List<Gradient> list)
          Creates a GradientFill object specifying the type, coordinate transform and list of gradient points.
GradientFill(GradientType gradientType, CoordTransform matrix, Spread spreadType, Interpolation interpolationType, List<Gradient> list)
          Creates a GradientFill object specifying the type, coordinate transform and list of gradient points.
GradientFill(int fillType, SWFDecoder coder, Context context)
          Creates and initialises a GradientFill fill style using values encoded in the Flash binary format.
 
Method Summary
 GradientFill add(Gradient aGradient)
          Add a Gradient object to the list of gradient objects.
 GradientFill copy()
          Creates a complete copy of this object.
 void encode(SWFEncoder coder, Context context)
          Encode an object to the Flash binary format.
 List<Gradient> getGradients()
          Get the list of Gradient objects defining the points for the gradient fill.
 Interpolation getInterpolation()
          Get the method used to calculate the colour changes across the gradient.
 Spread getSpread()
          Get the Spread describing how the gradient fills the area: PAD - the last colour fills the remaining area; REPEAT - the gradient is repeated; REFLECT - the gradient is repeated but reflected (reversed) each time.
 CoordTransform getTransform()
          Get the coordinate transform mapping the gradient square onto physical coordinates.
 GradientType getType()
          Get the GradientType that identifies whether the gradient is linear or radial.
 int prepareToEncode(Context context)
          Prepare an object for encoding, returning the expected size of an object when it is encoded.
 void setGradients(List<Gradient> list)
          Sets the list of control points that define the gradient.
 void setInterpolation(Interpolation interpolationType)
          Set the method used to calculate the colour changes across the gradient.
 void setSpread(Spread spreadType)
          Set the Spread describing how the gradient fills the area: either by using the last gradient colour to fill the area (PAD); repeating the gradient (REPEAT) or repeating but reversing it each time (REFLECT).
 void setTransform(CoordTransform matrix)
          Sets the coordinate transform mapping the gradient square onto physical coordinates.
 void setType(GradientType gradientType)
          Set the GradientType that identifies whether the gradient is linear or radial.
 String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GradientFill

public GradientFill(int fillType,
                    SWFDecoder coder,
                    Context context)
             throws IOException
Creates and initialises a GradientFill fill style using values encoded in the Flash binary format.

Parameters:
fillType - the value used to identify the fill style when it is encoded.
coder - an SWFDecoder object that contains the encoded Flash data.
context - a Context object used to manage the decoders for different type of object and to pass information on how objects are decoded.
Throws:
IOException - if an error occurs while decoding the data.

GradientFill

public GradientFill(GradientType gradientType,
                    CoordTransform matrix,
                    List<Gradient> list)
Creates a GradientFill object specifying the type, coordinate transform and list of gradient points.

Parameters:
gradientType - identifies whether the gradient is rendered linearly or radially.
matrix - the coordinate transform mapping the gradient square onto physical coordinates. Must not be null.
list - a list of Gradient objects defining the control points for the gradient. For Flash 7 and earlier versions there can be up to 8 Gradients. For Flash 8 onwards this number was increased to 15. Must not be null.

GradientFill

public GradientFill(GradientType gradientType,
                    CoordTransform matrix,
                    Spread spreadType,
                    Interpolation interpolationType,
                    List<Gradient> list)
Creates a GradientFill object specifying the type, coordinate transform and list of gradient points.

Parameters:
gradientType - identifies whether the gradient is rendered linearly or radially.
matrix - the coordinate transform mapping the gradient square onto physical coordinates. Must not be null.
spreadType - To be documented.
interpolationType - how the changes in colours across the gradient are calculated.
list - a list of Gradient objects defining the control points for the gradient. For Flash 7 and earlier versions there can be up to 8 Gradients. For Flash 8 onwards this number was increased to 15. Must not be null.

GradientFill

public GradientFill(GradientFill object)
Creates and initialises a GradientFill fill style using the values copied from another GradientFill object.

Parameters:
object - a GradientFill fill style from which the values will be copied.
Method Detail

getType

public GradientType getType()
Get the GradientType that identifies whether the gradient is linear or radial.

Returns:
the GradientType for the fill, either LINEAR or RADIAL.

setType

public void setType(GradientType gradientType)
Set the GradientType that identifies whether the gradient is linear or radial.

Parameters:
gradientType - the GradientType for the fill, either LINEAR or RADIAL.

getSpread

public Spread getSpread()
Get the Spread describing how the gradient fills the area: PAD - the last colour fills the remaining area; REPEAT - the gradient is repeated; REFLECT - the gradient is repeated but reflected (reversed) each time.

Returns:
the Spread, either PAD, REFLECT or REPEAT.

setSpread

public void setSpread(Spread spreadType)
Set the Spread describing how the gradient fills the area: either by using the last gradient colour to fill the area (PAD); repeating the gradient (REPEAT) or repeating but reversing it each time (REFLECT).

Parameters:
spreadType - the Spread, either PAD, REFLECT or REPEAT.

getInterpolation

public Interpolation getInterpolation()
Get the method used to calculate the colour changes across the gradient.

Returns:
the Interpolation that describes how colours change.

setInterpolation

public void setInterpolation(Interpolation interpolationType)
Set the method used to calculate the colour changes across the gradient.

Parameters:
interpolationType - the Interpolation that describes how colours change.

getTransform

public CoordTransform getTransform()
Get the coordinate transform mapping the gradient square onto physical coordinates.

Returns:
the coordinate transform that defines the gradient displayed.

getGradients

public List<Gradient> getGradients()
Get the list of Gradient objects defining the points for the gradient fill.

Returns:
the list of points defining the gradient.

setTransform

public void setTransform(CoordTransform matrix)
Sets the coordinate transform mapping the gradient square onto physical coordinates.

Parameters:
matrix - the coordinate transform. Must not be null.

setGradients

public void setGradients(List<Gradient> list)
Sets the list of control points that define the gradient. For Flash 7 and earlier this list can contain up to 8 Gradient objects. For Flash 8 onwards this limit was increased to 15.

Parameters:
list - a list of Gradient objects. Must not be null.

add

public GradientFill add(Gradient aGradient)
Add a Gradient object to the list of gradient objects. For Flash 7 and earlier versions there can be up to 8 Gradients. For Flash 8 onwards this number was increased to 15.

Parameters:
aGradient - an Gradient object. Must not be null.
Returns:
this object.

copy

public GradientFill copy()
Creates a complete copy of this object.

Specified by:
copy in interface Copyable<FillStyle>
Returns:
a deep-copy of this object. New instances of mutable objects are copied and immutable instances are shared.

toString

public String toString()

Overrides:
toString in class Object

prepareToEncode

public int prepareToEncode(Context context)
Prepare an object for encoding, returning the expected size of an object when it is encoded. This method also used to initialise variables, such as offsets and flags that will be used when the object is encoded. Generally the method returns the size in bytes, however when called on objects that use bit fields such as shapes the methods will return the size in bits.

Specified by:
prepareToEncode in interface SWFEncodeable
Parameters:
context - an Context that allows information to be passed between objects to control how they are initialised for encoding.
Returns:
the size of the object when it is encoded.

encode

public void encode(SWFEncoder coder,
                   Context context)
            throws IOException
Encode an object to the Flash binary format.

Specified by:
encode in interface SWFEncodeable
Parameters:
coder - an SWFEncoder object.
context - an Context that allows information to be passed between objects to control how they are initialised for encoding.
Throws:
IOException - if an error occurs while encoding the object.


Copyright © 2002-2010 Flagstone Software Ltd.. All Rights Reserved.