/trunk/3264_mixer/README.MD |
---|
2,4 → 2,4 |
This is an internal tool used in the post-build process of Filter Foundry 1.7. |
Besides a some cosmetics, its main purpose is to add the 32-bit DLL to the 64-bit 8BF (as resource) and vice-versa. This is required so that Filter Foundry can create 32 and 64 bit standalone filters at the same time. |
Besides some cosmetics, its main purpose is to add the 32-bit DLL to the 64-bit 8BF (as resource) and vice-versa. This is required so that Filter Foundry can create 32-bit and 64-bit standalone filters at the same time. |
/trunk/BUILDING.md |
---|
90,7 → 90,7 |
* Download: https://visualstudio.microsoft.com/de/vs/community/ |
* To build in Windows with Visual Studio (IDE or command line), see the visual_studio |
subdirectory and notes (README.md). |
* Most recently tested with Visual C++ 2019 and Adobe Photoshop SDK CC 2017. |
* Most recently tested with Visual C++ 2022 and Adobe Photoshop SDK 2023. |
BUILDING WITH OPEN WATCOM |
* OpenWatcom can be used, but only for 32 Bit, and it is officially not |
98,7 → 98,7 |
* Download: https://sourceforge.net/projects/openwatcom/files/ |
* To build in Windows with the OpenWatcom IDE, see the wpj |
subdirectory and notes (README.md), kindly provided by Peter Heckert and Daniel Marschall. |
* Most recently tested with Open Watcom 1.9 and Adobe Photoshop SDK CC 2017. |
* Most recently tested with Open Watcom 1.9 and Adobe Photoshop SDK 2023. |
BUILDING WITH MINGW32/64 |
* IMPORTANT: Building with MINGW32/64 is currently NOT possible |
/trunk/README.md |
---|
29,7 → 29,7 |
Filter Foundry works with nearly all programs that can handle ".8bf" Photoshop filters. Following hosts have been tested with Filter Foundry 1.7: |
- Photoshop 3.0.0 (32 bit) through Photoshop CC 2022 (64 bit) |
- Photoshop 3.0.0 (32 bit) through Photoshop 2023 (64 bit) |
- IrfanView 4.53 (32/64 bit) |
- JASC PSP 9, Corel's Paint Shop Pro XI |
- The Gimp 2.2 with [PSPI.exe](https://www.chip.de/downloads/PSPI-fuer-GIMP_37803068.html) extension to run Photoshop .8bf files |
/trunk/ff.h |
---|
134,7 → 134,7 |
OSErr DoContinue(FilterRecordPtr epb); |
void DoFinish(FilterRecordPtr epb); |
void RequestNext(FilterRecordPtr epb); |
InternalState saveInternalState(); |
InternalState saveInternalState(void); |
void restoreInternalState(InternalState state); |
// from read.c |
169,11 → 169,11 |
#ifdef _MSC_VER |
__declspec(noinline) |
#endif |
uint64_t GetObfuscSeed(); |
uint64_t GetObfuscSeed(void); |
#ifdef _MSC_VER |
__declspec(noinline) |
#endif |
uint64_t GetObfuscSeed2(); |
uint64_t GetObfuscSeed2(void); |
#ifdef WIN_ENV |
Boolean obfusc_seed_replace(FSSpec* dst, uint64_t search1, uint64_t search2, uint64_t replace1, uint64_t replace2, int maxamount1, int maxamount2); |
#endif |
186,16 → 186,13 |
Boolean readPARMresource(HMODULE hm, TCHAR**reason); |
// from main.c |
int64_t maxspace(); |
Boolean maxspace_available(); |
Boolean host_preserves_parameters(); |
int64_t maxspace(void); |
Boolean maxspace_available(void); |
Boolean host_preserves_parameters(void); |
// from parser.y |
struct node *parseexpr(char *s); |
// from funcs.c |
void factory_initialize_rnd_variables(); |
// Useful macros |
// Note: "bigDocumentData->PluginUsing32BitCoordinates" will be set by filterSelectorStart, if HAS_BIG_DOC(pb) is true |
/trunk/funcs.c |
---|
259,7 → 259,7 |
// ------------------------------------------------------------------------------------------- |
void init_trigtab() { |
void init_trigtab(void) { |
#ifdef PARSERTEST |
return; |
#else |
812,7 → 812,7 |
// ------------------------------------------------------------------------------------------- |
void factory_initialize_rnd_variables() { |
void factory_initialize_rnd_variables(void) { |
#ifdef PARSERTEST |
return; |
#else |
821,7 → 821,7 |
#endif |
} |
void foundry_initialize_rnd_variables() { |
void foundry_initialize_rnd_variables(void) { |
#ifdef PARSERTEST |
return; |
#else |
829,7 → 829,7 |
#endif |
} |
void initialize_rnd_variables() { |
void initialize_rnd_variables(void) { |
#ifdef use_filterfactory_implementation_rnd |
factory_initialize_rnd_variables(); |
#else |
1210,7 → 1210,7 |
/* Direction(angle) of the current pixel from the center of the image, |
where d is an integer between -512 and 512 inclusive */ |
value_type factory_d() { |
value_type factory_d(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1271,7 → 1271,7 |
#endif |
} |
value_type foundry_d() { |
value_type foundry_d(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1284,7 → 1284,7 |
#endif |
} |
value_type ff_d() { |
value_type ff_d(void) { |
#ifdef use_filterfactory_implementation_d |
// Output range: -512 ... 512 |
return factory_d(); |
1298,7 → 1298,7 |
/* Range of magnitudes with the image, where M is one half the diagonal size of the image */ |
value_type factory_M() { |
value_type factory_M(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1328,7 → 1328,7 |
#endif |
} |
value_type foundry_M() { |
value_type foundry_M(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1336,7 → 1336,7 |
#endif |
} |
value_type ff_M() { |
value_type ff_M(void) { |
#ifdef use_filterfactory_implementation_M |
return factory_M(); |
#else |
1348,7 → 1348,7 |
/* Distance (magnitude) from the center of the image to the current pixel */ |
value_type factory_m() { |
value_type factory_m(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1379,7 → 1379,7 |
#endif |
} |
value_type foundry_m() { |
value_type foundry_m(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1387,7 → 1387,7 |
#endif |
} |
value_type ff_m() { |
value_type ff_m(void) { |
#ifdef use_filterfactory_implementation_m |
return factory_m(); |
#else |
1399,7 → 1399,7 |
/* "Y" value of the YUV color-space */ |
value_type factory_i() { |
value_type factory_i(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1407,7 → 1407,7 |
#endif |
} |
value_type foundry_i() { |
value_type foundry_i(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1416,7 → 1416,7 |
#endif |
} |
value_type ff_i() { |
value_type ff_i(void) { |
#ifdef use_filterfactory_implementation_i |
return factory_i(); |
#else |
1428,7 → 1428,7 |
/* "U" value of the YUV color-space */ |
value_type factory_u() { |
value_type factory_u(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1436,7 → 1436,7 |
#endif |
} |
value_type foundry_u() { |
value_type foundry_u(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1445,7 → 1445,7 |
#endif |
} |
value_type ff_u() { |
value_type ff_u(void) { |
#ifdef use_filterfactory_implementation_u |
return factory_u(); |
#else |
1457,7 → 1457,7 |
/* "V" value of the YUV color-space */ |
value_type factory_v() { |
value_type factory_v(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1465,7 → 1465,7 |
#endif |
} |
value_type foundry_v() { |
value_type foundry_v(void) { |
#ifdef PARSERTEST |
return 0; |
#else |
1474,7 → 1474,7 |
#endif |
} |
value_type ff_v() { |
value_type ff_v(void) { |
#ifdef use_filterfactory_implementation_v |
return factory_v(); |
#else |
/trunk/funcs.h |
---|
71,7 → 71,7 |
#define TANTABSIZE 512 |
#define COSTABSIZE 1024 |
void init_trigtab(); |
void init_trigtab(void); |
#define DEG2RAD(x) ((x)*M_PI/180.) |
#define RAD2DEG(x) ((x)*180./M_PI) |
86,7 → 86,7 |
#define FFANGLE(v) ((v)*M_PI/512.) |
#define TO_FFANGLE(v) ((v)*512./M_PI) |
void initialize_rnd_variables(); |
void initialize_rnd_variables(void); |
// Functions |
value_type ff_src(value_type x,value_type y,value_type z); |
121,13 → 121,13 |
value_type ff_rst(value_type seed); |
// Variables |
value_type ff_i(); |
value_type ff_u(); |
value_type ff_v(); |
value_type ff_D(); |
value_type ff_d(); |
value_type ff_M(); |
value_type ff_m(); |
value_type ff_i(void); |
value_type ff_u(void); |
value_type ff_v(void); |
value_type ff_D(void); |
value_type ff_d(void); |
value_type ff_M(void); |
value_type ff_m(void); |
extern value_type min_val_i; |
extern value_type max_val_i; |
/trunk/main.c |
---|
567,7 → 567,7 |
return showdialog; |
} |
Boolean host_preserves_parameters() { |
Boolean host_preserves_parameters(void) { |
#ifdef DEBUG_SIMULATE_GIMP |
return false; |
#endif |
579,7 → 579,7 |
return true; |
} |
int64_t maxspace(){ |
int64_t maxspace(void){ |
// Please see "Hosts.md" for details about the MaxSpace implementations of tested plugins |
// Plugins that don't support MaxSpace64 shall set the field to zero; then we will use MaxSpace instead. |
600,7 → 600,7 |
} |
} |
Boolean maxspace_available() { |
Boolean maxspace_available(void) { |
// Please see "Hosts.md" for details about the MaxSpace implementations of tested plugins |
// GIMP PSPI sets MaxSpace to hardcoded 100 MB |
820,7 → 820,7 |
} |
} |
InternalState saveInternalState() { |
InternalState saveInternalState(void) { |
InternalState ret; |
int i; |
/trunk/node.c |
---|
74,7 → 74,7 |
#endif |
} |
} |
void freeallnodes(){ |
void freeallnodes(void){ |
freenodes(node_list); |
node_list = 0; |
} |
/trunk/node.h |
---|
43,7 → 43,7 |
struct node *newnode(int kind); |
//void freenodes(struct node *p); |
void freeallnodes(); |
void freeallnodes(void); |
void dumptree(struct node *root,int level); |
value_type eval(struct node *root); |
/trunk/obfusc.c |
---|
33,7 → 33,7 |
// The 8BF file *MUST* only contain the seed A SINGLE TIME |
// (In the Non-Standalone filter actually 3 times, because we have 2 resourced containing the 32/64 template DLLs) |
#if defined(__WATCOMC__) |
uint64_t GetObfuscSeed() { |
uint64_t GetObfuscSeed(void) { |
// Due to "volatile", this value will only exist a single time in the binary file. |
// This char array will result in contiguous chars in OpenWatcom. |
// In MSVC++, the array will be built using several "mov ..." OP codes. |
45,7 → 45,7 |
#ifdef _WIN64 |
// Note: For MSVCC 64-bit, neither making the method volatile, nor including a volatile variable did avoid inlining. |
// so we use __declspec(noinline) |
__declspec(noinline) uint64_t GetObfuscSeed() { |
__declspec(noinline) uint64_t GetObfuscSeed(void) { |
// TODO: Not 4-byte aligned! (both variants) |
//volatile uint64_t seed = 0x7416972a52830517ull; |
//return seed; |
52,7 → 52,7 |
return 0x7416972a52830517ull; |
} |
#else |
__declspec(noinline) uint64_t GetObfuscSeed() { |
__declspec(noinline) uint64_t GetObfuscSeed(void) { |
//volatile int test = 0; |
uint64_t* addr = NULL; |
__asm { |
85,7 → 85,7 |
// So, we put it in the .data segment. |
// Note: Due to "const volatile", this value will only exist a single time in the binary file. |
const volatile uint64_t obfusc_seed = 0x7416972a52830517ull; |
uint64_t GetObfuscSeed() { |
uint64_t GetObfuscSeed(void) { |
return obfusc_seed; |
} |
#endif |
96,7 → 96,7 |
#ifdef _MSC_VER |
__declspec(noinline) |
#endif |
uint64_t GetObfuscSeed2() { |
uint64_t GetObfuscSeed2(void) { |
// Additional seed for Obfusc V7. It is always in the data segment, |
// while obfusc seed 1 is in the code segment (if the compiler allows it) |
return obfusc_seed2; |
/trunk/photoshop_sdk/DOWNLOAD.txt |
---|
1,19 → 1,18 |
How to download the latest version of the SDK: |
1. Go to https://www.adobe.com/devnet/photoshop/sdk.html |
1. Go to https://developer.adobe.com/photoshop/ |
2. At the section "C++ SDK", click "Download the SDK" |
3. You need to create a Adobe developer account now, |
2. You need to create a Adobe developer account now, |
or log in if you already have an account. |
4. At the top, click the tab "Downloads", then scroll down and and search for "Photoshop" |
(NOT "Adobe Photoshop API (Trial)") and then click "View downloads". |
3. At the section "C++ SDK", click "Plug-in and Connection SDK" |
which will lead to the following URL: |
https://developer.adobe.com/console/servicesandapis/ps |
5. Download "Photoshop Plug-In and Connection SDK" for Windows. |
4. Download "Photoshop Plug-In and Connection SDK" for Windows. |
6. Once you have obtained the SDK, extract the SDK contents in the "photoshop_sdk" directory: |
5. Once you have obtained the SDK, extract the SDK contents in the "photoshop_sdk" directory: |
- connectionsdk/ |
- images/ |
- pluginsdk/ |
43,7 → 42,7 |
Compatibility: |
The source code has been built with SDK 6.0, CS2, CS3 beta, CC 2017, and 2021 |
The source code has been built with SDK 6.0, CS2, CS3 beta, CC 2017, 2021, and 2023 |
but older versions should work, too. |
(If building with SDK v4, edit 68k.r, carbon.r, classic.r, and PiMI_68k.r |
to remove references to "PIResDefines.h", "PiPL.r" and "PiMI.r" and replace |
/trunk/preview.c |
---|
116,7 → 116,7 |
// preview_pmap.colorManagementOptions; |
} |
void dispose_preview(){ |
void dispose_preview(void){ |
disposeBuffer(&preview_handle); |
} |
/trunk/preview.h |
---|
44,11 → 44,11 |
VRect filterRect, VRect outRect, |
void* outData, long outRowBytes, double zoom); |
extern Boolean alertuser(TCHAR *err,TCHAR *more); |
extern void evalinit(); |
extern void evalinit(void); |
Boolean setup_preview(FilterRecordPtr pb,int nplanes); |
void recalc_preview(FilterRecordPtr pb,DIALOGREF dp); |
void dispose_preview(); |
void dispose_preview(void); |
OSErr drawpreview(DIALOGREF dp,void *hdc,Ptr imageptr); |
#endif |
/trunk/process.c |
---|
43,7 → 43,7 |
// minimum setup required when formulae have not changed, |
// and a new preview is to be generated. (Called by recalc_preview()) |
void evalinit(){ |
void evalinit(void){ |
int i; |
initialize_rnd_variables(); |
/trunk/slider_win.c |
---|
239,7 → 239,7 |
} |
void Slider_Uninit_PluginDll() { |
void Slider_Uninit_PluginDll(void) { |
#ifndef use_plugin_dll_sliders |
return; |
#else |
300,7 → 300,7 |
} |
} |
void Slider_Uninit_MsTrackbar() { |
void Slider_Uninit_MsTrackbar(void) { |
if (!gdata->comctlSliderInfo.initialized) return; |
gdata->comctlSliderInfo.initialized = false; |
325,7 → 325,7 |
} |
} |
void Slider_Uninit_None() { |
void Slider_Uninit_None(void) { |
if (!gdata->noneSliderInfo.initialized) return; |
// Nothing here |
/trunk/slider_win.h |
---|
45,10 → 45,10 |
// Init and uninit |
Boolean Slider_Init_PluginDll(LPCTSTR targetClass); |
void Slider_Uninit_PluginDll(); |
void Slider_Uninit_PluginDll(void); |
Boolean Slider_Init_MsTrackbar(LPCTSTR targetClass); |
void Slider_Uninit_MsTrackbar(); |
void Slider_Uninit_MsTrackbar(void); |
Boolean Slider_Init_None(LPCTSTR targetClass); |
void Slider_Uninit_None(); |
void Slider_Uninit_None(void); |
#endif |
/trunk/symtab.c |
---|
59,7 → 59,7 |
} |
} |
void dump_symbols(){ |
void dump_symbols(void){ |
struct sym_rec *p; |
int i,occ,maxchain,chain; |
/trunk/symtab.h |
---|
47,6 → 47,6 |
struct sym_rec *lookup(const char *s); |
void init_symtab(struct sym_rec *); |
void insert(struct sym_rec *p); |
void dump_symbols(); |
void dump_symbols(void); |
#endif |
/trunk/telegraphics_common/tt/compat_win.c |
---|
24,7 → 24,7 |
#include "compat_win_resource.h" |
typedef BOOL(__stdcall* f_GetVersionEx)(LPOSVERSIONINFOA lpVersionInformation); |
Boolean Implements3264ResourceAPI() { |
Boolean Implements3264ResourceAPI(void) { |
#ifdef _WIN64 |
// 64 bit OS is never Win9x, so it must be WinNT |
return true; |
57,7 → 57,7 |
// --------------------------------- |
typedef ULONGLONG(__stdcall* f_GetTickCount64)(); |
ULONGLONG _GetTickCount64() { |
ULONGLONG _GetTickCount64(void) { |
HMODULE hLib; |
f_GetTickCount64 fGetTickCount64; |
ULONGLONG res; |
/trunk/telegraphics_common/tt/compat_win.h |
---|
78,8 → 78,10 |
enum{ ok = 1,cancel = 2 }; |
ULONGLONG _GetTickCount64(); |
Boolean Implements3264ResourceAPI(void); |
ULONGLONG _GetTickCount64(void); |
HANDLE _BeginUpdateResource( |
LPCTSTR pFileName, |
BOOL bDeleteExistingResources |
/trunk/visual_studio/README.md |
---|
3,7 → 3,7 |
Building FilterFoundry with Visual Studio |
========================================= |
Most recently tested with Visual Studio 2019 and Adobe Photoshop SDK CC 2017. |
Most recently tested with Visual Studio 2022 and Adobe Photoshop SDK 2023. |
Prerequisites |
/trunk/wpj/README.md |
---|
2,7 → 2,7 |
Building FilterFoundry with OpenWatcom |
====================================== |
Tested with OpenWatcom 1.9 and OpenWatcom 2.0 together with Adobe Photoshop SDK 2021. |
Tested with OpenWatcom 1.9 and OpenWatcom 2.0 together with Adobe Photoshop SDK 2023. |
Prerequisites |