L'extension FFL.MAC

Introduction:

Le jeu de macros:

Présentation générale

Finalité:

FFL.MAC est une extension du langage PT destinée à l'écriture de fichiers .FFL (Filter Factory Library) et à la génération de documentations concernant ses fichiers.

FFL.MAC introduit un certain nombre de macros spécifiques qui complètent ou se substituent aux macros PT standards.

Format général des fichiers .PT pour .FFL

Code Résultat
#include "ffl.mac" inclusion des macros spécifiques
_BeginFFL(<Version>,<NFiltre>) _BeginFFL se substitue à _Begin. <Version> est la version FFL (1.0 a priori). <NFiltre> est le nombre de filtres (id. le nombre de pages définies par _bFilter _eFilter).
_bFirstPage(<Title>,<Name>,<KW>)
_FFLCom(
...
)
_eFirstPage
Définit la première page d'introduction de la documentation du fichier .FFL. Elle permet d'inserer un menu des filtres. Elle ne doit avoir aucune répercution sur le fichier .FFL. C'est pourquoi il est nécessaire d'insérer la macro _FFLCom qui permet de ne faire apparaître le texte que dans la documentation.
_bFilter(...)
...
_eFilter
Définition d'un filtre. Le fichier se compose d'une liste de telles pages. Tout autre texte doit être inséré en argument de la macro _FFLCom.
...
_bFilter(<Title>,<FileName>,<Cat>,<Author>)
...
_eFilter
<Title>: nom du filtre
<FileName>: nom de la page et le nom du fichier (1 mot)
<Cat>: catégorie
<Author>: nom de l'auteur.
_EndFFL _EndFFL se substitue à _End.

Format d'écriture d'un filtre

Code Résultat
_bFilter(<Title>,<FileName>,<Cat>,<Author>)
<Title>: nom du filtre
<FileName>: nom de la page et le nom du fichier (1 mot)
<Cat>: catégorie
<Author>: nom de l'auteur.
_Description(
<Text>
)
_Description est facultatif.
<Text>: texte descriptif du filtre.
_Sliders(
<h0>,<v0>,<d0>,
...
<h7>,<v7>,<d7>)
_Sliders définit les 8 paramètres.
<hi>: texte de l'entête du i-ième paramètre.
<vi>: est la valeur initiale du i-ième paramètre.
<di>: description du i-ième paramètre.
_bAuxVar
_nAuxVar(<num>,<Text>)
...
_eAuxVar
définit les variables auxilliaires.
<num>: numéro de la variable.
<Text>: description de la variable.
_Functions(
<di>,<fi>,
<dr>,<fr>,
<dg>,<fg>,
<db>,<fb>,
<da>,<fa>)
décrit et définit les fonctions du filtre.
calculs préliminaires.
rouge
vert
bleu
opacité
_eFilter

Remarques:

Les différents styles de caractères

Description:

Le jeux de commandes de styles de caractères a été complété :

La définition des paramètres

Description:

Chaque filtre (cf. format d'écriture d'un filtre) doit impérativement employer, avant (la définition des fonctions,funct) l'une des macros _Sliders<i> (0,<=<i><=8), _NoSliders, _Sliders qui définissent les paramètres du filtre.

_NoSliders, _Sliders sont respectivement équivalents à _Sliders0 et _Sliders8

Paramètres:

Les arguments h<i> définissent les entêtes des paramètres tels qu'ils apparaissent dans GIMP. Les arguments v<i> définissent les valeurs initiales (ou valeurs par défaut) des paramètres. Les arguments d<i> permettent de nommer et de décrire les paramètres.

Exemple:



_Sliders5(
Red,255,_Math(i\[0\]) rouge de la couleur attractrice,
Green,255,_Math(i\[1\]) vert de la couleur attractrice,
Blue,255,_Math(i\[2\]) bleu de la couleur attractrice,
Min. Radius, 64,_Math(m),
Max. Radius,128,_Math(M)
)

La définition de variables auxilliaires

Description:

Un nouvel environnement (_bAuxVar, _eAuxVar, _nAuxVar) a été ajouté afin de documenter l'emploi des variables auxilliaires.

Paramètres:

L'argument <num> définit le numéro de la variable et <d> est sa description.

Exemple:



_bAuxVar
_nAuxVar(0,_Math(d)"," la distance entre les couleurs)
_eAuxVar

La définition des fonctions

Description:

Chaque filtre (cf. format d'écriture d'un filtre) doit impérativement employer, en fin de page, l'une des fonctions _Functions, _LargeFunctions, _SmallFunctions qui définissent les formules du filtre.

Paramètres:

Les paramètres fi, fr, fg, fb, fa contiennent respectivement la partie d'initialisation et les formules définissant le rouge, le vert, le bleu et l'opacité. Les paramètres di, dr, dg, db, da contiennent les descriptions de ces formules. Cependant le contenu de ces derniers paramètres varient suivant la macro.:

Les descriptions de la macro. _Functions ne contiennent que les descriptions. En revanche, les descriptions de la macro. _LargeFunctions englobent également les formules; les parties hors-formules doivent être mise en paramètre des macro. _FFLCom. La macro. _Formula a été ajoutée pour simplifier l'écriture des paramètres de _LargeFunctions. d est la description (l'emploi de _FFLCom est inutile), fff est la formule.

Exemple:



_LargeFunctions(
_Formula(
calcul de la distance euclidienne _Math(d)
,
"put(c2m(c2m(r-ctl(0),g-ctl(1)),b-ctl(2)),0),"
)
,
"c",
"c",
"c",
_Formula(
calcul de l`opacité si _Math(M!=m)
_MathForm("a = scl(d, m, M, 255, 0)")
calcul de l`opacité si _Math(M==m)
_MathForm(a = 255 si d\<m = 0 sinon)
, "ctl(3)==ctl(4)?(get(0)\<ctl(3)?255:0):scl(get(0),ctl(3),ctl(4),255,0)"
)
)

Les specifications de formats

Description:

Afin de permettre l'insertion de textes spécifiques au fichier .FFL ou/et à sa documentation, le jeu de macros suivant a été introduit :

Exemple



#include "ffl.mac"
_BeginFFL(1.0,1)
_bFilter("Opacity to Color...",O2C1,Test,STyx)
_Description(
visualise l'opacité de manière différente sur chaque canal:
_benumerate
_item rouge: proportionnel à l'opacité (_FF(r = a))
_item vert: noir=transparence totale (vert sinon)
_item bleu: bleu=opacité totale (noir sinon)
_eenumerate
)
_NoSliders // pas de paramètres
_SmallFunctions(
,
"a",
"a==0?0:255",
"a==255?255:0",
"255") // pas de description des fonctions
_eFilter
_EndFFL