Subversion Repositories filter_foundry

Rev

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

Rev Author Line No. Line
334 daniel-mar 1
/*
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
4
    Copyright (C) 2018-2021 Daniel Marschall, ViaThinkSoft
259 daniel-mar 5
 
334 daniel-mar 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
8
    the Free Software Foundation; either version 2 of the License, or
9
    (at your option) any later version.
259 daniel-mar 10
 
334 daniel-mar 11
    This program is distributed in the hope that it will be useful,
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
    GNU General Public License for more details.
15
 
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
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
*/
20
 
21
/* Portions Copyright 1993 - 1999 Adobe Systems Incorporated */
22
/* All Rights Reserved.                                      */
23
 
24
#include <stddef.h>                     // Standard definitions.
25
//#include <Types.h>                    // Standard types.
26
 
27
#include "PITypes.h"                    // Photoshop types.
28
#include "PIGeneral.h"                  // Photoshop general routines.
29
#include "PIActions.h"                  // Photoshop scripting.
30
#include "PIAbout.h"                    // AboutRecord structure.
31
#include "PIFormat.h"                   // AboutRecord structure.
32
//#include "PIDefines.h"                // Plug-in definitions.
33
//#include "FileUtilities.h"            // Simple file utilities.
34
 
259 daniel-mar 35
Boolean HostDescriptorAvailable (PIDescriptorParameters *procs,
334 daniel-mar 36
                                 Boolean *outNewerVersion);
37
 
259 daniel-mar 38
OSErr HostCloseReader (PIDescriptorParameters *procs,
334 daniel-mar 39
                       HandleProcs *hProcs,
40
                       PIReadDescriptor *token);
41
 
42
OSErr HostCloseWriter(PIDescriptorParameters *procs,
43
                      HandleProcs *hProcs,
44
                      PIWriteDescriptor *token);
45
 
46
OSErr put_cstring(PIWriteDescriptor token, DescriptorKeyID key, char *s);
47
 
259 daniel-mar 48
char *get_cstring(PIReadDescriptor token);
49
 
50
enum ScriptingShowDialog {
51
        SCR_NO_SCRIPT,
52
        SCR_SHOW_DIALOG,
53
        SCR_HIDE_DIALOG
54
};
55
 
56
enum ScriptingShowDialog ReadScriptParamsOnRead(void);
334 daniel-mar 57
 
259 daniel-mar 58
OSErr WriteScriptParamsOnRead(void);
59
 
60
OSType getAeteKey(char c, PARM_T *parm);
61
 
62
//-------------------------------------------------------------------------------
63
//      PIDescriptorParameters -- Macro definitions
64
//-------------------------------------------------------------------------------
65
 
66
#define NULLID          0 // for ID routines needing null terminator
67
 
68
#define DescParams      gpb->descriptorParameters
69
 
70
#define Reader          DescParams->readDescriptorProcs
71
 
72
#define Writer          DescParams->writeDescriptorProcs
73
 
74
#define PlayInfo        DescParams->playInfo
75
 
76
#define RecordInfo      DescParams->recordInfo
77
 
78
#define PlayDialog() \
79
        HostPlayDialog (DescParams)
80
 
81
#define DescriptorAvailable(outNewerVersion) \
82
        HostDescriptorAvailable(DescParams, outNewerVersion)
83
 
84
#define WarnDescriptorAvailable() \
85
        WarnHostDescriptorAvailable(DescParams, hDllInstance)
86
 
87
#define OpenReadDesc(desc, array) \
88
        Reader->openReadDescriptorProc(desc, array)
89
 
90
#define OpenReader(array) \
91
        OpenReadDesc(DescParams->descriptor, array)
92
 
93
#define CloseReadDesc(token) \
94
        Reader->closeReadDescriptorProc(token)
95
 
96
#define CloseReader(token) \
97
        HostCloseReader(DescParams, gpb->handleProcs, token)
98
 
99
#define OpenWriter() \
100
        Writer->openWriteDescriptorProc()
