FileDocCategorySizeDatePackage
SolidColor.javaAPI DocphoneME MR2 API (J2ME)17174Wed May 02 18:00:36 BST 2007com.sun.perseus.model

SolidColor

public class SolidColor extends PaintElement
SolidColor represents an SVG Tiny 1.2 <solidColor> element.
version
$Id: SolidColor.java,v 1.5 2006/06/29 10:47:34 ln156897 Exp $

Fields Summary
static final String[]
REQUIRED_TRAITS
solid-color is required on
static final com.sun.perseus.j2d.RGB
DEFAULT_SOLID_COLOR
The initial solid color value.
static final float
DEFAULT_SOLID_OPACITY
The default solid opacity
com.sun.perseus.j2d.RGB
solidColor
The solid color value.
float
solidOpacity
The solid opacity value
com.sun.perseus.j2d.RGB
compoundColor
The actual solid color value, which combines the solidColor and the solidOpacity
Constructors Summary
public SolidColor(DocumentNode ownerDocument)
Constructor.

param
ownerDocument this element's owner DocumentNode


                
        
        super(ownerDocument);

        // Turn off objectBBox space so that the PaintServerReference
        // does not concatenate an extra transform unnecessariliy.
        isObjectBBox = false;
    
Methods Summary
protected com.sun.perseus.j2d.PaintDefcomputePaint()
Computes the paint in user space on use.

return
the computed PaintDef.

        if (compoundColor == null) {
            compoundColor = new RGB((int) (solidOpacity * 255f),
                                    solidColor.getRed(),
                                    solidColor.getGreen(),
                                    solidColor.getBlue());
        }      
        return compoundColor;
    
TraitAnimcreateTraitAnimImpl(java.lang.String traitName)
SolidColor handles solid-color and solid-opacity traits as FloatTraitAnims

param
traitName the trait name.

        if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == traitName) {
            return new FloatTraitAnim(this, traitName, TRAIT_TYPE_FLOAT);
        } else if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == traitName) {
            return new FloatTraitAnim(this, traitName, 
                                      TRAIT_TYPE_SVG_RGB_COLOR);
        } else {
            return super.createTraitAnimImpl(traitName);
        }
    
floatgetFloatTraitImpl(java.lang.String name)
SolidColor handles the solid-opacity as a float trait

param
name the requested trait name (e.g., "y")
return
the requested trait value
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element or null.
throws
DOMException with error code TYPE_MISMATCH_ERR if requested trait's computed value cannot be converted to a float
throws
SecurityException if the application does not have the necessary privilege rights to access this (SVG) content.

        if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {
            return solidOpacity;
        } else {
            return super.getFloatTraitImpl(name);
        }
    
public java.lang.StringgetLocalName()

return
the SVGConstants.SVG_SOLID_COLOR_TAG value

        return SVGConstants.SVG_SOLID_COLOR_TAG;
    
org.w3c.dom.svg.SVGRGBColorgetRGBColorTraitImpl(java.lang.String name)
Supported color traits: solid-color

param
name the requested trait's name.
return
the requested trait's value, as an SVGRGBColor.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element or null.
throws
DOMException with error code TYPE_MISMATCH_ERR if requested trait's computed value cannot be converted to {@link org.w3c.dom.svg.SVGRGBColor SVGRGBColor}
throws
SecurityException if the application does not have the necessary privilege rights to access this (SVG) content.

        // We use .equals here because the name is not interned.
        if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE.equals(name)) {
            return solidColor;
        } else {
            return super.getRGBColorTraitImpl(name);
        }
    
public java.lang.String[]getRequiredTraits()

return
an array of traits that are required by this element.

        return REQUIRED_TRAITS;
    
public java.lang.StringgetTraitImpl(java.lang.String name)
SolidColor handles solid-color and solid-opacity traits.

