Subversion Repositories filter_foundry

Rev

Rev 170 | Rev 172 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 toby 1
/*
18 toby 2
    This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop
171 dmarschall 3
    Copyright (C) 2003-2019 Toby Thain, toby@telegraphics.com.au
2 toby 4
 
5
    This program is free software; you can redistribute it and/or modify
106 dmarschall 6
    it under the terms of the GNU General Public License as published by
2 toby 7
    the Free Software Foundation; either version 2 of the License, or
8
    (at your option) any later version.
9
 
10
    This program is distributed in the hope that it will be useful,
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
    GNU General Public License for more details.
14
 
106 dmarschall 15
    You should have received a copy of the GNU General Public License
2 toby 16
    along with this program; if not, write to the Free Software
17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
*/
19
 
20
/*
21
22-Feb-2003: started 0.1b1
22
23-Feb-2003: released 0.1b1,0.2b1
23
24-Feb-2003: 0.3b1,b2
24
25-Feb-2003: 0.3b3,b4
25
27-Feb-2003: 0.4b1 - with preview
26
01-Mar-2003: 0.4b4,5,6 - finally! live sliders
27
02-Mar-2003: 0.4b7,8,9,10
28
04-Mar-2003: 0.5b1 - first Windows beta released
29
08-Mar-2003: 0.5b4 - first Mac 68K build (CW1)
30
13-Mar-2003: 0.5b6 - finally caught divide-by-zero in Win version
31
15-Mar-2003: 0.5b7 - Mac version uses edit controls, theme, is movable
32
16-Mar-2003: 0.6b1,2 - zoomable preview
33
16-Mar-2003: 0.6b3 - Windows preview pannable
34
16-Mar-2003: 0.6b4 - fix map()
35
16-Mar-2003: 0.7b1 - read Mac PARM resources
36
18-Mar-2003: 0.7b2 - check for direct host callbacks before using them (preview)
37
23-Mar-2003: 0.8b1 - can now make standalone filters (Mac only)
38
26-Mar-2003: 0.8b3 - switch to "universal" PowerPC build in one file (inspired by Harald Heim)
39
28-Mar-2003: 0.8b4 - Windows version can load PARM resource
40
31-Mar-2003: 0.8b5 - Windows version can create standalone (?) NT platform only
41
16-May-2003: 0.9b1 - added cnv() function, dmin, mmin
42
17-May-2003: 0.9b2 - fix dmin/mmin crash
43
17-May-2003: 0.9b3 - add Harry's suggestions: skip comments; other bugfixes
44
19-May-2003: 0.9b4 - fix Make... suggested file name bug
45
21-Jul-2003: 0.9b5 - fix crash on About box (!!)
46
28-Jan-2004: 0.9b6 - fix problems with making standalone on Mac (thanks Chris Greene)
47
31-Jan-2004: 1.0b1 - finally fix Win32 standalone filters - building and running
48
06-Feb-2004: 1.0b2 - fix bufferSpace computation (Prepare call)
49
21-Feb-2004: 1.0f1 - GPL source release
50
20-Mar-2004: 1.0f2 - fix code to blank margins of preview... hunting David Owen's crash
51
21-Mar-2004: 1.0f3 - alert when pb->inData is NULL - temporary workaround for crash bug
52
23-May-2004: 1.0f4 - include missing license(!)
53
25-Sep-2004: 1.0f5 - remove debug calls in Win build (!!) - thanks Shiro Akaishi;
106 dmarschall 54
                                         fix RC EDITTEXT syntax
2 toby 55
20-Dec-2004: 1.0f6 - fix bug in rad(d,m,z) -- wasn't relative to centre of image!
56
                                         also ff_c2d, needed to negate x and y arguments to atan2()
57
02-Feb-2005: add Win VERSIONINFO
58
06-Feb-2005: 1.1a1 - scripting support
59
09-Feb-2005: 1.1b1 - incl aete for Windows
60
                         1.1b2 - oops, forgot scripting.r (aete resource) in 68K build
61
10-Feb-2005: 1.1b3 - various mostly cosmetic cleanups; switch to GNU flex and bison in Makefile
62
                                   - use monospaced font in Win expr text controls
63
                         1.1b4 - fix crash blooper in make.c (fixpipl)
64
11-Feb-2005: 1.1b5 - cosmetic fixes in Mac dialog (right justify slider text, etc)
21 toby 65
                         1.1b6 - fix aete key (hash) calculation for standalones to obey Adobe's stated rules
2 toby 66
                         1.1b7 - aaaargh fix stupid hex handling bug in lexer
67
                         1.1b8 - remove dbg call in lexer (it's late :( )
8 toby 68
24-Jun-2005: 1.1b9 - Mach-O build for CS2/Mac
11 toby 69
25-Jun-2005: 1.1b10 - can make 'standalone' Mach-O bundles
15 toby 70
22-Jul-2005: 1.1b11 - merge changes to fix parameter bug reported by Demitrios Vassaras
18 toby 71
03-Oct-2005: 1.1f1 - fix dialog behaviour on repeated filter application
21 toby 72
18-Jan-2006: 1.1f2 - fix CS2/Mac build (missing fields in PiPL);
73
                     scripting parameters were being ignored (!!)
24 toby 74
26-Feb-2006: 1.1f3 - fix plugin DLL extension; fix many source code warnings
32 toby 75
16-Mar-2006: 1.1f4,5 - add default extension AFS, 8BF for file saving (thanks Daniel Denk)
35 toby 76
17-Mar-2006: 1.1f6 - fix loading of Filter Factory saved PARM data on Windows
39 toby 77
18-Mar-2006: 1.1f7,8 - safer handling of previewing very large images, and clarify out-of-memory message
43 toby 78
21-Mar-2006: 1.1f9,10 - improve file filtering on OS X (parse Windows-style extension filter)
45 toby 79
22-Mar-2006: 1.2b1 - read parameters from Windows .8BF Filter Factory standalones, in Mac version
48 toby 80
23-Mar-2006: 1.2b2 - new release
50 toby 81
25-Mar-2006: 1.2b3 - include R,G,B,A,C,I,U,V undocumented(?) constants (per Harald Heim)
52 toby 82
06-May-2006: 1.2b4 - fix minor AFS saving bug
54 toby 83
05-Jun-2006: 1.3b1 - fix x,y,X,Y,M variables to use selection extent instead of image size (per Eiji Nishidai)
57 toby 84
01-Sep-2006: 1.3b2 - fix standalone UI bugs (thanks Craig Bickford)
64 toby 85
04-Jan-2007: 1.4b1 - Universal Binary on OS X (PPC+Intel)
66 toby 86
31-Jan-2007: 1.4b2 - fix selection bug reported by Daniel Denk
71 toby 87
01-Feb-2007: 1.4b3 - in cnv(), repeat pixels at edge of image, instead of using zero (reported by Daniel Denk)
88
             1.4b4 - cnv() no longer requests entire filtered image in one piece; can now work in chunks
89
                     improve the handling of edge pixels when filtering selection
76 toby 90
02-Feb-2007: 1.4b5 - minor changes to image sampling logic (ff_src(), rawsrc())
85 toby 91
16-Feb-2007: 1.4b6 - lowercase default file extensions (wishlist #1)
83 toby 92
18-Feb-2007: 1.4b7 - swap +/- zoom controls to match Photoshop builtins
87 toby 93
             1.4b8,9,10 - simple parameter obfuscation in standalone plugins (wishlist #7)
93 toby 94
19-Feb-2007: 1.5b1,2 - support remaining 8-bit image modes (wishlist proposal)
99 toby 95
13-Jul-2007: 1.5b3 - add instrumentation to try to find CS3/Intel Mac 'Make standalone' problem
101 toby 96
02-Aug-2007: 1.5b4 - fix debug message spotted by Daniel Denk
97
26-Aug-2007: 1.5b6 - associativity of ?: operator (Harald Heim)
102 toby 98
07-Jun-2009: 1.6b1 - clean up for 64-bit Windows build
171 dmarschall 99
24-Jan-2019: 1.7b1 - Fixed crash at filter startup when computer had too much RAM.
119 dmarschall 100
                   - Fixed crash where built obfuscated filters could not be opened.
101
                   - Added function rst(i) which is an undocumented function in Filter Factory for setting a random seed.
102
                   - Size PARM_SIZE in PARM ressource corrected.
103
                   - Extended NMake file to support flex and bison compilation.
104
                   - Dialogs (build dialog, open and save dialogs) are now modal, i.e. the main window is locked when they are open. (*)
105
                   - The preview dialog has now a hand cursor. (Open hand on hover. Grabbing hand on panning) (*)
106
                   - Dialog boxes now have an [X] button to close the window.
107
                   - Preview: Checkerboard does only move when the panning actually suceeded (the picture didn't went off border)
108
                   - Bugfix: In the preview window, you could (virtually) pan the image beyond the canvas,
139 dmarschall 109
                             so that you needed to pan multiple times in the opposite direction to get to the position "0" again.
119 dmarschall 110
                   - The "version information" of standalone filters is now individualized by the creators input
126 dmarschall 111
                   - Win64 support (*)
119 dmarschall 112
                   - All undocumented symbol aliases of FilterFactory are now supported (rmin, rmax, cnv0, etc.)
121 dmarschall 113
                   - Bugfix: In some cases, the preview image had a small stripe of random pixels at the right or bottom.
122 dmarschall 114
                   - For disabled sliders, the corresponding label is now also grayed out (*)
115
                   - Bugfix: In standalone filters, the unused ctl() labels were not hidden. They are now invisible as intended.
123 dmarschall 116
                   - Bugfix: At standalone filters, the "map" text was not displayed; instead, the two "ctl" texts were displayed.
124 dmarschall 117
                   - AFS Files are now compatible with FilterFactory. (FilterFactory does ONLY understand "\r" (0D) linebreaks, while
118
                     FilterFoundry always saved "\n" (0A) linebreaks, while being able to read "\r", "\n" or "\r\n". Now, "\r" is used
119
                     for saving.) (*)
148 dmarschall 120
                   - The "caution" sign that indicates an error in the expression now has a hand cursor that shows up when
126 dmarschall 121
                     you hover over the icon, to indicate that the user will receive more information if they click on the icon (*)
151 dmarschall 122
                   - The "caution" sign now has a sharper design (it was a bit pixelated).
127 dmarschall 123
                   - The expression input fields now have a vertical scrollbar (*)
128 dmarschall 124
                   - YUV formulas are now more accurate. They are slightly different, but not much.
125
                     The i range is now [0..255] instead of [0..254]. (This means that pure white has now i=255 instead of i=254)
126
                     The u range stays at [-55..55].
127
                     The v range is now [-78..78] instead of [-77..77].
130 dmarschall 128
                   - Bugfix: If ctl() or map() was called with a non-constant argument, the controls in the build dialogs
129
                     were not correctly enabled/disabled, and built standalone filters did not get the correct
130
                     "needs UI" flag. Fixed.
131
                   - In the build dialog, if map() was used, the corresponding ctl()-labels now can't be changed anymore,
132
                     since the resulting standalone filter won't show them anyway.
131 dmarschall 133
                   - Warning windows (alertuser and simplealert function) are now modal. (*)
134 dmarschall 134
                   - Bugfix: Trigonometry functions sin and cos had wrong output ranges for Windows (it was -1024..1024 instead of
135
                     the documented output range -512..512). Fixed.
138 dmarschall 136
                   - Bugfix: Trigonometry function tan now behaves like in Filter Factory
139 dmarschall 137
                   - Bugfix: Function c2d() now behaves like in Filter Factory. Implementation changed from atan2(-y,-x) to atan2(y,x).
142 dmarschall 138
                   - Bugfix: The cell values used by the functions get() and put() were not (re-)initialized before the filter started running.
139
                     This caused that expressions like "put(get(0)+1,0)" produced different results at each run.
147 dmarschall 140
                   - Adobe Premiere FilterFactory/TransitionFactory filters (.pff Settings and .prm 16/32 bit Windows Standalone Filters) can now be imported (*)
152 dmarschall 141
                   - Old FilterFactory standalone filters for MacOS can now be imported (*)
153 dmarschall 142
                   - 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.
143
                     Due to this, files can now opened, even if they have the wrong file extension.
150 dmarschall 144
                   - Bugfix: When state changing functions (rst, rnd or put) are used within the formula,
145
                     every pixel in the picture will now be evaluated during preview, even if the user
146
                     has zoomed in.
155 dmarschall 147
                   - Fixed "off by one" bug where you could pan a fit-zoomed picture by 1 pixel in the preview
158 dmarschall 148
                   - The preview area now has a dark off-canvas area and for Windows, a "sunken" border
149
                   - Windows: Visual Styles are now supported and always be applied
150
                   - Bugfix: If you click the zoomlevel-caption for a tiny picture, the zoom ("fit zoom") won't zoom in to >100% anymore.
162 dmarschall 151
                   - Building of standalone filters is now possible with Windows 9x
152
                     (requires compilation using an old Windows SDK, or compilation using OpenWatcom)
164 dmarschall 153
                   - Fixed TLV lengths in the PIPL structure (includes now paddings).
154
                     This might solve incompatibilities with non-Photoshop hosts (i.e. GIMP).
167 dmarschall 155
                   - GIMP (using PSPI to load 8BF plugins) is now compatible.
170 dmarschall 156
                   - c2m() and sqr() are now approximately 3 times faster
126 dmarschall 157
                   (Changes by Daniel Marschall)
106 dmarschall 158
 
159
(*) This bug/solution was tested on Windows but needs to be verified and/or implemented on Mac.
160
 
2 toby 161
*/
162
 
163
#define plugInName "FilterFoundry"
129 dmarschall 164
#define VERSION_STR "1.7b1"
165
#define VERSION_NUM 1,0x70,beta,1
2 toby 166
#define VERS_RSRC VERSION_NUM,verAustralia,VERSION_STR,"Filter Foundry " VERSION_STR
167
 
153 dmarschall 168
#define RELEASE_YEAR "2019"
169
 
2 toby 170
/* formatted for Win32 VERSIONINFO resource */
129 dmarschall 171
#define VI_VERS_NUM 1,7,0,1
45 toby 172
#define VI_FLAGS        VS_FF_PRERELEASE /* 0 for final, or any of VS_FF_DEBUG,VS_FF_PATCHED,VS_FF_PRERELEASE,VS_FF_PRIVATEBUILD,VS_FF_SPECIALBUILD */
173
#define VI_COMMENTS     "Beta.\r\n\r\nPlease contact support@telegraphics.com.au with any bug reports, suggestions or comments.\0"      /* null terminated Comments field */
2 toby 174
 
175
/* wildcard signature in resources */
176
#define ANY '    '