Rev 514 | Rev 517 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 514 | Rev 515 | ||
---|---|---|---|
1 | /* |
1 | /* |
2 | This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop |
2 | This file is part of "Filter Foundry", a filter plugin for Adobe Photoshop |
3 | Copyright (C) 2003-2009 Toby Thain, toby@telegraphics.com.au |
3 | Copyright (C) 2003-2009 Toby Thain, toby@telegraphics.com.au |
4 | Copyright (C) 2018-2022 Daniel Marschall, ViaThinkSoft |
4 | Copyright (C) 2018-2022 Daniel Marschall, ViaThinkSoft |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify |
6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by |
7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2 of the License, or |
8 | the Free Software Foundation; either version 2 of the License, or |
9 | (at your option) any later version. |
9 | (at your option) any later version. |
10 | 10 | ||
11 | This program is distributed in the hope that it will be useful, |
11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. |
14 | GNU General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License |
16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software |
17 | along with this program; if not, write to the Free Software |
18 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | */ |
19 | */ |
20 | 20 | ||
21 | // This RC file is for Windows only. |
21 | // This RC file is for Windows only. |
22 | // The PiPL_body contains the properties which are added to PIPL and TPLT (PIPL-Template). |
22 | // The PiPL_body contains the properties which are added to PIPL and TPLT (PIPL-Template). |
23 | // PIPL will additionally receive name, catg and hstm |
23 | // PIPL will additionally receive name, catg and hstm |
24 | // Attention: This file may only contain 7 properties. If this number changes, |
24 | // Attention: This file may only contain 8 properties. If this number changes, |
25 | // please also change PiPL.rc |
25 | // please also change PiPL.rc |
26 | 26 | ||
27 | /* Filter module */ |
27 | /* Filter module */ |
28 | VENDORID, LC(k,i,n,d), NULLID, 4L, LC(8,B,F,M), |
28 | VENDORID, LC(k,i,n,d), NULLID, 4L, LC(8,B,F,M), |
29 | 29 | ||
30 | /* Version Number */ |
30 | /* Version Number */ |
31 | VENDORID, LC(v,e,r,s), NULLID, 4L, latestFilterSubVersion, latestFilterVersion, |
31 | VENDORID, LC(v,e,r,s), NULLID, 4L, latestFilterSubVersion, latestFilterVersion, |
32 | 32 | ||
33 | #ifndef doesSupportBitmap |
33 | #ifndef doesSupportBitmap |
34 | #define doesSupportBitmap flagSupportsBitmap |
34 | #define doesSupportBitmap flagSupportsBitmap |
35 | #define doesSupportGrayScale flagSupportsGrayScale |
35 | #define doesSupportGrayScale flagSupportsGrayScale |
36 | #define doesSupportIndexedColor flagSupportsIndexedColor |
36 | #define doesSupportIndexedColor flagSupportsIndexedColor |
37 | #define doesSupportRGBColor flagSupportsRGBColor |
37 | #define doesSupportRGBColor flagSupportsRGBColor |
38 | #define doesSupportCMYKColor flagSupportsCMYKColor |
38 | #define doesSupportCMYKColor flagSupportsCMYKColor |
39 | #define doesSupportHSLColor flagSupportsHSLColor |
39 | #define doesSupportHSLColor flagSupportsHSLColor |
40 | #define doesSupportHSBColor flagSupportsHSBColor |
40 | #define doesSupportHSBColor flagSupportsHSBColor |
41 | #define doesSupportMultichannel flagSupportsMultichannel |
41 | #define doesSupportMultichannel flagSupportsMultichannel |
42 | #define doesSupportDuotone 32768 // (flagSupportsDuotone << 8) RC doesn't know <<8, nor *256 ! |
42 | #define doesSupportDuotone 32768 // (flagSupportsDuotone << 8) RC doesn't know <<8, nor *256 ! |
43 | #define doesSupportLABColor 16384 // (flagSupportsLABColor << 8) RC doesn't know <<8, nor *256 ! |
43 | #define doesSupportLABColor 16384 // (flagSupportsLABColor << 8) RC doesn't know <<8, nor *256 ! |
44 | #endif |
44 | #endif |
45 | 45 | ||
46 | /* Supported modes */ |
46 | /* Supported modes */ |
47 | /* Second byte: */ |
47 | /* Second byte: */ |
48 | VENDORID, LC(m,o,d,e), NULLID, 4L, /* First byte: */ /*doesSupportBitmap|*/ |
48 | VENDORID, LC(m,o,d,e), NULLID, 4L, /* First byte: */ /*doesSupportBitmap|*/ |
49 | doesSupportGrayScale| |
49 | doesSupportGrayScale| |
50 | doesSupportIndexedColor| |
50 | doesSupportIndexedColor| |
51 | doesSupportRGBColor| |
51 | doesSupportRGBColor| |
52 | doesSupportCMYKColor| |
52 | doesSupportCMYKColor| |
53 | doesSupportHSLColor| |
53 | doesSupportHSLColor| |
54 | doesSupportHSBColor| |
54 | doesSupportHSBColor| |
55 | doesSupportMultichannel| |
55 | doesSupportMultichannel| |
56 | /* Second byte: */ doesSupportDuotone| |
56 | /* Second byte: */ doesSupportDuotone| |
57 | doesSupportLABColor, |
57 | doesSupportLABColor, |
58 | /* 3rd & 4th byte: */ 0, |
58 | /* 3rd & 4th byte: */ 0, |
59 | 59 | ||
60 | /* We need this to enable the plugin for BigDocuments */ |
60 | /* We need this to enable the plugin for BigDocuments */ |
61 | VENDORID, LC(m,s,3,2), NULLID, 8L, 2000000L, 2000000L, |
61 | VENDORID, LC(m,s,3,2), NULLID, 8L, 2000000L, 2000000L, |
62 | 62 | ||
63 | /* Required host (' ' = any) */ |
63 | /* Required host (' ' = any) */ |
64 | /* Commented out, because there is a risk that a badly programmed host will think that ' '!='8BIM' and doesn't load the plugin then?!*/ |
64 | /* Commented out, because there is a risk that a badly programmed host will think that ' '!='8BIM' and doesn't load the plugin then?!*/ |
65 | //VENDORID, LC(h,o,s,t), NULLID, 4L, 0x20202020L, |
65 | //VENDORID, LC(h,o,s,t), NULLID, 4L, 0x20202020L, |
66 | 66 | ||
67 | /* "FilterLayerSupport" (Allows smart filters) */ |
67 | /* "FilterLayerSupport" (Allows smart filters) */ |
68 | /* TODO: It seems to work, but are we really fully supporting Smart Filters?! */ |
68 | /* TODO: It seems to work, but are we really fully supporting Smart Filters?! */ |
69 | VENDORID, LC(f,l,l,y), NULLID, 4L, 0x80L, |
69 | VENDORID, LC(f,l,l,y), NULLID, 4L, 0x80L, |
70 | 70 | ||
71 | /* Enable info */ |
71 | /* Enable info */ |
72 | /* Note: 136 must divisible by 4 */ |
72 | /* Note: Length 136 must be divisible by 4 */ |
- | 73 | /* "Plug-in Resource Guide.pdf", pages 61-62 */ |
|
73 | VENDORID, LC(e,n,b,l), NULLID, 136L, "in (PSHOP_ImageMode, GrayScaleMode, IndexedColorMode, RGBMode, CMYKMode, HSLMode, HSBMode, MultichannelMode, DuotoneMode, LabMode)\0\0\0\0\0\0", |
74 | VENDORID, LC(e,n,b,l), NULLID, 136L, "in (PSHOP_ImageMode, GrayScaleMode, IndexedColorMode, RGBMode, CMYKMode, HSLMode, HSBMode, MultichannelMode, DuotoneMode, LabMode)\0\0\0\0\0\0", |
74 | 75 | ||
75 | /* "Component". Values taken from Clouds.8BF */ |
76 | /* Object Identifier attribute */ |
- | 77 | /* Note that 'ViaT' is not a official creator code for ViaThinkSoft and it is unclear where a creator code can be aquired from... */ |
|
76 | /* TODO: What is this? Commented out to be sure */ |
78 | /* TODO: In the future, create individual OIDs for standalone filters, i.e. via hash */ |
77 | /* Note: 20 must divisible by 4 */ |
79 | /* Note: Length 24 must be divisible by 4 */ |
78 | //VENDORID, LC(c,m,p,t), NULLID, 20L, 0x00170301L, "FilterFoundry\0\0\0", |
80 | LC(V,i,a,T), LC(O,b,I,d), NULLID, 24L, "1.3.6.1.4.1.37476.2.72\0\0", |
79 | 81 | ||
80 | /* MonitorScalingAware */ |
82 | /* MonitorScalingAware */ |
81 | /* TODO: Do we support it? For now, commented out */ |
83 | /* TODO: Do we support it? For now, commented out */ |
82 | //VENDORID, LC(p,m,s,a), NULLID, 4L, 1L, |
84 | //VENDORID, LC(p,m,s,a), NULLID, 4L, 1L, |
83 | 85 | ||
84 | /* FilterCaseInfo - in all cases: |
86 | /* FilterCaseInfo - in all cases: |
85 | inStraightData, |
87 | inStraightData, |
86 | outStraightData, |
88 | outStraightData, |
87 | doNotWriteOutsideSelection, |
89 | doNotWriteOutsideSelection, |
88 | doesNotFilterLayerMasks, |
90 | doesNotFilterLayerMasks, |
89 | worksWithBlankData, |
91 | worksWithBlankData, |
90 | doNotCopySourceToDestination */ |
92 | doNotCopySourceToDestination */ |
91 | VENDORID, LC(f,i,c,i), NULLID, 28L, |
93 | VENDORID, LC(f,i,c,i), NULLID, 28L, |
92 | 94 | ||
93 | /* Filter Case 1: filterCaseFlatImageNoSelection [A background layer or a flat image] */ |
95 | /* Filter Case 1: filterCaseFlatImageNoSelection [A background layer or a flat image] */ |
94 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone) |
96 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone) |
95 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
97 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
96 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
98 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
97 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
99 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
98 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
100 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
99 | // 4 PIFilterFiltersLayerMaskBit = false |
101 | // 4 PIFilterFiltersLayerMaskBit = false |
100 | // 8 PIFilterWritesOutsideSelectionBit = false |
102 | // 8 PIFilterWritesOutsideSelectionBit = false |
101 | "\000", // flags2 [Reserved] = 00h |
103 | "\000", // flags2 [Reserved] = 00h |
102 | 104 | ||
103 | /* Filter Case 2: filterCaseFlatImageWithSelection [No transparency data, but a selection may be present] */ |
105 | /* Filter Case 2: filterCaseFlatImageWithSelection [No transparency data, but a selection may be present] */ |
104 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone) |
106 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone) |
105 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
107 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
106 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
108 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
107 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
109 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
108 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
110 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
109 | // 4 PIFilterFiltersLayerMaskBit = false |
111 | // 4 PIFilterFiltersLayerMaskBit = false |
110 | // 8 PIFilterWritesOutsideSelectionBit = false |
112 | // 8 PIFilterWritesOutsideSelectionBit = false |
111 | "\000", // flags2 [Reserved] = 00h |
113 | "\000", // flags2 [Reserved] = 00h |
112 | 114 | ||
113 | /* Filter Case 3: filterCaseFloatingSelection [Image data with an accompanying mask] */ |
115 | /* Filter Case 3: filterCaseFloatingSelection [Image data with an accompanying mask] */ |
114 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
116 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
115 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
117 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
116 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
118 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
117 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
119 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
118 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
120 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
119 | // 4 PIFilterFiltersLayerMaskBit = false |
121 | // 4 PIFilterFiltersLayerMaskBit = false |
120 | // 8 PIFilterWritesOutsideSelectionBit = false |
122 | // 8 PIFilterWritesOutsideSelectionBit = false |
121 | "\000", // flags2 [Reserved] = 00h |
123 | "\000", // flags2 [Reserved] = 00h |
122 | 124 | ||
123 | /* Filter Case 4: filterCaseEditableTransparencyNoSelection [Layer with transparency editing enabled and no selection] */ |
125 | /* Filter Case 4: filterCaseEditableTransparencyNoSelection [Layer with transparency editing enabled and no selection] */ |
124 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
126 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
125 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
127 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
126 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 02h) |
128 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 02h) |
127 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
129 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
128 | // 2 PIFilterWorksWithBlankDataBit = true |
130 | // 2 PIFilterWorksWithBlankDataBit = true |
129 | // 4 PIFilterFiltersLayerMaskBit = false |
131 | // 4 PIFilterFiltersLayerMaskBit = false |
130 | // 8 PIFilterWritesOutsideSelectionBit = false |
132 | // 8 PIFilterWritesOutsideSelectionBit = false |
131 | "\000", // flags2 [Reserved] = 00h |
133 | "\000", // flags2 [Reserved] = 00h |
132 | 134 | ||
133 | /* Filter Case 5: filterCaseEditableTransparencyWithSelection [Layer with transparency editing enabled and a selection] */ |
135 | /* Filter Case 5: filterCaseEditableTransparencyWithSelection [Layer with transparency editing enabled and a selection] */ |
134 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
136 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 0Ah filterDataHandlingBackgroundZap) |
135 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
137 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone) |
136 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 02h) |
138 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 02h) |
137 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
139 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
138 | // 2 PIFilterWorksWithBlankDataBit = true |
140 | // 2 PIFilterWorksWithBlankDataBit = true |
139 | // 4 PIFilterFiltersLayerMaskBit = false |
141 | // 4 PIFilterFiltersLayerMaskBit = false |
140 | // 8 PIFilterWritesOutsideSelectionBit = false |
142 | // 8 PIFilterWritesOutsideSelectionBit = false |
141 | "\000", // flags2 [Reserved] = 00h |
143 | "\000", // flags2 [Reserved] = 00h |
142 | 144 | ||
143 | /* Filter Case 6: filterCaseProtectedTransparencyNoSelection [Layer with transparency editing disabled and no selection] */ |
145 | /* Filter Case 6: filterCaseProtectedTransparencyNoSelection [Layer with transparency editing disabled and no selection] */ |
144 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
146 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
145 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
147 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
146 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
148 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
147 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
149 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
148 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
150 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
149 | // 4 PIFilterFiltersLayerMaskBit = false |
151 | // 4 PIFilterFiltersLayerMaskBit = false |
150 | // 8 PIFilterWritesOutsideSelectionBit = false |
152 | // 8 PIFilterWritesOutsideSelectionBit = false |
151 | "\000", // flags2 [Reserved] = 00h |
153 | "\000", // flags2 [Reserved] = 00h |
152 | 154 | ||
153 | /* Filter Case 7: filterCaseProtectedTransparencyWithSelection [Layer with transparency editing disabled and a selection] */ |
155 | /* Filter Case 7: filterCaseProtectedTransparencyWithSelection [Layer with transparency editing disabled and a selection] */ |
154 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
156 | "\001", // inputHandling [Preprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
155 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
157 | "\001", // outputHandling [Postprocessing actions on the image data] = 01h (filterDataHandlingNone, in Filter Factory: 00h filterDataHandlingCantFilter) |
156 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
158 | "\003", // flags1 [Flags for how the filter case information should be treated] = 03h (in Filter Factory: 00h) |
157 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
159 | // 1 PIFilterDontCopyToDestinationBit = true (in Filter Factory: false) |
158 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
160 | // 2 PIFilterWorksWithBlankDataBit = true (in Filter Factory: false) |
159 | // 4 PIFilterFiltersLayerMaskBit = false |
161 | // 4 PIFilterFiltersLayerMaskBit = false |
160 | // 8 PIFilterWritesOutsideSelectionBit = false |
162 | // 8 PIFilterWritesOutsideSelectionBit = false |
161 | "\000", // flags2 [Reserved] = 00h |
163 | "\000", // flags2 [Reserved] = 00h |