param
name the requested trait name (e.g., "ry")
return
the trait's value, as a string.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element or null.
throws
DOMException with error code TYPE_MISMATCH_ERR if requested trait's computed value cannot be converted to a String (SVG Tiny only).

        if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == name) {
            return solidColor.toString();
        } else if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {
            return Float.toString(solidOpacity);
        } else {
            return super.getTraitImpl(name);
        }
    
public ElementNodenewInstance(DocumentNode doc)
Used by DocumentNode to create a new instance from a prototype Rect.

param
doc the DocumentNode for which a new node is should be created.
return
a new SolidColor for the requested document.

        return new SolidColor(doc);
    
voidonPaintChange()
Updates the compound color value and notfies related PaintServerReferences.

        compoundColor = null;
        notifyPaintChange();
    
voidsetFloatArrayTrait(java.lang.String name, float[][] value)
Set the trait value as float array.

param
name the trait's name.
param
value the trait's value.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element.
throws
DOMException with error code TYPE_MISMATCH_ERR if the requested trait's value cannot be specified as a float
throws
DOMException with error code INVALID_ACCESS_ERR if the input value is an invalid value for the given trait.

        if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == name) {
            setSolidColor(new RGB((int) value[0][0], (int) value[0][1], 
                                  (int) value[0][2]));
        } else if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {
            setSolidOpacity(value[0][0]);
        } else {
            super.setFloatArrayTrait(name, value);
        }    
    
public voidsetFloatTraitImpl(java.lang.String name, float value)
Set the trait value as float. Supported float traits: stroke-width, stroke-miterlimit, stroke-dashoffset, fill-opacity, stroke-opacity.

param
name the name of the trait to set.
param
value the value of the trait to set.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element.
throws
DOMException with error code TYPE_MISMATCH_ERR if the requested trait's value cannot be specified as a float
throws
DOMException with error code INVALID_ACCESS_ERR if the input value is an invalid value for the given trait.
throws
SecurityException if the application does not have the necessary privilege rights to access this (SVG) content.

        if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {
            setSolidOpacity(value);
        } else {
            super.setFloatTraitImpl(name, value);
        }
    
voidsetRGBColorTraitImpl(java.lang.String name, org.w3c.dom.svg.SVGRGBColor color)
Set the trait value as {@link org.w3c.dom.svg.SVGRGBColor SVGRGBColor}. Supported color traits: color, fill, stroke

param
name the name of the trait to set.
param
value the value of the trait to set.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element or null.
throws
DOMException with error code TYPE_MISMATCH_ERR if the requested trait's value cannot be specified as an {@link org.w3c.dom.svg.SVGRGBColor SVGRGBColor}
throws
DOMException with error code INVALID_ACCESS_ERR if the input value is null.
throws
SecurityException if the application does not have the necessary privilege rights to access this (SVG) content.

        try {
            if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE.equals(name)) {
                setSolidColor((RGB) color);
            } else {
                super.setRGBColorTraitImpl(name, color);
            } 
        } catch (IllegalArgumentException iae) {
            throw new DOMException(DOMException.INVALID_ACCESS_ERR, 
                                   iae.getMessage());
        }
    
public voidsetSolidColor(com.sun.perseus.j2d.RGB newSolidColor)
Sets the solid-color property.

param
newSolidColor the new solid-color property

        if (solidColor.equals(newSolidColor)) {
            return;
        }

        solidColor = newSolidColor;
        onPaintChange();
    
public voidsetSolidOpacity(float newSolidOpacity)
Sets the solid-opacity property.

param
newSolidOpacity the new solid-opacity property

        if (newSolidOpacity == solidOpacity) {
            return;
        }

        solidOpacity = newSolidOpacity;

        if (solidOpacity < 0) {
            solidOpacity = 0;
        } else if (solidOpacity > 1) {
            solidOpacity = 1;
        }
        onPaintChange();
    
public voidsetTraitImpl(java.lang.String name, java.lang.String value)
CompositeGraphicsNode handles the graphics node traits. Other attributes are handled by the super class. Supported traits: stroke-width, stroke-miterlimit, stroke-dashoffset, fill-rule, stroke-linejoin, stroke-linecap, display, visibility, color, fill, stroke, fill-opacity, stroke-opacity, stroke-dasharray

