small fixes
[swftools.git] / doc / swfc.xml
index bd1176e..8be7cca 100644 (file)
@@ -45,7 +45,7 @@ Shell scripts, commands to execute:
 Code:
     
     <code lang="sc">   (The lang= is optional)
-       .swf
+       .flash
            .box b1 100 100
        .end
     </code>
@@ -89,7 +89,7 @@ Boxes:
 
  <note>
   Though swfc is a command-line utility, there also exists a nice graphical
-  frontend for it, called <uri link="http://www.ucolick.de/~de/Snarf/quiss">Swifty</uri>.
+  frontend for it, called Swifty.
  </note>
 
  </section>
@@ -103,7 +103,7 @@ Boxes:
   </p>
 
   <code lang="swfc">
-.swf name="box.swf"
+.flash name="box.swf"
     .box b1 100 100 color=yellow fill=red
     .put b1 pin=center scale=0%
     .frame 100
@@ -118,14 +118,144 @@ Boxes:
 
  </section>
  
- <section><title>Text generation</title>
-  
+ <section><title>Color transforms</title>
+
+  <code lang="swfc">
+.flash name="cxform.swf" version=5
+    
+    .jpeg s1 "photo.jpeg" quality=80%
+
+    .put s1 x=50 y=50 scalex=110 scaley=110
+    .frame 100
+    .change s1 x=0 y=0 scalex=210 scaley=210 red=-1+255 green=-1+255 blue=-1+255 #invert
+    .frame 200
+    .change s1 x=100 y=50 scalex=110 scaley=110 red=0 green=+0 blue=+0 #remove red
+    .frame 300
+    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=2 blue=-1+255 #amplify green, invert blue
+    .frame 400
+    .change s1 x=50 y=100 scalex=110 scaley=110 red=2-128 green=-2+255 blue=+0.7+40 #alien glow
+    .frame 500
+    .change s1 x=0 y=0 scalex=210 scaley=210 red=8-1024 green=8-1024 blue=8-1024 #palette reduce
+    .frame 600
+    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=+0 blue=+0 #back to normal
+    .frame 700
+    .change s1 x=105 y=105 scalex=0 scaley=0 luminance=0 #fadeout
+.end
+  </code>
+ </section>
+
+</chapter>
+
+<chapter><title>Fonts</title>
+
+<section>
+
+swfc has font support. That means you can also insert texts into
+your animations.
+The easiest way to load a font is to do something like
+<c>
+    .font Arial filename="Arial.ttf"
+</c>
+.
+You now have a font named <c>Arial</c> to play with.
+For example, for the obligatory hello world program:
+
+  <code lang="swfc">
+.flash name="helloworld.swf"
+    
+    .font Arial filename="Arial.ttf"
+    .text helloworld font=Arial text="Hello World!"
+    .put helloworld
+.end
+  </code>
+
+Besides TrueType fonts, swfc also supports native SWF fonts.
+If you have a SWF with a font you would like to use, do a 
+<shell>
+    swfextract file.swf
+</shell>
+Then write down the font ID of the font, and do a
+<shell>
+    swfextract -f &lt;fontid&gt; file.swf -o myfont.swf
+</shell>
+.
+<p>
+This will give you a file named myfont.swf which you can
+also use in the <c>filename</c> parameter of <c>.font</c>.
+</p>
+
+<p>
+Furthermore, you can convert TTF and Type1
+fonts into SWF using <c>font2swf</c>:
+<shell>
+    font2swf Arial.ttf -o Arial.swf
+</shell>
+The nice advantage of this is that you can play
+Arial.swf in the flash player and see what the
+font looks like.
+(Also, loading a font in SWF format is slighly
+faster than from a TTF file, as with TTFs spline
+conversion has to take place).
+</p>
+
+</section>
+<section>
+<p>
+So much for the basics. Now let's go to the more advanced
+functionality.
+</p>
+
+<p>
+Apart from being able to define text in your swfc files,
+you can also define text <c>outlines</c>. 
+Those are not real characters but rather abstract vector 
+objects which you can use in other commands.
+</p>
+
+<code lang="swfc">
+.flash name="fontoutline.swf"
+    .font Arial "Arial.swf"
+    .textshape helloworld font=Arial text="Hello World"
+    .filled filled_helloworld outline=helloworld fill=blue line=5 color=green
+    .put filled_helloworld
+.end
+</code>
+
+Here, <c>.textshape helloworld</c> defines an outline named "helloworld",
+which is then used to construct a filled outline named filled_helloworld.
+
+To make this a little more interesting, let's fill with a gradient instead
+of a plain color:
+
+<code lang="swfc">
+.flash name="fontgradient.swf"
+    .font Arial "Arial.swf"
+    .textshape helloworld font=Arial text="SHADE"
+    
+    .gradient whitefade:
+       0% black
+       50% #505050
+       100% yellow
+    .end
+
+    .filled filled_helloworld outline=helloworld fill=whitefade line=1 color=#2c2c2c
+    .put filled_helloworld
+.end
+</code>
+
+But let's get back to normal <c>.text</c> characters.
+The following demonstrates that you can treat objects defined
+with <c>.text</c> like normal shapes, i.e., scale them, move them, and use
+them for clipping:
+
   <code lang="swfc">
-.swf name="text5.swf"
+.flash name="text5.swf"
 .font courier "Courier.swf"
 .font helvetica "Helvetica.swf"
-.text hithere text="HELLO" font=courier size=50% color=blue
-.shape scene Scenery50.swf
+.text hithere text="HELLO" font=courier size=50%
+.swf scene Scenery50.swf
 
 .frame 0
     .startclip hithere pin=center x=100 y=75 scale=50% #text clips...
@@ -136,9 +266,14 @@ Boxes:
 
 .end
   </code>
-  
+
+Also, <c>.text</c> takes a color attribute (that's actually
+the poor man's version of the more advanced filling options
+that <c>.textshape</c> in conjunction with <c>.filled</c> offers),
+which is used here together with the alpha parameter of <c>.change</c>:
+
   <code lang="swfc">
-.swf name="text6.swf"
+.flash name="text6.swf"
 .font courier "Courier.swf"
 .font helvetica "Helvetica.swf"
 .text hello text="HELLO" font=helvetica size=50% color=blue
@@ -155,33 +290,7 @@ Boxes:
  
  </section>
 
- <section><title>Color transforms</title>
+</chapter>
 
-  <code lang="swfc">
-.swf name="cxform.swf" version=5
-    
-    .shape s1 "photo.swf"
 
-    .put s1 x=50 y=50 scalex=110 scaley=110
-    .frame 100
-    .change s1 x=0 y=0 scalex=210 scaley=210 red=-1+255 green=-1+255 blue=-1+255 #invert
-    .frame 200
-    .change s1 x=100 y=50 scalex=110 scaley=110 red=0 green=+0 blue=+0 #remove red
-    .frame 300
-    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=2 blue=-1+255 #amplify green, invert blue
-    .frame 400
-    .change s1 x=50 y=100 scalex=110 scaley=110 red=2-128 green=-2+255 blue=+0.7+40 #alien glow
-    .frame 500
-    .change s1 x=0 y=0 scalex=210 scaley=210 red=8-1024 green=8-1024 blue=8-1024 #palette reduce
-    .frame 600
-    .change s1 x=0 y=0 scalex=210 scaley=210 red=+0 green=+0 blue=+0 #back to normal
-    .frame 700
-    .change s1 x=105 y=105 scalex=0 scaley=0 luminance=0 #fadeout
-.end
-  </code>
- </section>
-
-</chapter>
 </guide>