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 version. 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 use. 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. Syntax ------ 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 Category 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. Syntax ------ Embed: <resource> = "filename" [, ...] where: <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 self-contained. 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", bitmap="pattern2.bmp", bitmap="zigzag.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. Syntax ------ <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, Pos=Screen(Center) } 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 types). 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 box. 4.5 The 'return' statement should be allowed in a ForEveryPixel handler. |