Subversion Repositories filter_foundry

Rev

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

  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
  5.  
  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.
  10.  
  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.  
  35. Boolean HostDescriptorAvailable (PIDescriptorParameters *procs,
  36.                                  Boolean *outNewerVersion);
  37.  
  38. OSErr HostCloseReader (PIDescriptorParameters *procs,
  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.  
  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);
  57.  
  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)
  202.