Subversion Repositories filter_foundry

Rev

Rev 444 | 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.net
  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. #ifndef PARM_H_
  22. #define PARM_H_
  23.  
  24. // Reverse-Engineering of Filter Factory for Photoshop by Alex Hunter (7/1999)
  25. // Reverse-Engineering of Filter/Transition Factory for Premiere by Daniel Marschall (1/2019)
  26.  
  27. #define PARM_SIZE/*_PHOTOSHOP*/  0x2068 // Photoshop FF and Filter Foundry since 1.7
  28. #define PARM_SIZE_PREMIERE       0x206C // Premiere FF/TF
  29. #define PARM_SIG_MAC             0x1C68 // Mac OS Filter Factory and Filter Foundy <1.7 use 0x1C68 instead of 0x2068 as first member
  30.  
  31. #ifdef MAC_ENV
  32.         #define PARM_TYPE 'PARM'
  33.         #define PARM_ID_OLD 16000
  34.         #define PARM_ID_NEW 16 // Filter Factory compatibility
  35. #else
  36.         #define PARM_TYPE TEXT("PARM")
  37.         #define PARM_ID_OLD MAKEINTRESOURCE(16000)
  38.         #define PARM_ID_NEW MAKEINTRESOURCE(16) // Filter Factory compatibility
  39. #endif
  40.  
  41. #ifdef MAC_ENV
  42.         #define OBFUSCDATA_TYPE_OLD 'DATA'
  43.         #define OBFUSCDATA_TYPE_NEW 'obFS'
  44.         #define OBFUSCDATA_ID_OLD 16001
  45.         #define OBFUSCDATA_ID_NEW 16
  46. #else
  47.         #define OBFUSCDATA_TYPE_OLD RT_RCDATA
  48.         #define OBFUSCDATA_TYPE_NEW TEXT("OBFS")
  49.         #define OBFUSCDATA_ID_OLD MAKEINTRESOURCE(16001)
  50.         #define OBFUSCDATA_ID_NEW MAKEINTRESOURCE(16)
  51. #endif
  52.  
  53. #ifdef Rez
  54.  
  55. type PARM_TYPE {
  56.         longint = PARM_SIZE; // cbSize;    //size of this structure
  57.         longint FilterFactory,standaloneFilter; // standalone;  //0=original FF, 1=standalone filter
  58.         array[8] { longint; }; // val[8];    //initial values of controls
  59.         longint noParameters,parametersDialog; // popDialog; //true if need to pop a parameter dialog
  60.         longint; // unknown1;
  61.         longint; // unknown2;
  62.         longint; // unknown3;
  63.         array[4] { longint; }; // map_used[4];   //true if map(n) is used
  64.         array[8] { longint; }; // ctl_used[8];   //true if ctl(n) is used
  65.         pstring[251];    //Category name
  66.         // Michael Johannhanwahr's protect flag...
  67.         longint notProtected,isProtected; // iProtected;            // == 1 means protected
  68.         pstring[255];   //Filter title
  69.         pstring[255];   //Copyright info
  70.         pstring[255];   //Filter author(s)
  71.         array[4] { pstring[255]; };  //4 map labels
  72.         array[8] { pstring[255]; };  //8 control labels
  73.         array[4] { cstring[1024]; }; //4 channel formulas
  74. };
  75.  
  76. #else
  77.  
  78. // Note: In Windows DLL/8BF files, the strings are C-strings, while in MAC-plugins they are Pascal-strings!
  79. // Formulas are never Pascal strings.
  80. // Since 1.7.0.13 we internally work with C-strings.
  81.  
  82. typedef uint32_t bool32_t;
  83.  
  84. // Photoshop's Filter Factory has PARM:16
  85. // Filter Foundry has PARM:16000 (old) or PARM:16 (new)
  86. typedef struct {             // structure of FF PARM resource
  87.         uint32_t cbSize;         // size of this structure = 0x2068 (or 0x1C68 for Filter Foundry <1.7 and Mac OS Filter Factory)
  88.         bool32_t standalone;     // 0=original FF, 1=standalone filter
  89.         uint32_t val[8];         // initial values of controls
  90.         bool32_t popDialog;      // 1 if need to pop a parameter dialog
  91.         uint32_t unknown1;       // This field is used for the obfuscation (checksum for obfusc v6+)
  92.         uint32_t unknown2;       // This field is used for the obfuscation (obfusc version info for obfusc v2+)
  93.         uint32_t unknown3;       // This field is reserved for future use
  94.         bool32_t map_used[4];    // true if map(n) is used
  95.         bool32_t ctl_used[8];    // true if ctl(n) is used
  96.         char szCategory[252];    // Category name
  97.         bool32_t iProtected;     // Michael Johannhanwahr's protect flag... (1 means protected)
  98.         char szTitle[256];       // Filter title
  99.         char szCopyright[256];   // Copyright info
  100.         char szAuthor[256];      // Filter author(s)
  101.         char szMap[4][256];      // 4 map labels
  102.         char szCtl[8][256];      // 8 control labels
  103.         char szFormula[4][1024]; // 4 channel formulas; in Photoshop: (r,g,b,a)
  104. } PARM_T/*_PHOTOSHOP*/;
  105.  
  106. // Premiere's Transition/Filter Factory has PARM:16000
  107. typedef struct {             // structure of Premiere FF/TF PARM resource
  108.         uint32_t cbSize;         // size of this structure = 0x206C
  109.         bool32_t standalone;     // 0=original FF, 1=standalone filter
  110.         bool32_t singleExpression; // 1 if "single expression" is checked (member only available in Premiere)
  111.         uint32_t val[8];         // initial values of controls
  112.         bool32_t popDialog;      // 1 if need to pop a parameter dialog
  113.         uint32_t unknown1;
  114.         uint32_t unknown2;
  115.         uint32_t unknown3;
  116.         bool32_t map_used[4];    // true if map(n) is used
  117.         bool32_t ctl_used[8];    // true if ctl(n) is used
  118.         char szTitle[256];       // in Photoshop Filter Factory: Category
  119.         char szAuthor[256];      // in Photoshop Filter Factory: Title
  120.         char szModulename[256];  // in Photoshop Filter Factory: Copyright
  121.         char szCopyright[256];   // in Photoshop Filter Factory: Author
  122.         char szMap[4][256];      // 4 map labels
  123.         char szCtl[8][256];      // 8 control labels
  124.         char szFormula[4][1024]; // 4 channel formulas; in Premiere: (b,g,r,a) or (-,-,-,r=g=b=a) in single-expression-mode
  125. } PARM_T_PREMIERE;
  126.  
  127. #endif
  128.  
  129. #endif
  130.