Filter Foundy extension by Daniel Marschall

Filter Foundry is an OpenSource plugin for Photoshop, written by Toby Thain.

The latest official release is 1.6b1 (7 June 2009), released for Windows and Macintosh.

I have continued development and added several new features and fixed a lot of bugs. I also created a 64-bit plugin.

Download the current inofficial pre-release of 1.7b1 (SVN revision 191), dated 30 October 2019:

Download 1.7b1 inofficial pre-release for Windows 32-bit

Download 1.7b1 inofficial pre-release for Windows 64-bit

See official SVN repository / SVN snapshot

The version 1.7b1 has not officially been released by Toby Thain yet; also the tests and release for the Macintosh plugins needs to be done.


- Fixed crash at filter startup when computer had too much RAM.
- Fixed crash where built obfuscated filters could not be opened.
- Added function rst(i) which is an undocumented function in Filter Factory for setting a random seed.
- Size PARM_SIZE in PARM ressource corrected.
- Added Visual Studio project file, and extended NMake script to support flex and bison compilation.
- Dialogs (build dialog, open and save dialogs) are now modal, i.e. the main window is locked when they are open. (*)
- The preview dialog has now a hand cursor. (Open hand on hover. Grabbing hand on panning) (*)
- Dialog boxes now have an [X] button to close the window.
- Preview: Checkerboard does only move when the panning actually suceeded (the picture didn't went off border)
- Bugfix: In the preview window, you could (virtually) pan the image beyond the canvas,
so that you needed to pan multiple times in the opposite direction to get to the position "0" again.
- The "version information" of standalone filters is now individualized by the creators input
- Win64 support (*)
- All undocumented symbol aliases of FilterFactory are now supported (rmin, rmax, cnv0, etc.)
- Bugfix: In some cases, the preview image had a small stripe of random pixels at the right or bottom.
- For disabled sliders, the corresponding label is now also grayed out (*)
- Bugfix: In standalone filters, the unused ctl() labels were not hidden. They are now invisible as intended.
- Bugfix: At standalone filters, the "map" text was not displayed; instead, the two "ctl" texts were displayed.
- AFS Files are now compatible with FilterFactory. (FilterFactory does ONLY understand "\r" (0D) linebreaks, while
FilterFoundry always saved "\n" (0A) linebreaks, while being able to read "\r", "\n" or "\r\n". Now, "\r" is used
for saving.) (*)
- The "caution" sign that indicates an error in the expression now has a hand cursor that shows up when
you hover over the icon, to indicate that the user will receive more information if they click on the icon (*)
- The "caution" sign now has a sharper design (it was a bit pixelated).
- The expression input fields now have a vertical scrollbar (*)
- YUV formulas are now more accurate. They are slightly different, but not much.
The i range is now [0..255] instead of [0..254]. (This means that pure white has now i=255 instead of i=254)
The u range stays at [-55..55].
The v range is now [-78..78] instead of [-77..77].
- Bugfix: If ctl() or map() was called with a non-constant argument, the controls in the build dialogs
were not correctly enabled/disabled, and built standalone filters did not get the correct
"needs UI" flag. Fixed.
- In the build dialog, if map() was used, the corresponding ctl()-labels now can't be changed anymore,
since the resulting standalone filter won't show them anyway.
- Warning windows (alertuser and simplealert function) are now modal. (*)
- Bugfix: Trigonometry functions sin and cos had wrong output ranges for Windows (it was -1024..1024 instead of
the documented output range -512..512). Fixed.
- Bugfix: Trigonometry function tan now behaves like in Filter Factory
- Bugfix: Function c2d() now behaves like in Filter Factory. Implementation changed from atan2(-y,-x) to atan2(y,x).
- Bugfix: The cell values used by the functions get() and put() were not (re-)initialized before the filter started running.
This caused that expressions like "put(get(0)+1,0)" produced different results at each run.
- Adobe Premiere FilterFactory/TransitionFactory filters (.pff Settings and .prm 16/32 bit Windows Standalone Filters) can now be imported (*)
- Old FilterFactory standalone filters for MacOS can now be imported (*)
- In Windows, the "load" algorithm will now first check if a file is an AFS/PFF file, and then if it is a standalone filter.
Due to this, files can now opened, even if they have the wrong file extension.
- Bugfix: When state changing functions (rst, rnd or put) are used within the formula,
every pixel in the picture will now be evaluated during preview, even if the user
has zoomed in.
- Fixed "off by one" bug where you could pan a fit-zoomed picture by 1 pixel in the preview
- The preview area now has a dark off-canvas area and for Windows, a "sunken" border
- Windows: Visual Styles are now supported and always be applied
- Bugfix: If you click the zoomlevel-caption for a tiny picture, the zoom ("fit zoom") won't zoom in to >100% anymore.
- Building of standalone filters is now possible with Windows 9x
(requires compilation using an old Windows SDK, or compilation using OpenWatcom)
- Fixed TLV lengths in the PIPL structure (includes now paddings).
This might solve incompatibilities with non-Photoshop hosts (i.e. GIMP).
- GIMP (using PSPI to load 8BF plugins) and IrfanView is now compatible.
- c2m() and sqr() are now approximately 3 times faster
- Build of plugins with empty title or category will now be prevented,
since plugins with empty category or title won't be shown in the filter menu.
- Fixed Actions (recording/playback). Several things like the AETE resource were broken.
The classID had to be changed to 'Fltr' so that the parameters are shown in the
Photoshop Action tab. (*)
- Scripting/Actions: For standalone filters, the name of the sliders
are now written in the 'Actions' tab. The function 'fixaete' was replaced with 'aete_generate'. (*)
- "MaxSpace64" will now be used, if supported by the host
(Changes by Daniel Marschall)

(*) This bug/solution was tested on Windows but needs to be verified and/or implemented on Mac.