1. New Features

1.1 The "Make..." button, which creates a standalone filter, now works on

Windows NT 4.0 (but not on Windows 95). Note, however, that the Make

button is still non-functional (by intent) in the "crippled" Beta test


1.2 Three new built-in functions have been added to FM:

appendEllipsis(s) Returns string s with an ellipsis ("...") appended.

stripEllipsis(s) Returns string s with any trailing ellipsis removed.

formatString(s) Returns string s with the following substitutions made

for the designated 2-character substrings (all of which

begin with "!"):

substring is replaced by

!! "!" (i.e., a verbatim exclamation point)

!A text specified by the Author key

!a text specified by the About key

!C text specified by the Category key

!c text specified by the Copyright key

!D text specified by the Description key

!F text specified by the Filename key

!f the current Filter Case (e.g., "Flat image, no selection")

!H the name of the Host application (e.g., "Adobe Photoshop")

!M the current Image Mode (e.g., "RGB Color")

!T text specified by the Title key

!t text specified by the Title key, with any trailing ellipsis removed

!V text specified by the Version key

Caution: Other substrings beginning with "!" are reserved for future


You do not usually need to call formatString() explicitly, since it is

implicitly applied in the following cases:

- when displaying the text label for a dialog control,

- when displaying the items in a LISTBOX or COMBOBOX control,

- when displaying the dialog caption in the title bar,

- when displaying text in a Message Box via the msgBox(),

Info(), Warn(), Error(), ErrorOk(), YesNo(), or YesNoCancel()

built-in functions,

- when displaying the About text in the About dialog box.

For example, the default Dialog text is "!t (!f) [!M]", which formatString()

translates to something like "Filter Title (filter case) [Image Mode]" at

run time.

1.3 An "About" key has been added to allow the Filter Designer to specify the design

and content of the About box that is displayed when selected from Photoshop's

Help/About Plug-in... menu item. The syntax for the About key specification is

similar to the syntax for the Dialog key, and allows the FD to specify the

size, background, and text of the About box. However, in this release all

subkeys are ignored except the Text subkey, so only the Text subkey is documented

here. The background of the About box is set to a default bitmap image in

this release, and the About text is horizontally centered within a static

text box which has room for approximately 5 lines of 40 characters each.

The About text will be formatted by the formatString() function described

above before being displayed.


About: [Text = ] "quoted string" [other subkeys, ...]

The default About text is "!t Plug-in !V\n!C\n!c\n!A", which translates to

something like:

Filter Title Plug-in 1.0


Copyright Notice

Author's Name

Note that clicking the FM default logo also displays the About box.

1.4 An "Embed" key has been added to allow the Filter Designer to specify a set

of resources that are to be embedded in the standalone filter generated by

the Make button. Embeddable resources include bitmap files, metafiles, and

wave files.


Embed: <resource> = "filename" [, ...]


<resource> specifies the type of resource to be embedded, and may be

"Bitmap", "Metafile", or "Wave" (only "Bitmap" is implemented

in this release).

For example, if your filter uses "crazy glue.bmp" as a background

image for the dialog, your Dialog specification might look something

like this:

Dialog: ... image="crazy glue.bmp" ...

If you "Make" this into a standalone filter, the standalone filter

will search for the external bitmap file "crazy glue.bmp" in order

to draw the background. If you move the standalone filter to

another location without also copying the "crazy glue.bmp" file to

the same directory, then the standalone filter might not find

the "crazy glue.bmp" file, in which case it will revert to using

the specified (or default) background color or gradient instead

of the bitmap. Even worse, the standalone filter might find a

*different* file named "crazy glue.bmp", with unexpected results.

To avoid such problems, use the Embed key to tell FM to embed any

such external files as resources in the standalone filter. Then you

need distribute only the single .8bf file, which will be completely


In the above example, you would add an Embed specification following

the Dialog specification, similar to:

Dialog: ... image="crazy glue.bmp" ...

Embed: bitmap="crazy glue.bmp"

In a multi-filter example, where the background bitmap is changed for

each individual filter by calls to setDialogImage(), you would specify

a complete list of all the bitmaps you want to embed:

