Rev 247 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
221 | daniel-mar | 1 | Incompatibilities with GIMP / PSPI |
2 | ---------------------------------- |
||
167 | dmarschall | 3 | |
4 | 1. Filter cannot be loaded by PSPI, because of a memory error. |
||
5 | |||
6 | Status: FIXED (Bug in FF) in FilterFoundry 1.7 |
||
7 | |||
8 | FilterFoundry 1.6 used wrong length values for the TLV (Type, Length, Value) members |
||
178 | dmarschall | 9 | of the PIPL structure (in RC files, and in fixpipl()). |
167 | dmarschall | 10 | The length value must include everything, including paddings of strings. |
11 | |||
503 | daniel-mar | 12 | In regards propertyLength, Adobe writes in SPPiPL.h: |
169 | dmarschall | 13 | "Number of characters in the data array. Rounded to a multiple of 4." |
14 | |||
15 | On the other hand, the 1997 PICA documentation (page 23) and |
||
16 | 1996 "Cross-Application Plug-in Development Resource Guide" describes: |
||
503 | daniel-mar | 17 | "[propertyLength] contains the length of the propertyData field. It does not include any padding bytes after |
169 | dmarschall | 18 | propertyData to achieve four byte alignment. This field may be zero." |
19 | |||
503 | daniel-mar | 20 | I think this is not correct, since even official plugins of Adobe (e.g. "3D Transform.8bf") and cnvtpipl |
169 | dmarschall | 21 | are rounding the length to a multiple of 4 (actually, rounding to the next possible multiple 4, |
192 | daniel-mar | 22 | so that padding is always guaranteed). |
503 | daniel-mar | 23 | Photoshop (tested with Photoshop 7) will crash if the propertyLength follows the definition of PICA. |
169 | dmarschall | 24 | |
167 | dmarschall | 25 | 2. Filters will only fill the bottom of the picture, not the whole canvas. |
26 | |||
27 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
28 | |||
29 | The reason is that OnContinue/main.c:RequestNext() processes the image in chunks, |
||
30 | and probably due to a bug, PSPI only applies the image data of the last chunk. |
||
31 | |||
182 | dmarschall | 32 | Workaround applied in FF 1.7: If the host signature is "GIMP" (PMIG), then we set |
167 | dmarschall | 33 | needall=1 to disable chunked processing. |
34 | |||
35 | 3. When you re-open the main window, the formulas of the previous session vanish. |
||
36 | |||
37 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
38 | |||
246 | daniel-mar | 39 | The reason is a bug in PSPI: The host should preserve the value of pb->parameters, which PSPI doesn't do. |
40 | Also, all global variables are unloaded, so the plugin cannot preserve any data. |
||
167 | dmarschall | 41 | |
247 | daniel-mar | 42 | Workaround in FF 1.7: If the host GIMP is detected, the new function "host_preserves_parameters" returns "true". |
43 | This mode saves the filter data into a temporary AFS file and loads it |
||
167 | dmarschall | 44 | when the window is opened again. |
45 | |||
246 | daniel-mar | 46 | Exactly the same problem applies to the IfanView 8BF host. |
47 | |||
167 | dmarschall | 48 | 4. Saving does not work |
49 | |||
50 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
51 | |||
52 | Filters could not be saved as AFS files because PSPI can't handle zero-sized handles |
||
53 | (PINEWHANDLE), so FF 1.7 is now assigning 1 byte for these. |
||
169 | dmarschall | 54 | |
192 | daniel-mar | 55 | 5. For a 1920x1080 picture, the fitzoom in GIMP/PSPI is not correct. It is 8% on GIMP but should be 7%. |
169 | dmarschall | 56 | |
57 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
58 | |||
59 | The reason is that FilterFoundry adjusts the zoom level if the available memory is low. |
||
192 | daniel-mar | 60 | PSPI sets maxSpace to 100 MB hardcoded. It is probably only a dummy value and doesn't |
174 | dmarschall | 61 | resemble the actual space GIMP can assign to the plugin. |
169 | dmarschall | 62 | In Photoshop, maxSpace is 825 MB. |
63 | |||
64 | Workaround in FF 1.7: If GIMP/PSPI is detected, the adjustment of the zoom level is disabled. |
||
246 | daniel-mar | 65 | |
247 | daniel-mar | 66 | 6. Standalone filters don't work correctly |
246 | daniel-mar | 67 | |
247 | daniel-mar | 68 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
246 | daniel-mar | 69 | |
70 | PSPI does not preserve the data of the EntryPoint argument "intptr_t *data". |
||
71 | Therefore, the global data (gdata) object cannot preserved, |
||
72 | and the standalone plugin doesn't "know" that it is a standalone plugin. |
||
247 | daniel-mar | 73 | Exactly the same problem applies to the IfanView 8BF host. |
74 | => The handling in checkandinitparams() has been changed to address this issue. |
||
246 | daniel-mar | 75 | |
76 | Furthermore, the preserved "pb->parameters" are in a TEMP file which has |
||
77 | the same name for each FilterFoundry plugin. Therefore, the "pb->parameters" |
||
78 | are shared between main plugin and all standalone plugins. |
||
247 | daniel-mar | 79 | => In FilterFoundry 1.7.0.4, the file name will contain a hash of the plugin |
80 | or 0 for the main plugin. |