Package flash.swf.types

Examples of flash.swf.types.FillStyle


    private void printFillStyles(ArrayList fillstyles, boolean alpha)
    {
      Iterator it = fillstyles.iterator();
      while (it.hasNext())
      {
        FillStyle fillStyle = (FillStyle)it.next();
        indent();
        out.print("<fillstyle");
        out.print(" type='" + fillStyle.getType() + "'");
        if (fillStyle.getType() == FillStyle.FILL_SOLID)
        {
          out.print(" color='" + (alpha ? printRGBA(fillStyle.color) : printRGB(fillStyle.color)) + "'");
        }
        if ((fillStyle.getType() & FillStyle.FILL_LINEAR_GRADIENT) != 0)
        {
          if (fillStyle.getType() == FillStyle.FILL_RADIAL_GRADIENT)
            out.print( " typeName='radial'");
          else if (fillStyle.getType() == FillStyle.FILL_FOCAL_RADIAL_GRADIENT)
            out.print( " typeName='focal' focalPoint='" + ((FocalGradient)fillStyle.gradient).focalPoint + "'");
          // todo print linear or radial or focal
          out.print(" gradient='" + formatGradient(fillStyle.gradient.records, alpha) + "'");
          out.print(" matrix='" + fillStyle.matrix + "'");
        }
        if ((fillStyle.getType() & FillStyle.FILL_BITS) != 0)
        {
          // todo print tiled or clipped
          out.print(" idref='" + idRef(fillStyle.bitmap) + "'");
          out.print(" matrix='" + fillStyle.matrix + "'");
        }
View Full Code Here


        return a;
    }

    private FillStyle decodeFillStyle(int shape) throws IOException
    {
        FillStyle s = new FillStyle();

        s.type = r.readUI8();
        switch (s.type)
        {
        case FillStyle.FILL_SOLID: // 0x00
View Full Code Here

        Matrix matrix = new Matrix();
        matrix.scaleX = (int)(SwfConstants.TWIPS_PER_PIXEL * SwfConstants.FIXED_POINT_MULTIPLE);
        matrix.scaleY = (int)(SwfConstants.TWIPS_PER_PIXEL * SwfConstants.FIXED_POINT_MULTIPLE);
        matrix.hasScale = true; // Apply runtime scale of 20x for twips
       
        FillStyle fs = null;
        if (fileVersion.equalTo(FXGVersion.v1_0))
        {
          if (repeat)
            fs = new FillStyle(FillStyle.FILL_BITS, matrix, tag);
          else
            fs = new FillStyle(FillStyle.FILL_BITS | FillStyle.FILL_BITS_CLIP, matrix, tag);
        }
        else
        {
          if (fillMode.equals(FillMode.REPEAT))
          {
            fs = new FillStyle(FillStyle.FILL_BITS, matrix, tag);
          }
          else if (fillMode.equals(FillMode.CLIP))
          {
            fs = new FillStyle(FillStyle.FILL_BITS | FillStyle.FILL_BITS_CLIP, matrix, tag);
          }
          else if (fillMode.equals(FillMode.SCALE))
          {
            //override the scale for matrix
                matrix.scaleX = (int)StrictMath.rint((width*SwfConstants.TWIPS_PER_PIXEL * SwfConstants.FIXED_POINT_MULTIPLE)/(double)tag.width);
                matrix.scaleY = (int)StrictMath.rint((height*SwfConstants.TWIPS_PER_PIXEL * SwfConstants.FIXED_POINT_MULTIPLE)/(double)tag.height);
           
            //fill style does not matter much since the entire area is filled with bitmap
            fs = new FillStyle(FillStyle.FILL_BITS | FillStyle.FILL_BITS_CLIP, matrix, tag);
          }
        }

        // Apply Fill Styles
        ShapeWithStyle sws = new ShapeWithStyle();
View Full Code Here

        matrix.hasScale = true;

        // Create 9 identical fillstyles as a work around
        for (int i = 0; i < 9; i++)
        {
            FillStyle fs = new FillStyle(FillStyle.FILL_BITS | FillStyle.FILL_BITS_NOSMOOTH, matrix, bitmap);
            sws.fillstyles.add(fs);
        }

        int dxa = slt;
        int dxb = srt - slt;
View Full Code Here

    public void fillstyle(Attributes attributes) throws SAXParseException
    {
        DefineShape defineShape = (DefineShape)stack.peek();
        boolean hasAlpha = (defineShape.code == stagDefineShape3);
        FillStyle fillstyle = new FillStyle();
        if (hasAttribute(attributes, "color"))
        {
            fillstyle.setType(FillStyle.FILL_SOLID);
            fillstyle.color = hasAlpha ? parseRGBA(getAttribute(attributes, "color")) :
                    parseRGB(getAttribute(attributes, "color"));
        }
        if (hasAttribute(attributes, "gradient"))
        {
            // todo support radial gradients
            fillstyle.setType(FillStyle.FILL_LINEAR_GRADIENT);
            fillstyle.gradient = parseGradient(getAttribute(attributes, "gradient"), hasAlpha);
            fillstyle.matrix = parseMatrix(getAttribute(attributes, "matrix"));
        }
        if (hasAttribute(attributes, "idref"))
        {
            // todo support clipped bitmaps
            fillstyle.setType(FillStyle.FILL_BITS); // tiled
            int idref = parseInt(getAttribute(attributes, "idref"));
            // todo check to make sure bitmapId points to a bitmap
            fillstyle.bitmap = findCharacter(idref);
            fillstyle.matrix = parseMatrix(getAttribute(attributes, "matrix"));
        }
View Full Code Here

        if (count > 0)
        {
            Iterator<FillStyle> it = fillstyles.iterator();
            while (it.hasNext())
            {
                FillStyle style = (FillStyle) it.next();
                encodeFillStyle(style, w, shape);
            }
        }
    }
View Full Code Here

   * @param bounds - required for gradient ratio calculation
   * @return a new <code>FillStyle</code> representing the given paint
   */
  public static FillStyle build(Paint paint, Rectangle2D bounds, AffineTransform transform)
  {
    FillStyle fs = null;

    if (paint != null)
    {
      double width = bounds.getWidth();
      double height = bounds.getHeight();

      if (paint instanceof Color)
      {
        fs = new FillStyle(SwfUtils.colorToInt((Color)paint));
      }
      else if (paint instanceof GradientPaint)
      {
        GradientPaint gp = (GradientPaint)paint;
        AffineTransform gt = objectBoundingBoxTransform(transform.transform(gp.getPoint1(), null),
            transform.transform(gp.getPoint2(), null),
            width,
            height,
            width,
            height);
        fs = new FillStyle();
        fs.matrix = MatrixBuilder.build(gt);

        fs.type = FillStyle.FILL_LINEAR_GRADIENT;

                fs.gradient = new Gradient();
                fs.gradient.records = new GradRecord[2];
        fs.gradient.records[0] = new GradRecord(0, SwfUtils.colorToInt(gp.getColor1())); //from left
        fs.gradient.records[1] = new GradRecord(255,  SwfUtils.colorToInt(gp.getColor2())); //to right
      }
      else if (paint instanceof LinearGradientPaint)
      {
        LinearGradientPaint lgp = (LinearGradientPaint)paint;
                Point2D start = lgp.getStartPoint();
        Point2D end = lgp.getEndPoint();

        AffineTransform gt = objectBoundingBoxTransform(start, end, width, height, width, height);

        fs = new FillStyle();
        fs.matrix = MatrixBuilder.build(gt);

        Color[] colors = lgp.getColors();
        float[] ratios = lgp.getFractions();

        if (colors.length == 0 || colors.length != ratios.length) //Invalid fill so we skip
        {
          return null;
        }
        else if (colors.length == 1) //Solid fill
        {
          return new FillStyle(SwfUtils.colorToInt(colors[0]));
        }
        else
        {
          fs.type = FillStyle.FILL_LINEAR_GRADIENT;

          //Maximum of 8 gradient control points records
          int len = ratios.length;
          if (len > 8)
            len = 8;
                    fs.gradient = new Gradient();
                    fs.gradient.records = new GradRecord[len];

          for (int i = 0; i < len; i++)
          {
            fs.gradient.records[i] = new GradRecord((int)Math.rint(255 * ratios[i]), SwfUtils.colorToInt(colors[i]));
          }

        }
      }
      else if (paint instanceof RadialGradientPaint)
      {
        RadialGradientPaint rgp = (RadialGradientPaint)paint;

        //Note: Flash doesn't support the focal point of a radial gradient
        //Point2D cp = rgp.getCenterPoint();
        //Point2D fp = rgp.getFocusPoint();
        double diameter = rgp.getRadius() * 2.0;
        double outerX = diameter * rgp.getTransform().getScaleX();
        double outerY = diameter * rgp.getTransform().getScaleY();

        AffineTransform gt = objectBoundingBoxTransform(null, null, width, height, outerX, outerY);
        fs = new FillStyle();
        fs.matrix = MatrixBuilder.build(gt);

        fs.type = FillStyle.FILL_RADIAL_GRADIENT;

        Color[] colors = rgp.getColors();
        float[] ratios = rgp.getFractions();

                fs.gradient = new Gradient();
                fs.gradient.records = new GradRecord[ratios.length <= 8 ? ratios.length : 8];
        for (int i = 0; i < ratios.length && i < 8; i++)
        {
          fs.gradient.records[i] = new GradRecord((int)Math.rint(255 * ratios[i]), SwfUtils.colorToInt(colors[i]));
        }

      }
      else if (paint instanceof TexturePaint)
      {
        TexturePaint tp = (TexturePaint)paint;
        Image image = tp.getImage();

              LosslessImage losslessImage = new LosslessImage(image);
              int imageWidth = losslessImage.getWidth();
              int imageHeight = losslessImage.getHeight();
              DefineBitsLossless tag = DefineBitsLosslessBuilder.build(losslessImage.getPixels(), imageWidth, imageHeight);

        //Apply Twips Scale of 20 x 20
        AffineTransform at = new AffineTransform();
        at.setToScale(SwfConstants.TWIPS_PER_PIXEL, SwfConstants.TWIPS_PER_PIXEL);
        Matrix matrix = MatrixBuilder.build(at);

        fs = new FillStyle(FillStyle.FILL_BITS, matrix, tag);
      }

    }

    return fs;
View Full Code Here

        if (count > 0)
        {
            Iterator<FillStyle> it = fillstyles.iterator();
            while (it.hasNext())
            {
                FillStyle style = (FillStyle) it.next();
                encodeFillStyle(style, w, shape);
            }
        }
    }
View Full Code Here

    private void printFillStyles(ArrayList fillstyles, boolean alpha)
    {
      Iterator it = fillstyles.iterator();
      while (it.hasNext())
      {
        FillStyle fillStyle = (FillStyle)it.next();
        indent();
        out.print("<fillstyle");
        out.print(" type='" + fillStyle.getType() + "'");
        if (fillStyle.getType() == FillStyle.FILL_SOLID)
        {
          out.print(" color='" + (alpha ? printRGBA(fillStyle.color) : printRGB(fillStyle.color)) + "'");
        }
        if ((fillStyle.getType() & FillStyle.FILL_LINEAR_GRADIENT) != 0)
        {
          if (fillStyle.getType() == FillStyle.FILL_RADIAL_GRADIENT)
            out.print( " typeName='radial'");
          else if (fillStyle.getType() == FillStyle.FILL_FOCAL_RADIAL_GRADIENT)
            out.print( " typeName='focal' focalPoint='" + ((FocalGradient)fillStyle.gradient).focalPoint + "'");
          // todo print linear or radial or focal
          out.print(" gradient='" + formatGradient(fillStyle.gradient.records, alpha) + "'");
          out.print(" matrix='" + fillStyle.matrix + "'");
        }
        if ((fillStyle.getType() & FillStyle.FILL_BITS) != 0)
        {
          // todo print tiled or clipped
          out.print(" idref='" + idRef(fillStyle.bitmap) + "'");
          out.print(" matrix='" + fillStyle.matrix + "'");
        }
View Full Code Here

        else
          ShapeHelper.setStyles(shapeRecords, lineStyleIndex, fillStyle0Index, fillStyle1Index);

        if (fill != null)
        {
            FillStyle fillStyle = createFillStyle(fill, edgeBounds);
            sws.fillstyles = new ArrayList<FillStyle>(1);
            sws.fillstyles.add(fillStyle);
        }

        if (stroke != null)
View Full Code Here

TOP

Related Classes of flash.swf.types.FillStyle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.