101
 
102
#define CloseWriteDesc(token, handle) \
103
        Writer->closeWriteDescriptorProc(token, handle)
104
 
105
#define CloseWriter(token) \
106
        HostCloseWriter(DescParams, gpb->handleProcs, token)
107
 
108
// These Macros simplify access to all the basic Get and Put routines:
109
 
110
#define PIGetKey(token, key, type, flags) \
111
        Reader->getKeyProc(token, key, type, flags)
112
 
113
#define PIGetEnum(token, value) \
114
        Reader->getEnumeratedProc(token, value)
115
 
116
#define PIPutEnum(token, key, type, value) \
117
        Writer->putEnumeratedProc(token, key, type, value)
118
 
119
#define PIGetInt(token, value) \
120
        Reader->getIntegerProc(token, value)
121
 
122
#define PIGetPinInt(token, min, max, value) \
123
        Reader->getPinnedIntegerProc(token, min, max, value)
124
 
125
#define PIPutInt(token, key, value) \
126
        Writer->putIntegerProc(token, key, value)
127
 
128
#define PIGetFloat(token, value) \
129
        Reader->getFloatProc(token, value)
130
 
131
#define PIGetPinFloat(token, min, max, value) \
132
        Reader->getPinnedFloatProc(token, min, max, value)
133
 
134
#define PIPutFloat(token, key, value) \
135
        Writer->putFloatProc(token, key, value)
136
 
137
#define PIGetUnitFloat(token, unit, value) \
138
        Reader->getUnitFloatProc(token, unit, value)
139
 
140
#define PIGetPinUnitFloat(token, min, max, unit, value) \
141
        Reader->getPinnedUnitFloatProc(token, min, max, unit, value)
142
 
143
#define PIPutUnitFloat(token, key, unit, value) \
144
        Writer->putUnitFloatProc(token, key, unit, value)
145
 
146
#define PIGetBool(token, value) \
147
        Reader->getBooleanProc(token, value)
148
 
149
#define PIPutBool(token, key, value) \
150
        Writer->putBooleanProc(token, key, value)
151
 
152
#define PIGetText(token, value) \
153
        Reader->getTextProc(token, value)
154
 
155
#define PIPutText(token, key, value) \
156
        Writer->putTextProc(token, key, value)
157
 
158
#define PIGetAlias(token, value) \
159
        Reader->getAliasProc(token, value)
160
 
161
#define PIPutAlias(token, key, value) \
162
        Writer->putAliasProc(token, key, value)
163
 
164
#define PIGetEnum(token, value) \
165
        Reader->getEnumeratedProc(token, value)
166
 
167
#define PIPutEnum(token, key, type, value) \
168
        Writer->putEnumeratedProc(token, key, type, value)
169
 
170
#define PIGetClass(token, value) \
171
        Reader->getClassProc(token, value)
172
 
173
#define PIPutClass(token, key, value) \
174
        Writer->putClassProc(token, key, value)
175
 
176
#define PIGetRef(token, value) \
177
        Reader->getSimpleReferenceProc(token,value)
178
 
179
#define PIPutRef(token, key, value) \
180
        Writer->putSimpleReferenceProc(token, key, value)
181
 
182
#define PIGetObj(token, type, value) \
183
        Reader->getObjectProc(token, type, value)
184
 
185
#define PIPutObj(token, key, type, value) \
186
        HostPutObj(DescParams, gpb->handleProcs, token, key, type, value)
187
 
188
#define PIPutObjProc(token, key, type, value) \
189
        Writer->putObjectProc(token, key, type, value)
190
 
191
#define PIGetCount(token, value) \
192
        Reader->getCountProc(token, value)
193
 
194
#define PIPutCount(token, key, value) \
195
        Writer->putCountProc(token, key, value)
196
 
197
#define PIGetStr(token, value) \
198
        Reader->getStringProc(token, value)
199
 
200
#define PIPutStr(token, key, value) \
201
        Writer->putStringProc(token, key, value)