<FFW_program>

Parses a Filter Factory Wizard program.

(Mario Klingemann)?'s Filter Factory Wizard modified and extended the AFS text file format to provide a more general and complete way to save the design parameters of a Filter Factory filter. This format was also proposed as the basis for the general publication format used in the (FFDG)?.

The FFW format improves on the AFS format by explicitly tagging all fields, and adding fields for the filter Category, Title, Copyright, Author, and Filename information. It also allows one to specify which sliders are actually used by the filter, and the labels of these sliders.

Syntax

<FFW_program> :
[ %FFW ] //optional header
{ <FFW_key_value_pair> }+
<end_of_program>
<FFW_key_value_pair> :
Category : <text_field>
{ Title | Name } : <text_field>
Copyright : <text_paragraph>
Author : <text_field>
Filename : <text_field>
Description : <text_paragraph>
R : (<C_language_expression>)?
G : (<C_language_expression>)?
B : (<C_language_expression>)?
A : (<C_language_expression>)?
ctl <index> : <text_field>
val <index> : <preset>
<text_field> :
(<string_literal>)?
<bare_text_field> //obsolescent
<text_paragraph> :
(<string_literal>)?
<bare_text_paragraph> //obsolescent
<bare_text_field> :
{(<char>)?}* (<eol>)?
<bare_text_paragraph> :
{(<char>)?}* <p>
<index> :
[ (<integer_constant>)? ]
( (<integer_constant>)? ) //obsolescent

Examples

The following is an example of a FFW program file (MyFilter1.ffw):

    %FFW
    Category: MyFilters
    Title: My First Filter
    Filename: MyFilter1
    Author: Plato
    Copyright: &copy; 2008
    Description: My very first plug-in filter.
    R:(r-g)/2
    G:(g+b)/2
    B:(b/2) + ctl(0)
    A:255
    ctl[0]: Red Mix
    val[0]: 0
    ctl[1]: Green Mix
    val[1]: 10
    ctl[2]: Blue Mix
    val[2]: 120

The following is a more elaborate example:

Category: AFH
Title: AFH Beveler 2.0b...
Copyright: Copyright © 1998 AFH Web Design
           http://www.afh.com/web/design.html
Author: Alexander F. Hunter
Filename: afhbev2b.8bf

R:((x<val(7,0,M))&&(y>=x)&&(y<Y-x))?scl(c,0,255,ctl(0),ctl(1)*2)+ctl(4)-128:
((y<val(7,0,M))&&(x>y)&&(x<X-y))?scl(c,0,255,ctl(0),ctl(1)*2)-ctl(4)+128:
((X-x<=val(7,0,M))&&(Y-y>=X-x)&&(y>x-X))?scl(c,0,255,ctl(2),ctl(3)*2)+ctl(5)-128:
((Y-y<=val(7,0,M))&&(X-x>Y-y)&&(x>y-Y))?scl(c,0,255,ctl(2),ctl(3)*2)-ctl(5)+128:c

G:((x<val(7,0,M))&&(y>=x)&&(y<Y-x))?scl(c,0,255,ctl(0),ctl(1)*2)+ctl(4)-128:
((y<val(7,0,M))&&(x>y)&&(x<X-y))?scl(c,0,255,ctl(0),ctl(1)*2)-ctl(4)+128:
((X-x<=val(7,0,M))&&(Y-y>=X-x)&&(y>x-X))?scl(c,0,255,ctl(2),ctl(3)*2)+ctl(5)-128:
((Y-y<=val(7,0,M))&&(X-x>Y-y)&&(x>y-Y))?scl(c,0,255,ctl(2),ctl(3)*2)-ctl(5)+128:c

B:((x<val(7,0,M))&&(y>=x)&&(y<Y-x))?scl(c,0,255,ctl(0),ctl(1)*2)+ctl(4)-128:
((y<val(7,0,M))&&(x>y)&&(x<X-y))?scl(c,0,255,ctl(0),ctl(1)*2)-ctl(4)+128:
((X-x<=val(7,0,M))&&(Y-y>=X-x)&&(y>x-X))?scl(c,0,255,ctl(2),ctl(3)*2)+ctl(5)-128:
((Y-y<=val(7,0,M))&&(X-x>Y-y)&&(x>y-Y))?scl(c,0,255,ctl(2),ctl(3)*2)-ctl(5)+128:c

A:a

ctl[0]: Top/left black level:
ctl[1]: Top/left white level:
ctl[2]: Bot/right black level:
ctl[3]: Bot/right white level:
ctl[4]: Top/left balance:
ctl[5]: Bot/right balance:
ctl[7]: Bevel width:

val[0]: 28
val[1]: 201
val[2]: 0
val[3]: 76
val[4]: 82
val[5]: 149
val[7]: 8

Also see

Command Reference, Syntax, <FM_program>