%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/yacy/libbuild/WebCat-swf/src/pt/tumba/parser/swf/
Upload File :
Create Path :
Current File : //home/waritko/yacy/libbuild/WebCat-swf/src/pt/tumba/parser/swf/FillStyle.java

package pt.tumba.parser.swf;

import com.anotherbigidea.flash.SWFConstants;
import java.io.IOException;

/**
 *  Description of the Class
 *
 *@author     unknown
 *@created    15 de Setembro de 2002
 */
public class FillStyle implements Style {
    /**
     *  Description of the Field
     */
    protected int fillType;
    /**
     *  Description of the Field
     */
    protected Color color;
    /**
     *  Description of the Field
     */
    protected Matrix matrix;
    /**
     *  Description of the Field
     */
    protected int[] ratios;
    //for gradient fill
    /**
     *  Description of the Field
     */
    protected Color[] colors;
    //for gradient fill
    /**
     *  Description of the Field
     */
    protected int bitmapId;


    /**
     *  Gets the type attribute of the FillStyle object
     *
     *@return    The type value
     */
    public int getType() {
        return fillType;
    }


    /**
     *  Gets the solidColor attribute of the FillStyle object
     *
     *@return    The solidColor value
     */
    public Color getSolidColor() {
        return color;
    }


    /**
     *  Gets the matrix attribute of the FillStyle object
     *
     *@return    The matrix value
     */
    public Matrix getMatrix() {
        return matrix;
    }


    /**
     *  Gets the imageId attribute of the FillStyle object
     *
     *@return    The imageId value
     */
    public int getImageId() {
        return bitmapId;
    }


    /**
     *  Gets the gradientRatios attribute of the FillStyle object
     *
     *@return    The gradientRatios value
     */
    public int[] getGradientRatios() {
        return ratios;
    }


    /**
     *  Gets the gradientColors attribute of the FillStyle object
     *
     *@return    The gradientColors value
     */
    public Color[] getGradientColors() {
        return colors;
    }


    /**
     *  Solid color fill (alpha depends on the TagDefineShapeX tag used)
     *
     *@param  solidColor  Description of the Parameter
     */
    public FillStyle(Color solidColor) {
        fillType = SWFConstants.FILL_SOLID;
        color = solidColor;
    }


    /**
     *  Linear/Radial Gradient Fill
     *
     *@param  matrix  Description of the Parameter
     *@param  ratios  Description of the Parameter
     *@param  colors  Description of the Parameter
     *@param  radial  Description of the Parameter
     */
    public FillStyle(Matrix matrix, int[] ratios,
            Color[] colors, boolean radial) {
        this.matrix = matrix;
        this.ratios = ratios;
        this.colors = colors;

        fillType = radial ? SWFConstants.FILL_RADIAL_GRADIENT :
                SWFConstants.FILL_LINEAR_GRADIENT;
    }


    /**
     *  Bitmap fill
     *
     *@param  bitmapId  Description of the Parameter
     *@param  matrix    Description of the Parameter
     *@param  clipped   Description of the Parameter
     */
    public FillStyle(int bitmapId, Matrix matrix, boolean clipped) {
        this.matrix = matrix;
        this.bitmapId = bitmapId;

        fillType = clipped ? SWFConstants.FILL_CLIPPED_BITMAP :
                SWFConstants.FILL_TILED_BITMAP;
    }


    /**
     *  Description of the Method
     *
     *@param  out              Description of the Parameter
     *@param  hasAlpha         Description of the Parameter
     *@exception  IOException  Description of the Exception
     */
    public void write(OutStream out, boolean hasAlpha) throws IOException {
        out.writeUI8(fillType);

        if (fillType == SWFConstants.FILL_SOLID) {
            if (hasAlpha) {
                color.writeWithAlpha(out);
            } else {
                color.writeRGB(out);
            }
        } else if (fillType == SWFConstants.FILL_LINEAR_GRADIENT
                || fillType == SWFConstants.FILL_RADIAL_GRADIENT) {
            matrix.write(out);

            int numRatios = ratios.length;

            out.writeUI8(numRatios);

            for (int i = 0; i < numRatios; i++) {
                if (colors[i] == null) {
                    continue;
                }

                out.writeUI8(ratios[i]);

                if (hasAlpha) {
                    colors[i].writeWithAlpha(out);
                } else {
                    colors[i].writeRGB(out);
                }
            }
        } else if (fillType == SWFConstants.FILL_TILED_BITMAP
                || fillType == SWFConstants.FILL_CLIPPED_BITMAP) {
            out.writeUI16(bitmapId);
            matrix.write(out);
        }
    }


    /**
     *  Description of the Method
     *
     *@param  out              Description of the Parameter
     *@param  startStyle       Description of the Parameter
     *@param  endStyle         Description of the Parameter
     *@exception  IOException  Description of the Exception
     */
    public static void writeMorphFillStyle(OutStream out,
            FillStyle startStyle,
            FillStyle endStyle)
             throws IOException {
        int fillType = startStyle.fillType;

        out.writeUI8(fillType);

        if (fillType == SWFConstants.FILL_SOLID) {
            startStyle.color.writeWithAlpha(out);
            endStyle.color.writeWithAlpha(out);
        } else if (fillType == SWFConstants.FILL_LINEAR_GRADIENT
                || fillType == SWFConstants.FILL_RADIAL_GRADIENT) {
            startStyle.matrix.write(out);
            endStyle.matrix.write(out);

            int numRatios = startStyle.ratios.length;
            out.writeUI8(startStyle.ratios.length);

            for (int i = 0; i < numRatios; i++) {
                if (startStyle.colors[i] == null ||
                        endStyle.colors[i] == null) {
                    continue;
                }

                out.writeUI8(startStyle.ratios[i]);
                startStyle.colors[i].writeWithAlpha(out);

                out.writeUI8(endStyle.ratios[i]);
                endStyle.colors[i].writeWithAlpha(out);
            }
        } else if (fillType == SWFConstants.FILL_TILED_BITMAP
                || fillType == SWFConstants.FILL_CLIPPED_BITMAP) {
            int bitmapId = startStyle.bitmapId;

            out.writeUI16(bitmapId);

            startStyle.matrix.write(out);
            endStyle.matrix.write(out);
        }
    }
}

Zerion Mini Shell 1.0