Difference between revisions of "Swf.php"

From Organic Design wiki
(Triangle vector (for border corners))
(Linear gradient)
Line 10: Line 10:
  
 
# Hard wired common vector shapes (later converted to Ming from SVG)
 
# Hard wired common vector shapes (later converted to Ming from SVG)
 +
 +
# Black block (for spacers and fills)
 +
$shape = new SWFShape();
 +
$shape->setRightFill( 0, 0, 0 );
 +
$shape->movePenTo( 100, 100 );
 +
$shape->drawLineTo( -100, 100 );
 +
$shape->drawLineTo( -100, -100 );
 +
$shape->drawLineTo( 100, -100 );
 +
$shape->drawLineTo( 100, 100 );
 +
$sym = new SWFSprite();
 +
$sym->add( $shape );
 +
$sym->nextFrame();
 +
$swf->addExport( $sym, 'black' );
 +
 +
# White block (for spacers and fills)
 +
$shape = new SWFShape();
 +
$shape->setRightFill( 255, 255, 255 );
 +
$shape->movePenTo( 0, 0 );
 +
$shape->drawLineTo( 0, 767 );
 +
$shape->drawLineTo( 1023, 767 );
 +
$shape->drawLineTo( 1023, 0 );
 +
$shape->drawLineTo( 0, 0 );
 +
$sym = new SWFSprite();
 +
$sym->add($shape);
 +
$sym->nextFrame();
 +
$swf->addExport( $sym, 'white' );
 +
 +
# Selection area
 +
$shape = new SWFShape();
 +
$shape->setLine( 0, 255, 0, 0 );
 +
$shape->movePenTo( 100, 100 );
 +
$shape->drawLineTo( -100, 100 );
 +
$shape->drawLineTo( -100, -100 );
 +
$shape->drawLineTo( 100, -100 );
 +
$shape->drawLineTo( 100, 100 );
 +
$sym = new SWFSprite();
 +
$sym->add( $shape );
 +
$sym->nextFrame();
 +
$swf->addExport( $sym, 'select' );
  
 
# Triangle
 
# Triangle
Line 22: Line 61:
 
$triangle->nextFrame();
 
$triangle->nextFrame();
 
$swf->addExport( $triangle, 'triangle' );
 
$swf->addExport( $triangle, 'triangle' );
 +
 +
# Linear Gradient
 +
$shape=new SWFShape();
 +
$grad = new SWFGradient();
 +
$grad->addEntry( 0.0, 0, 0, 0, 0xff );
 +
$grad->addEntry( 1.0, 0, 0, 0, 0 );
 +
$fill = $shape->addFill( $grad, SWFFILL_LINEAR_GRADIENT );
 +
$fill->scaleTo( 0.097 );
 +
$fill->moveTo( -18, 0 );
 +
$shape->setRightFill( $fill );
 +
$shape->movePenTo( 100, -100 );
 +
$shape->drawLineTo( -100, -100 );
 +
$shape->drawLineTo( -100, 100 );
 +
$shape->drawLineTo( 100, 100 );
 +
$shape->drawLineTo( 100, -100 );
 +
$sym = new SWFSprite();
 +
$sym->add($shape);
 +
$sym->nextFrame();
 +
$swf->addExport( $sym, 'linear' );
  
 
# Ball
 
# Ball

Revision as of 06:54, 15 March 2006

<?

  1. SWF Compiler for XmlWiki Environment
  1. todo: get w,h,bg,fps,params,output-method from properties
  1. todo: create basic object set: square, circle, triangle, linear, radial



  1. Hard wired common vector shapes (later converted to Ming from SVG)
  1. Black block (for spacers and fills)

$shape = new SWFShape(); $shape->setRightFill( 0, 0, 0 ); $shape->movePenTo( 100, 100 ); $shape->drawLineTo( -100, 100 ); $shape->drawLineTo( -100, -100 ); $shape->drawLineTo( 100, -100 ); $shape->drawLineTo( 100, 100 ); $sym = new SWFSprite(); $sym->add( $shape ); $sym->nextFrame(); $swf->addExport( $sym, 'black' );

  1. White block (for spacers and fills)

$shape = new SWFShape(); $shape->setRightFill( 255, 255, 255 ); $shape->movePenTo( 0, 0 ); $shape->drawLineTo( 0, 767 ); $shape->drawLineTo( 1023, 767 ); $shape->drawLineTo( 1023, 0 ); $shape->drawLineTo( 0, 0 ); $sym = new SWFSprite(); $sym->add($shape); $sym->nextFrame(); $swf->addExport( $sym, 'white' );

  1. Selection area

$shape = new SWFShape(); $shape->setLine( 0, 255, 0, 0 ); $shape->movePenTo( 100, 100 ); $shape->drawLineTo( -100, 100 ); $shape->drawLineTo( -100, -100 ); $shape->drawLineTo( 100, -100 ); $shape->drawLineTo( 100, 100 ); $sym = new SWFSprite(); $sym->add( $shape ); $sym->nextFrame(); $swf->addExport( $sym, 'select' );

  1. Triangle

