Subversion Repositories filter_foundry

Compare Revisions

Ignore whitespace Rev 511 → Rev 512

/trunk/BUILDING.md
101,6 → 101,10
* Most recently tested with Open Watcom 1.9 and Adobe Photoshop SDK CC 2017.
 
BUILDING WITH MINGW32/64
* IMPORTANT: Building with MINGW32/64 is currently NOT possible
because the resoure compiler doesn't resolve the compiler (windres) constants of language.h in
language_win.rc and shows a syntax error. You can compile if you replace the constants by hand.
Reported bug in May 8, 2022 via email, because the bugtracker doesn't allow user account creation.
* Mingw32 can be hosted on virtually any UNIX or Linux system, or under Windows.
* Download: http://mingw-w64.org/doku.php/download/mingw-builds
* Do NOT install mingw32 to a directory that contains white spaces (i.e. "C:\Program Files (x86)\")!
/trunk/ff.h
156,9 → 156,6
Boolean setup(FilterRecordPtr pb);
void evalpixel(unsigned char *outp,unsigned char *inp);
 
// from ui.c
void strcpy_win_replace_ampersand(char* dst, char* src);
 
// from make.c
unsigned long printablehash(unsigned long hash);
size_t fixpipl(PIPropertyList *pipl,size_t origsize,char* title, char* category, long *event_id);
/trunk/language_win.rc
23,44 → 23,44
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
{
// TODO: mingw windres does not want the MSG_* defines here :-( Why?! Even Watcom can do it!
MSG_PREMIERE_COMPAT_ID, MSG_PREMIERE_COMPAT_ENUS
MSG_RUNDLL_ERR_ID, MSG_RUNDLL_ERR_ENUS
MSG_INCOMPATIBLE_OBFUSCATION_ID, MSG_INCOMPATIBLE_OBFUSCATION_ENUS
MSG_FILTER_PROTECTED_ID, MSG_FILTER_PROTECTED_ENUS
MSG_LOADFILE_UNKNOWN_FORMAT_ID, MSG_LOADFILE_UNKNOWN_FORMAT_ENUS
MSG_INVALID_PARAMETER_DATA_ID, MSG_INVALID_PARAMETER_DATA_ENUS
MSG_CANNOT_ZOOM_ID, MSG_CANNOT_ZOOM_ENUS
MSG_CANNOT_ZOOM_MEMFULL_ID, MSG_CANNOT_ZOOM_MEMFULL_ENUS
MSG_BUILT32_ID, MSG_BUILT32_ENUS
MSG_BUILT64_ID, MSG_BUILT64_ENUS
MSG_CANNOT_OPEN_FILE_ID, MSG_CANNOT_OPEN_FILE_ENUS
MSG_CANNOT_CREATE_FILE_ID, MSG_CANNOT_CREATE_FILE_ENUS
MSG_EXPRESSION1024_FOUND_ID, MSG_EXPRESSION1024_FOUND_ENUS
MSG_EXPRESSION_OOM_ID, MSG_EXPRESSION_OOM_ENUS
MSG_FILTERS_UNLIMITED_WARNING_ID, MSG_FILTERS_UNLIMITED_WARNING_ENUS
MSG_FORMULA_IR_1023_TRUNCATED_ID, MSG_FORMULA_IR_1023_TRUNCATED_ENUS
MSG_FORMULA_R_1023_TRUNCATED_ID, MSG_FORMULA_R_1023_TRUNCATED_ENUS
MSG_FORMULA_G_1023_TRUNCATED_ID, MSG_FORMULA_G_1023_TRUNCATED_ENUS
MSG_FORMULA_B_1023_TRUNCATED_ID, MSG_FORMULA_B_1023_TRUNCATED_ENUS
MSG_FORMULA_A_1023_TRUNCATED_ID, MSG_FORMULA_A_1023_TRUNCATED_ENUS
MSG_CANNOT_CREATE_32BIT_FILTER_ID, MSG_CANNOT_CREATE_32BIT_FILTER_ENUS
MSG_CANNOT_CREATE_64BIT_FILTER_ID, MSG_CANNOT_CREATE_64BIT_FILTER_ENUS
MSG_CANNOT_SAVE_SETTINGS_ID, MSG_CANNOT_SAVE_SETTINGS_ENUS
MSG_CANNOT_LOAD_SETTINGS_ID, MSG_CANNOT_LOAD_SETTINGS_ENUS
MSG_SAVED_EXPR_ERR_ID, MSG_SAVED_EXPR_ERR_ENUS
MSG_CATEGORY_EMPTY_ERR_ID, MSG_CATEGORY_EMPTY_ERR_ENUS
MSG_TITLE_EMPTY_ERR_ID, MSG_TITLE_EMPTY_ERR_ENUS
MSG_UNICODE_DATA_WARNING_ID, MSG_UNICODE_DATA_WARNING_ENUS
MSG_EXTCHARSET_DATA_WARNING_ID, MSG_EXTCHARSET_DATA_WARNING_ENUS
MSG_SLIDER_UNAVAILABLE_ID, MSG_SLIDER_UNAVAILABLE_ENUS
MSG_PICO_SAVED_ID, MSG_PICO_SAVED_ENUS
MSG_PLEASE_EDIT_MANUALLY_ID, MSG_PLEASE_EDIT_MANUALLY_ENUS
MSG_FIND_DOKU_HERE_ID, MSG_FIND_DOKU_HERE_ENUS
MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ID, MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ENUS
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_ENUS
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_ENUS
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_ENUS
// TODO: mingw windres does not want the MSG_* defines here :-( Why?! Even Watcom can do it!
MSG_PREMIERE_COMPAT_ID, MSG_PREMIERE_COMPAT_ENUS
MSG_RUNDLL_ERR_ID, MSG_RUNDLL_ERR_ENUS
MSG_INCOMPATIBLE_OBFUSCATION_ID, MSG_INCOMPATIBLE_OBFUSCATION_ENUS
MSG_FILTER_PROTECTED_ID, MSG_FILTER_PROTECTED_ENUS
MSG_LOADFILE_UNKNOWN_FORMAT_ID, MSG_LOADFILE_UNKNOWN_FORMAT_ENUS
MSG_INVALID_PARAMETER_DATA_ID, MSG_INVALID_PARAMETER_DATA_ENUS
MSG_CANNOT_ZOOM_ID, MSG_CANNOT_ZOOM_ENUS
MSG_CANNOT_ZOOM_MEMFULL_ID, MSG_CANNOT_ZOOM_MEMFULL_ENUS
MSG_BUILT32_ID, MSG_BUILT32_ENUS
MSG_BUILT64_ID, MSG_BUILT64_ENUS
MSG_CANNOT_OPEN_FILE_ID, MSG_CANNOT_OPEN_FILE_ENUS
MSG_CANNOT_CREATE_FILE_ID, MSG_CANNOT_CREATE_FILE_ENUS
MSG_EXPRESSION1024_FOUND_ID, MSG_EXPRESSION1024_FOUND_ENUS
MSG_EXPRESSION_OOM_ID, MSG_EXPRESSION_OOM_ENUS
MSG_FILTERS_UNLIMITED_WARNING_ID, MSG_FILTERS_UNLIMITED_WARNING_ENUS
MSG_FORMULA_IR_1023_TRUNCATED_ID, MSG_FORMULA_IR_1023_TRUNCATED_ENUS
MSG_FORMULA_R_1023_TRUNCATED_ID, MSG_FORMULA_R_1023_TRUNCATED_ENUS
MSG_FORMULA_G_1023_TRUNCATED_ID, MSG_FORMULA_G_1023_TRUNCATED_ENUS
MSG_FORMULA_B_1023_TRUNCATED_ID, MSG_FORMULA_B_1023_TRUNCATED_ENUS
MSG_FORMULA_A_1023_TRUNCATED_ID, MSG_FORMULA_A_1023_TRUNCATED_ENUS
MSG_CANNOT_CREATE_32BIT_FILTER_ID, MSG_CANNOT_CREATE_32BIT_FILTER_ENUS
MSG_CANNOT_CREATE_64BIT_FILTER_ID, MSG_CANNOT_CREATE_64BIT_FILTER_ENUS
MSG_CANNOT_SAVE_SETTINGS_ID, MSG_CANNOT_SAVE_SETTINGS_ENUS
MSG_CANNOT_LOAD_SETTINGS_ID, MSG_CANNOT_LOAD_SETTINGS_ENUS
MSG_SAVED_EXPR_ERR_ID, MSG_SAVED_EXPR_ERR_ENUS
MSG_CATEGORY_EMPTY_ERR_ID, MSG_CATEGORY_EMPTY_ERR_ENUS
MSG_TITLE_EMPTY_ERR_ID, MSG_TITLE_EMPTY_ERR_ENUS
MSG_UNICODE_DATA_WARNING_ID, MSG_UNICODE_DATA_WARNING_ENUS
MSG_EXTCHARSET_DATA_WARNING_ID, MSG_EXTCHARSET_DATA_WARNING_ENUS
MSG_SLIDER_UNAVAILABLE_ID, MSG_SLIDER_UNAVAILABLE_ENUS
MSG_PICO_SAVED_ID, MSG_PICO_SAVED_ENUS
MSG_PLEASE_EDIT_MANUALLY_ID, MSG_PLEASE_EDIT_MANUALLY_ENUS
MSG_FIND_DOKU_HERE_ID, MSG_FIND_DOKU_HERE_ENUS
MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ID, MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ENUS
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_ENUS
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_ENUS
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_ENUS
MSG_LOAD_FILTER_SETTINGS_TITLE_ID, MSG_LOAD_FILTER_SETTINGS_TITLE_ENUS
MSG_SAVE_FILTER_SETTINGS_TITLE_ID, MSG_SAVE_FILTER_SETTINGS_TITLE_ENUS
MSG_MAKE_FILTER_SETTINGS_TITLE_ID, MSG_MAKE_FILTER_SETTINGS_TITLE_ENUS
86,44 → 86,44
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
STRINGTABLE
{
// TODO: mingw windres does not want the MSG_* defines here :-( Why?! Even Watcom can do it!
MSG_PREMIERE_COMPAT_ID, MSG_PREMIERE_COMPAT_DEDE
MSG_RUNDLL_ERR_ID, MSG_RUNDLL_ERR_DEDE
MSG_INCOMPATIBLE_OBFUSCATION_ID, MSG_INCOMPATIBLE_OBFUSCATION_DEDE
MSG_FILTER_PROTECTED_ID, MSG_FILTER_PROTECTED_DEDE
MSG_LOADFILE_UNKNOWN_FORMAT_ID, MSG_LOADFILE_UNKNOWN_FORMAT_DEDE
MSG_INVALID_PARAMETER_DATA_ID, MSG_INVALID_PARAMETER_DATA_DEDE
MSG_CANNOT_ZOOM_ID, MSG_CANNOT_ZOOM_DEDE
MSG_CANNOT_ZOOM_MEMFULL_ID, MSG_CANNOT_ZOOM_MEMFULL_DEDE
MSG_BUILT32_ID, MSG_BUILT32_DEDE
MSG_BUILT64_ID, MSG_BUILT64_DEDE
MSG_CANNOT_OPEN_FILE_ID, MSG_CANNOT_OPEN_FILE_DEDE
MSG_CANNOT_CREATE_FILE_ID, MSG_CANNOT_CREATE_FILE_DEDE
MSG_EXPRESSION1024_FOUND_ID, MSG_EXPRESSION1024_FOUND_DEDE
MSG_EXPRESSION_OOM_ID, MSG_EXPRESSION_OOM_DEDE
MSG_FILTERS_UNLIMITED_WARNING_ID, MSG_FILTERS_UNLIMITED_WARNING_DEDE
MSG_FORMULA_IR_1023_TRUNCATED_ID, MSG_FORMULA_IR_1023_TRUNCATED_DEDE
MSG_FORMULA_R_1023_TRUNCATED_ID, MSG_FORMULA_R_1023_TRUNCATED_DEDE
MSG_FORMULA_G_1023_TRUNCATED_ID, MSG_FORMULA_G_1023_TRUNCATED_DEDE
MSG_FORMULA_B_1023_TRUNCATED_ID, MSG_FORMULA_B_1023_TRUNCATED_DEDE
MSG_FORMULA_A_1023_TRUNCATED_ID, MSG_FORMULA_A_1023_TRUNCATED_DEDE
MSG_CANNOT_CREATE_32BIT_FILTER_ID, MSG_CANNOT_CREATE_32BIT_FILTER_DEDE
MSG_CANNOT_CREATE_64BIT_FILTER_ID, MSG_CANNOT_CREATE_64BIT_FILTER_DEDE
MSG_CANNOT_SAVE_SETTINGS_ID, MSG_CANNOT_SAVE_SETTINGS_DEDE
MSG_CANNOT_LOAD_SETTINGS_ID, MSG_CANNOT_LOAD_SETTINGS_DEDE
MSG_SAVED_EXPR_ERR_ID, MSG_SAVED_EXPR_ERR_DEDE
MSG_CATEGORY_EMPTY_ERR_ID, MSG_CATEGORY_EMPTY_ERR_DEDE
MSG_TITLE_EMPTY_ERR_ID, MSG_TITLE_EMPTY_ERR_DEDE
MSG_UNICODE_DATA_WARNING_ID, MSG_UNICODE_DATA_WARNING_DEDE
MSG_EXTCHARSET_DATA_WARNING_ID, MSG_EXTCHARSET_DATA_WARNING_DEDE
MSG_SLIDER_UNAVAILABLE_ID, MSG_SLIDER_UNAVAILABLE_DEDE
MSG_PICO_SAVED_ID, MSG_PICO_SAVED_DEDE
MSG_PLEASE_EDIT_MANUALLY_ID, MSG_PLEASE_EDIT_MANUALLY_DEDE
MSG_FIND_DOKU_HERE_ID, MSG_FIND_DOKU_HERE_DEDE
MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ID, MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_DEDE
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_DEDE
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_DEDE
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_DEDE
// TODO: mingw windres does not want the MSG_* defines here :-( Why?! Even Watcom can do it!
MSG_PREMIERE_COMPAT_ID, MSG_PREMIERE_COMPAT_DEDE
MSG_RUNDLL_ERR_ID, MSG_RUNDLL_ERR_DEDE
MSG_INCOMPATIBLE_OBFUSCATION_ID, MSG_INCOMPATIBLE_OBFUSCATION_DEDE
MSG_FILTER_PROTECTED_ID, MSG_FILTER_PROTECTED_DEDE
MSG_LOADFILE_UNKNOWN_FORMAT_ID, MSG_LOADFILE_UNKNOWN_FORMAT_DEDE
MSG_INVALID_PARAMETER_DATA_ID, MSG_INVALID_PARAMETER_DATA_DEDE
MSG_CANNOT_ZOOM_ID, MSG_CANNOT_ZOOM_DEDE
MSG_CANNOT_ZOOM_MEMFULL_ID, MSG_CANNOT_ZOOM_MEMFULL_DEDE
MSG_BUILT32_ID, MSG_BUILT32_DEDE
MSG_BUILT64_ID, MSG_BUILT64_DEDE
MSG_CANNOT_OPEN_FILE_ID, MSG_CANNOT_OPEN_FILE_DEDE
MSG_CANNOT_CREATE_FILE_ID, MSG_CANNOT_CREATE_FILE_DEDE
MSG_EXPRESSION1024_FOUND_ID, MSG_EXPRESSION1024_FOUND_DEDE
MSG_EXPRESSION_OOM_ID, MSG_EXPRESSION_OOM_DEDE
MSG_FILTERS_UNLIMITED_WARNING_ID, MSG_FILTERS_UNLIMITED_WARNING_DEDE
MSG_FORMULA_IR_1023_TRUNCATED_ID, MSG_FORMULA_IR_1023_TRUNCATED_DEDE
MSG_FORMULA_R_1023_TRUNCATED_ID, MSG_FORMULA_R_1023_TRUNCATED_DEDE
MSG_FORMULA_G_1023_TRUNCATED_ID, MSG_FORMULA_G_1023_TRUNCATED_DEDE
MSG_FORMULA_B_1023_TRUNCATED_ID, MSG_FORMULA_B_1023_TRUNCATED_DEDE
MSG_FORMULA_A_1023_TRUNCATED_ID, MSG_FORMULA_A_1023_TRUNCATED_DEDE
MSG_CANNOT_CREATE_32BIT_FILTER_ID, MSG_CANNOT_CREATE_32BIT_FILTER_DEDE
MSG_CANNOT_CREATE_64BIT_FILTER_ID, MSG_CANNOT_CREATE_64BIT_FILTER_DEDE
MSG_CANNOT_SAVE_SETTINGS_ID, MSG_CANNOT_SAVE_SETTINGS_DEDE
MSG_CANNOT_LOAD_SETTINGS_ID, MSG_CANNOT_LOAD_SETTINGS_DEDE
MSG_SAVED_EXPR_ERR_ID, MSG_SAVED_EXPR_ERR_DEDE
MSG_CATEGORY_EMPTY_ERR_ID, MSG_CATEGORY_EMPTY_ERR_DEDE
MSG_TITLE_EMPTY_ERR_ID, MSG_TITLE_EMPTY_ERR_DEDE
MSG_UNICODE_DATA_WARNING_ID, MSG_UNICODE_DATA_WARNING_DEDE
MSG_EXTCHARSET_DATA_WARNING_ID, MSG_EXTCHARSET_DATA_WARNING_DEDE
MSG_SLIDER_UNAVAILABLE_ID, MSG_SLIDER_UNAVAILABLE_DEDE
MSG_PICO_SAVED_ID, MSG_PICO_SAVED_DEDE
MSG_PLEASE_EDIT_MANUALLY_ID, MSG_PLEASE_EDIT_MANUALLY_DEDE
MSG_FIND_DOKU_HERE_ID, MSG_FIND_DOKU_HERE_DEDE
MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ID, MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_DEDE
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_DEDE
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_DEDE
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_DEDE
MSG_LOAD_FILTER_SETTINGS_TITLE_ID, MSG_LOAD_FILTER_SETTINGS_TITLE_DEDE
MSG_SAVE_FILTER_SETTINGS_TITLE_ID, MSG_SAVE_FILTER_SETTINGS_TITLE_DEDE
MSG_MAKE_FILTER_SETTINGS_TITLE_ID, MSG_MAKE_FILTER_SETTINGS_TITLE_DEDE
/trunk/telegraphics_common/tt/str.c
166,3 → 166,24
return str1;
}
*/
 
void strcpy_win_replace_ampersand(char* dst, char* src) {
size_t i;
for (i = 0; i < strlen(src); i++) {
#ifdef WIN_ENV
// & needs to be replaced to && in:
// - Labels (SETCTLTEXT)
// - Menu items (i.e. PIPL)
// It is not required in:
// - Filedialog FileName
// - MessageBox title or content
// - Window titles
// - Input boxes, e.g. import+export of an existing filter
if (src[i] == '&') {
*dst++ = src[i];
}
#endif
* dst++ = src[i];
}
*dst++ = '\0';
}
/trunk/telegraphics_common/tt/str.h
67,4 → 67,6
/* in-place conversion from Pascal to C string */
//#define INPLACEP2CSTR(s) ((s)[*(s)+1] = 0,(char*)(s)+1)
 
void strcpy_win_replace_ampersand(char* dst, char* src);
 
#endif
/trunk/ui.c
254,27 → 254,6
 
/* one-time initialisation of dialog box */
 
void strcpy_win_replace_ampersand(char *dst, char *src) {
size_t i;
for (i = 0; i < strlen(src); i++) {
#ifdef WIN_ENV
// & needs to be replaced to && in:
// - Labels (SETCTLTEXT)
// - Menu items (i.e. PIPL)
// It is not required in:
// - Filedialog FileName
// - MessageBox title or content
// - Window titles
// - Input boxes, e.g. import+export of an existing filter
if (src[i] == '&') {
*dst++ = src[i];
}
#endif
*dst++ = src[i];
}
*dst++ = '\0';
}
 
void maindlginit(DIALOGREF dp){
char s[0x100];
int i;
/trunk/ui_build.c
90,14 → 90,14
 
Boolean containsUnicodeInput(DIALOGREF dp, int item) {
enum { MAXFIELD = 0x100 };
char s[MAXFIELD + 1];
char sa[MAXFIELD + 1];
wchar_t sw[MAXFIELD + 1];
size_t i;
 
GetDlgItemTextA(dp, item, s, MAXFIELD);
GetDlgItemTextA(dp, item, sa, MAXFIELD);
GetDlgItemTextW(dp, item, sw, MAXFIELD);
for (i = 0; i < strlen(s); i++) {
if (((wchar_t)s[i] != sw[i]) && (s[i] == '?')) {
for (i = 0; i < strlen(sa); i++) {
if (((wchar_t)sa[i] != sw[i]) && (sa[i] == '?')) {
return true;
}
}
186,8 → 186,8
 
#ifdef UNICODE
if (unicode) {
// TODO: In this message, we recommend that the user chooses character of his own charset.
// BUT: The user should actually only choose A-Z, otherwise stuff might be displayed wrong on foreign computers?!
// "unicode" means that there are characters that will be converted to "?" when converting wchar_t* => char*
// Note that this is might be not true if your the characters are mapped in your current default Ansi Charset (e.g. German Umlauts on a German computer)
simplewarning_id(MSG_UNICODE_DATA_WARNING_ID);
}
else