NAME¶
SWF::Shape - Shape class
SYNOPSIS¶
use SWF::Shape;
$shape = new SWF::Shape();
$dispitem = $movie->add($shape);
DESCRIPTION¶
SWF::Shape is the fundamental object of a flash movie.
METHODS¶
- new SWF::Shape()
- Creates a new Shape object.
- $shape->movePenTo($x, $y)
- Move the Shape's (imaginary) pen location to ($x, $y) in
the Shape's coordinate space.
- $shape->movePen($dx, $dy)
- Add ($dx, $dy) to the Shape's pen current location.
- $x = $shape->getPenX()
- Returns Pen's x-coordinates
- $y = $shape->getPenY()
- Returns Pen's y-coordinates
- ($x, $y) = $shape->getPen()
- Returns Pen's (x,y) coordinates
- $shape->drawLineTo($x, $y)
- Draw a line (using current line style, set by one of the
setLine...() methods) from the current position to ($x, $y).
- $shape->drawLine($dx, $dy)
- Draw a line (using current line style set by one of the
setLine...() methods) from the current position to displacement ($dx,
$dy).
- $shape->drawCurveTo($controlx, $controly, $anchorx,
$anchory)
- Draw a quadratic curve (using current line style, set by
one of the setLine...() methods) from current pen position to ($anchorx,
$anchory) using control point ($controlx, $controly).
- $shape->drawCurve($controldx, $controly, $anchorx,
$anchory)
- Draw a quadratic curve (using current line style, set by
one of the setLine...() methods) from current pen position to displacement
($anchordx, $anchordy) using displacement control point ($controldx,
$controldy).
- $shape->drawCubicTo($bx,$by,$cx,$cx,$dx,$dy)
- $shape->drawCubic($bx,$by,$cx,$cx,$dx,$dy)
- Draw a cubic curve (using current line style). [ToDo: Add
some more details and demo code]
- $shape->setLine($width, $r, $g, $b [,$a])
- Sets Shape's line width and color (RGB). To remove the
Shape's line style call $shape-> hideLine(). The used line width
for drawing is a product of $width argument and scale value set, see
SWF::setScale($scale). Arguments $r, $g, $b stand for red, green and blue
color parts, optional $a for alpha value.
- $shape->setLineStyle($width, $r, $g, $b [,$a])
- This OLD deprecated method is documented here only for
compatibility reason. The line width -in TWIPS units- is independent of
Ming scale value (more bug than feature).
- $shape->setLine2($width, $r, $g, $b ,$a, $flags,
$miterLimit)
- A new method available for SWF version >=8 setting
shape's line width and color (RGBA) with additional control flags (see
below) and miter limit. To remove the Shape's line style call $shape->
hideLine(). The used line width for drawing is a product of $width
argument and scale value set, see SWF::setScale($scale). Arguments $r, $g,
$b, $a stand for red, green, blue and alpha color parts. $a is not
optional here.
Available flags are: Line cap style: select one of the following flags
(default is round cap style)
SWF_LINESTYLE_CAP_ROUND
SWF_LINESTYLE_CAP_NONE
SWF_LINESTYLE_CAP_SQUARE
Line join style: select one of the following flags (default is round join
style)
SWF_LINESTYLE_JOIN_ROUND
SWF_LINESTYLE_JOIN_BEVEL
SWF_LINESTYLE_JOIN_MITER
Scaling flags: disable horizontal / vertical scaling
SWF_LINESTYLE_FLAG_NOHSCALE
SWF_LINESTYLE_FLAG_NOVSCALE
Enable pixel hinting to correct blurry vertical / horizontal lines: all
anchors will be aligned to full pixels
SWF_LINESTYLE_FLAG_HINTING
Disable stroke closure: if no-close flag is set caps will be applied instead
of joins.
SWF_LINESTYLE_FLAG_NOCLOSE
End-cap style: default round
SWF_LINESTYLE_FLAG_ENDCAP_ROUND
SWF_LINESTYLE_FLAG_ENDCAP_NONE
SWF_LINESTYLE_FLAG_ENDCAP_SQUARE
If join style is SWF_LINESTYLE_JOIN_MITER a miter limit factor must be set.
Miter max length is then calculated as: max miter len = miter limit *
width. If join style is not miter, this value will be ignored.
- $shape->setLineStyle2($width, $r, $g, $b ,$a, $flags,
$miterLimit)
- This OLD deprecated method is mentioned here only for
compatibility reason, you'd better use setLine2().
- $shape->setLine2Filled($width, $fill, $flags,
$miterLimit)
- A new method available for SWF version >=8 setting
shape's line width and fill style, $fill is an object of SWF::Fill class.
For other argument details see item $shape-> setLine2().
- $shape->setLine2StyleFilled($width, $fill, $flags,
$miterLimit)
- This OLD deprecated method is mentioned here only for
compatibility reason, you'd better use setLine2Filled().
- $shape->hideLine()
- Remove the Shape's line, i.e. make lines painted after this
method call invisible.
- $fill = $shape->addSolidFill($r, $g, $b [,$a])
- $fill = $shape->addFill($r, $g, $b [,$a])
- Adds a solid fill to $shape list of fill styles and returns
an SWF::Fill object. This object is used with the "
setLine()" method described below. The default value of $a is
0.
- $fill = $shape->addBitmapFill($bitmap [,FLAG])
- $fill = $shape->addFill($bitmap [,FLAG])
- Adds a bitmap fill to $shape list of fill styles and
returns an SWF::Fill object. This object is used with the "
setLine()" method described below.
$bitmap is an SWF::Bitmap object while FLAG argument can be
SWFFILL_TILED_BITMAP or SWFFILL_CLIPPED_BITMAP. Make sure to import these
constants to your package before useing it, i.e. use the following
statement:
use SWF::Fill <list of constants>;
The default value of FLAG is SWFFILL_TILED_BITMAP.
- $fill = $shape->addGradientFill($gradient [,FLAG])
- $fill = $shape->addFill($gradient [,FLAG])
- Adds a gradient fill to $shape list of fill styles and
returns an SWF::Fill object. This object is used with the "
setLine()" method described below.
$gradient is an SWF::Gradient object while FLAG argument can be
SWFFILL_LINEAR_GRADIENT or SWFFILL_RADIAL_GRADIENT, plus
SWFFILL_FOCAL_GRADIENT for V8. Make sure to import these constants to your
package before useing it, i.e. use the following statement:
use SWF::Fill <list of constants>;
The default value of FLAG is SWFFILL_LINEAR_GRADIENT.
- $shape->xs_setLeftFill($fill)
- $shape->setLeftFill($fill)
- Sets the fill on the left side of the edge. $fill is an
SWF::Fill object returned from "addFill" method.
- $shape->setLeftFill($r, $g, $b [,$a])
- This is another way of saying:
my $fill = $shape->addSolidFill($r, $g, $b [,$a]);
$shape->setLeftFill($fill);
- $shape->xs_setRightFill($fill)
- $shape->setRightFill($fill)
- Sets the fill on the right side of the edge. $fill is an
SWF::Fill object returned from "addFill" method.
- $shape->setRightFill($r, $g, $b [,$a])
- This is another way of saying:
my $fill = $shape->addSolidFill($r, $g, $b [,$a]);
$shape->setRightFill($fill);
- $shape->drawCircle($r)
- Draws a circle with radious $r, also changes current
position.
- $shape->drawArc($r, $startAngle, $endAngle)
- Draws an arc with radious $r form start to end.
- $shape->useVersion(version)
- This function allows to set the shapes version information.
The version is only a hint. If necessary the version is upgraded. Valid
values: are 3 and 4. Value of 3 is default, but 4 if linestyle2 is used.
Some shape features are available only for shape version 4 and SWF file
version>=8. One example is the usage of focal gradients:
$g = new SWF::Gradient();
$g->setFocalPoint(-0.9);
$g->addEntry(0.000000,0xff,0x00,0x00,0xff);
$g->addEntry(1.000000,0x00,0xff,0x00,0xff);
$shape->useVersion(4);
$shape->addGradientFill($g,SWFFILL_FOCAL_GRADIENT);
- $version = $shape->getVersion()
- Gets the current shape object version.
- $shape->dumpOutline()
- Returns a string describing shape's outline. After drawing
in a shape expect getting a multi-line string like:
moveto 368,5
curveto 348,5 327,1
curveto 307,-3 284,-15
etc. etc.
- $shape->end()
- Stops drawing on this shape and make the shape complete.
Further method calls won't produce any lines, circles etc. By using this
demo code later no circle is painted:
$shape->drawLineTo(300,300);
$shape->end();
$shape->drawCircle(200);
- $shape->drawGlyph($font, $cnumber [, $size])
- Draws character of $cnumber of $font. Also Unicode fonts
are possible, if the font does provide that, just like next example:
$font=new SWF::Font("Thai-Bold.fdb");
$sh->drawGlyph($font, 0x0E44, 44);
- $shape->drawCharacterBounds($character)
- Draws an outer rectangle fitting for $character, an object
of SWF::Character.
- $shape->setRenderHintingFlags(flags)
- Set render hinting flags. Possible values are
SWF::Constants::SWF_SHAPE_USESCALINGSTROKES and
SWF::Constants::SWF_SHAPE_USENONSCALINGSTROKES
This method also will set version of this SWF::Shape object to 4.
AUTHOR¶
Soheil Seyfaie (soheil at users.sourceforge.net), Albrecht Kleine
SEE ALSO¶
SWF, SWF::Bitmap, SWF::Button, SWF::Constants, SWF::DisplayItem, SWF::Fill,
SWF::Font, SWF::Gradient, SWF::Morph, SWF::Movie, SWF::MovieClip,
SWF::TextField, SWF::Text, SWF::Character