param
name the name of the trait to set.
param
value the value of the trait to set.
throws
DOMException with error code NOT_SUPPORTED_ERROR if the requested trait is not supported on this element or null.
throws
DOMException with error code TYPE_MISMATCH_ERR if the requested trait's value cannot be specified as a String
throws
DOMException with error code INVALID_ACCESS_ERR if the input value is an invalid value for the given trait or null.
throws
DOMException with error code NO_MODIFICATION_ALLOWED_ERR: if attempt is made to change readonly trait.

        if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {

            // ======================= solid-opacity ===================== //

            if (SVGConstants.CSS_INHERIT_VALUE.equals(value)) {
                setSolidOpacity(DEFAULT_SOLID_OPACITY);
            } else {
                setSolidOpacity(parseFloatTrait(name, value));
            }
        } else if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == name) {

            // ======================== solid-color ===================== //

            if (SVGConstants.CSS_INHERIT_VALUE.equals(value)) {
                setSolidColor(DEFAULT_SOLID_COLOR);
            } else {
                setSolidColor(parseColorTrait
                              (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE, value));
            }
        } else {
            super.setTraitImpl(name, value);
        }
    
booleansupportsTrait(java.lang.String traitName)
SolidColor handles solid-color and solid-opacity traits.

param
traitName the name of the trait which the element may support.
return
true if this element supports the given trait in one of the trait accessor methods.

        if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == traitName
            ||
            SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == traitName) {
            return true;
        } else {
            return super.supportsTrait(traitName);
        }
    
java.lang.StringtoStringTrait(java.lang.String name, float[][] value)

param
name the name of the trait to convert.
param
value the float trait value to convert.

        if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == name) {
            return Float.toString(value[0][0]);
        } else if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == name) {
            return toRGBString(name, value);
        } else {
            return super.toStringTrait(name, value);
        }
    
public float[][]validateFloatArrayTrait(java.lang.String traitName, java.lang.String value, java.lang.String reqNamespaceURI, java.lang.String reqLocalName, java.lang.String reqTraitNamespace, java.lang.String reqTraitName)
Validates the input trait value.

param
traitName the name of the trait to be validated.
param
value the value to be validated
param
reqNamespaceURI the namespace of the element requesting validation.
param
reqLocalName the local name of the element requesting validation.
param
reqTraitNamespace the namespace of the trait which has the values value on the requesting element.
param
reqTraitName the name of the trait which has the values value on the requesting element.
throws
DOMException with error code INVALID_ACCESS_ERR if the input value is incompatible with the given trait.

        if (SVGConstants.SVG_SOLID_COLOR_ATTRIBUTE == traitName) {
            RGB color = DEFAULT_SOLID_COLOR;
            if (!SVGConstants.CSS_INHERIT_VALUE.equals(value)) {
                color = parseColorTrait
                    (SVGConstants.SVG_COLOR_ATTRIBUTE, value);
            }
            if (color == null) {
                throw illegalTraitValue(traitName, value);
            }
            return new float[][] {
                        {color.getRed(), color.getGreen(), color.getBlue()}
                    };
        } else if (SVGConstants.SVG_SOLID_OPACITY_ATTRIBUTE == traitName) {
            float so = DEFAULT_SOLID_OPACITY;
            if (!SVGConstants.CSS_INHERIT_VALUE.equals(value)) {
                so = parseFloatTrait(traitName, value);
            }

            if (so < 0) {
                so = 0;
            } else if (so > 1) {
                so = 1;
            }
            return new float[][] {{so}};
        } else {
            return super.validateFloatArrayTrait(traitName,
                                                 value,
                                                 reqNamespaceURI,
                                                 reqLocalName,
                                                 reqTraitNamespace,
                                                 reqTraitName);
        }