Dialog: image="patternwav.bmp",stretched

Embed: bitmap="patternwav.bmp",



1.5 A new FF+ statement, _eval_FFP{}, has been added to simplify the creation

of a multi-filter from a collection of Filter Factory source codes.


<FFP_statement> ::=

"_eval_FFP" "{" <FFP_eval_specification>* "}"

<FFP_eval_specification> ::=

<category_specification> |

<title_specification> |

<copyright_specification> |

<author_specification> |

<filename_specification> |

<description_specification> |

<version_specification> |

<dialog_specification> |

<control_specification> |

<control_val_specification> |

<FFP_channel_list> ":" <FFP_formula>

In other words, within the braces you can include any or all of the following

FF+ key specifications, and these will be evaluated at filter run time rather

than at compile time.:

_eval_FFP {

Category: ...

Title: ...

Copyright: ...

Author: ...

Filename: ...

Description: ...

Version: ...

Dialog: ...

Ctl[n]: ...

Val[n]: ...

R: ...

G: ...

B: ...

A: ...


For example, the statement:

_eval_FFP {

Dialog: "My Filter", Color=blue, NoTitlebar, Drag=background,



will be translated into the appropriate set of calls to the FM built-in

functions setDialogText(), setDialogColor(), clearDialogStyle(),

setDialogDragMode(), and setDialogPos(), which may then be executed at

run time as desired.

1.6 FM can now display Windows Metafiles (with or without an Aldus placeable

header) and Win32 Enhanced Metafiles on the surface of the dialog box.

2. Changes

2.1 The FilterMeister Lite/Beta plug-in now appears in the host application's

plug-in filter menu under the category "FilterMeister", not "AFH".

2.2 The default Category text is now "FilterMeister" rather than the null string.

The default Title text is now "My Filter" rather than the null string.

2.3 The default Dialog text is now "!t (!f) [!M]" (see 1.2 above).

2.4 Ellipses are automatically added or stripped from the filter Title text

as necessary for display in various contexts.

2.5 'switch' statements are now implemented.

2.6 'return' statements are now implemented (but only for integral/Boolean return


2.7 Advanced Edit Mode is deleted from the Beta test version.

2.8 The "Find..." button has been disabled for now.

2.9 The "Help..." button has been renamed "About...".

2.10 FM should now recognize the host signatures for Corel Xara and Adobe

Illustrator 7.

2.11 Elementary casts of the form (short), (int), (long), (bool), (float), and

(double) are now implemented. (More complex casts are still not allowed.)

2.12 The FD is now prompted to save his/her modified source code when necessary.

2.13 The source image is now always copied to the destination image before each

filter run.

2.14 FM-generated filters can now be applied to empty layers in the Editable

Transparency cases.

2.15 If FM can't load the file specified for the dialog background bitmap, you

are no longer given a choice of retrying or ignoring the error. Instead,

an error message is displayed and the bitmap is ignored. The background

is painted using the specified or default dialog color or gradient, and

no further attempt is made to load the bitmap file. (In a standalone

filter, the action is the same, but no error message is displayed.)

2.16 When importing a .8bf Filter Factory filter module, FM no longer tries

to load the secondary dynamic link libraries required by that module.

In particular, it is not necessary to have plugin.dll installed on your

system when importing a 48KB Filter Factory module.

3. Bug Fixes

3.1 In a STANDARD slider control, the numedit buddy control wasn't initialized

properly when the initial control range did not include 0. This has been

fixed in 0.4.10.

3.2 Specifying the MaxBox subkey in a Dialog specification allowed a user to

show the Advanced Edit Mode controls in the Beta version. To prevent this,

the Beta version now ignores the MaxBox subkey.

4. Known Problems

4.1 Non-constant specifications such as "range=(0,X)" do not work as expected

in standalone filters.

4.2 ToolTips don't work on Windows NT.

4.3 When importing a .8bf Filter Factory filter module, special characters such

as '\' are not properly escaped in the filename contained in the generated

Description specification.

4.4 Filters with no user-adjustable controls should not display a filter dialog


4.5 The 'return' statement should be allowed in a ForEveryPixel handler.