$shape = new SWFShape(); $shape->setRightFill( 0, 0, 0 ); $shape->movePenTo( 100, -100 ); $shape->drawLineTo( -100, -100 ); $shape->drawLineTo( -100, 100 ); $shape->drawLineTo( 100, -100 ); $triangle = new SWFSprite(); $triangle->add( $shape ); $triangle->nextFrame(); $swf->addExport( $triangle, 'triangle' );

  1. Linear Gradient

$shape=new SWFShape(); $grad = new SWFGradient(); $grad->addEntry( 0.0, 0, 0, 0, 0xff ); $grad->addEntry( 1.0, 0, 0, 0, 0 ); $fill = $shape->addFill( $grad, SWFFILL_LINEAR_GRADIENT ); $fill->scaleTo( 0.097 ); $fill->moveTo( -18, 0 ); $shape->setRightFill( $fill ); $shape->movePenTo( 100, -100 ); $shape->drawLineTo( -100, -100 ); $shape->drawLineTo( -100, 100 ); $shape->drawLineTo( 100, 100 ); $shape->drawLineTo( 100, -100 ); $sym = new SWFSprite(); $sym->add($shape); $sym->nextFrame(); $swf->addExport( $sym, 'linear' );

  1. Ball

$sym = new SWFSprite(); $g = new SWFGradient(); $g->addEntry( 0.0, 0xff, 0xff, 0xff ); $g->addEntry( 1.0, 0, 0, 0 ); $ball = new SWFShape(); $f = $ball->addFill( $g, SWFFILL_RADIAL_GRADIENT ); $f->scaleTo( 0.2 ); $f->moveTo( 40, -60 ); $ball->setRightFill( $f ); $ball->drawCircle( 100 ); $sym->add( $ball ); $sym->nextFrame(); $swf->addExport( $sym, 'ball' );



  1. Check weather required extentions are available (GD2 and Ming)

global $xwDebug; $ext = get_loaded_extensions(); if (!in_array('gd', $ext)) xwMessage("Warning: GD extention not loaded! (image processing unavailable)",'red'); else { $gdi = gd_info(); ereg('([0-9])([0-9.]+)', $gdi['GD Version'], $m); if ($xwDebug) xwMessage("GD Version is $m[1]$m[2]"); if ($m[1] < 2) xwMessage("Warning: At least GD version 2 required (image processing unavailable)",'red'); } if (!in_array('ming', $ext)) xwMessage("Ming extention not loaded! (at least version 0.3 required)",'red'); elseif ($xwDebug) xwMessage("Ming extention ok.");

  1. Override <language> in properties object to 'raw' so no wiki-parsing

$node = $properties->create_element('language'); $node->set_content('raw'); $root = $properties->document_element(); $lang = xwXPathQuery($properties, "/properties/language"); if (is_array($lang) && count($lang)) $lang[0]->replace_node($node); else $root->append_child($node);

  1. Get compile parameters from properties object

$output = count($results = xwXPathQuery($properties, "$path/output")) ? $results[0]->get_content() : 'html'; $width = count($results = xwXPathQuery($properties, "$path/width")) ? $results[0]->get_content() : 200; $height = count($results = xwXPathQuery($properties, "$path/height")) ? $results[0]->get_content() : 150; $frameRate = count($results = xwXPathQuery($properties, "$path/frameRate")) ? $results[0]->get_content() : 25; $bg = count($results = xwXPathQuery($properties, "$path/background")) ? $results[0]->get_content() : '#cccccc'; eregi('^#([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$',$bg,$m); list(,$r,$g,$b) = $m;

  1. Create new SWF

ming_useswfversion(6); $swf = new SWFMovie(); $swf->setDimension($width, $height); $swf->setBackground(hexdec($r), hexdec($g), hexdec($b)); $swf->setRate($frameRate); if ($xwDebug) xwMessage("SWF movie created ($width"."x$height@$frameRate"."fps)");

  1. If output is html embed object as url, else output swf now and die

if ($output == 'html') { $url = "$script?title=$title&xpath:/properties/ming-swf/output:=swf"; $article = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" width=\"$width\" height=\"$height\" id=\"$title\" align=\"\" type=\"application/x-shockwave-flash\" data=\"$title\"> <param name=\"movie\" value=\"$title\"> <param name=\"quality\" value=\"high\"> <param name=\"bgcolor\" value=\"$bg\"> <embed src=\"$url\" quality=\"high\" bgcolor=\"$bg\" width=\"$width\" height=\"$height\" align=\"\" name=\"$title\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /> </object>"; } else { eval($article); ob_end_clean(); header('Content-Type: application/x-shockwave-flash'); $swf->output(9); die(); }

?>