Subversion Repositories filter_foundry

Rev

Rev 176 | Rev 206 | 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-2019 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. // Reverse-Engineering of Filter Factory for Photoshop by Alex Hunter (7/1999)
  22. // Reverse-Engineering of Filter/Transition Factory for Premiere by Daniel Marschall (1/2019)
  23.  
  24. #define PARM_SIZE/*_PHOTOSHOP*/  0x2068 // Photoshop FF and Filter Foundry since 1.7
  25. #define PARM_SIZE_PREMIERE       0x206C // Premiere FF/TF
  26. #define PARM_SIG_MAC             0x1C68 // Mac OS Filter Factory and Filter Foundy <1.7 use 0x1C68 instead of 0x2068 as first member
  27.  
  28. #ifdef Rez
  29.  
  30. type 'PARM' {
  31.         longint = PARM_SIZE; // cbSize;    //size of this structure
  32.         longint FilterFactory,standaloneFilter; // standalone;  //0=original FF, 1=standalone filter
  33.         array[8] { longint; }; // val[8];    //initial values of controls
  34.         longint noParameters,parametersDialog; // popDialog; //true if need to pop a parameter dialog
  35.         longint; // unknown1;
  36.         longint; // unknown2;
  37.         longint; // unknown3;
  38.         array[4] { longint; }; // map_used[4];   //true if map(n) is used
  39.         array[8] { longint; }; // ctl_used[8];   //true if ctl(n) is used
  40.         pstring[251];    //Category name
  41.         // Michael Johannhanwahr's protect flag...
  42.         longint notProtected,isProtected; // iProtected;            // == 1 means protected
  43.         pstring[255];       //Filter title
  44.         pstring[255];   //Copyright info
  45.         pstring[255];      //Filter author(s)
  46.         array[4] { pstring[255]; };      //4 map labels
  47.         array[8] { pstring[255]; };      //8 control labels
  48.         array[4] { cstring[1024]; }; //4 channel formulas
  49. };
  50.  
  51. #else
  52.  
  53. /* N.B. under Windows, the strings are all C strings (!) */
  54.  
  55. // Photoshop's Filter Factory has PARM:16
  56. typedef struct {   //structure of FF PARM resource
  57.         long cbSize;     //size of this structure = 0x2068 (or 0x1C68 for Filter Foundry <1.7)
  58.         long standalone; //0=original FF, 1=standalone filter
  59.         long val[8];     //initial values of controls
  60.         long popDialog;  //1 if need to pop a parameter dialog
  61.         long unknown1;
  62.         long unknown2;
  63.         long unknown3;
  64.         long map_used[4];   //true if map(n) is used
  65.         long ctl_used[8];   //true if ctl(n) is used
  66.         unsigned char category[252];    //Category name
  67.         // Michael Johannhanwahr's protect flag...
  68.         long iProtected;            // == 1 means protected
  69.         unsigned char title[256];       //Filter title
  70.         unsigned char copyright[256];   //Copyright info
  71.         unsigned char author[256];      //Filter author(s)
  72.         unsigned char map[4][256];      //4 map labels
  73.         unsigned char ctl[8][256];      //8 control labels
  74.         char formula[4][1024];          //4 channel formulas; in Photoshop: (r,g,b,a)
  75. } PARM_T/*_PHOTOSHOP*/;
  76.  
  77. // Premiere's Transition/Filter Factory has PARM:16000
  78. typedef struct {   //structure of Premiere FF/TF PARM resource
  79.         long cbSize;    //size of this structure = 0x206C
  80.         long standalone;  //0=original FF, 1=standalone filter
  81.         long singleExpression; //1 if "single expression" is checked (member only available in Premiere)
  82.         long val[8];    //initial values of controls
  83.         long popDialog; //1 if need to pop a parameter dialog
  84.         long unknown1;
  85.         long unknown2;
  86.         long unknown3;
  87.         long map_used[4];   //true if map(n) is used
  88.         long ctl_used[8];   //true if ctl(n) is used
  89.         unsigned char title[256]; // in Photoshop Filter Factory: Category
  90.         unsigned char author[256]; // in Photoshop Filter Factory: Title
  91.         unsigned char modulename[256]; // in Photoshop Filter Factory: Copyright
  92.         unsigned char copyright[256]; // in Photoshop Filter Factory: Author
  93.         unsigned char map[4][256];      //4 map labels
  94.         unsigned char ctl[8][256];      //8 control labels
  95.         char formula[4][1024];          //4 channel formulas; in Premiere: (b,g,r,a) or (-,-,-,r=g=b=a) in single-expression-mode
  96. } PARM_T_PREMIERE;
  97.  
  98. #endif
  99.