fotoxx.h (fotoxx-23.0) | : | fotoxx.h (fotoxx-23.1) | ||
---|---|---|---|---|
/******************************************************************************* * | /******************************************************************************* * | |||
Fotoxx edit photos and manage collections | Fotoxx - edit photos and manage collections | |||
Copyright 2007-2023 Michael Cornelison | Copyright 2007-2023 Michael Cornelison | |||
source code URL: https://kornelix.net | source code URL: https://kornelix.net | |||
contact: mkornelix@gmail.com | contact: mkornelix@gmail.com | |||
This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. See https://www.gnu.org/licenses | (at your option) any later version. See https://www.gnu.org/licenses | |||
skipping to change at line 31 | skipping to change at line 31 | |||
#include <wait.h> | #include <wait.h> | |||
#include <tiffio.h> | #include <tiffio.h> | |||
#include <png.h> | #include <png.h> | |||
#include "jpeglib.h" | #include "jpeglib.h" | |||
#include <lcms2.h> | #include <lcms2.h> | |||
#include <champlain-gtk/champlain-gtk.h> | #include <champlain-gtk/champlain-gtk.h> | |||
#include "zfuncs.h" | #include "zfuncs.h" | |||
// Fotoxx definitions | // Fotoxx definitions | |||
#define Frelease "fotoxx-23.0" // current release | #define Frelease "fotoxx-23.1" // current release | |||
#define Flicense "Free software - GNU General Public License v.3" | #define Flicense "Free software - GNU General Public License v.3" | |||
#define Fwebsite "https://kornelix.net/fotoxx/fotoxx.html" // fotoxx web site | #define Fwebsite "https://kornelix.net/fotoxx/fotoxx.html" // fotoxx web site | |||
#define Fgitlab "https://gitlab.com/fotoxx" // GitLab home | #define Fgitlab "https://gitlab.com/fotoxx" // GitLab home | |||
#define Fprivacy "https://gitlab.com/fotoxx/fotoxx/wikis/privacy" // Gitlab privacy policy | #define Fprivacy "https://gitlab.com/fotoxx/fotoxx/wikis/privacy" // Gitlab privacy policy | |||
#define Fcontact "mkornelix@gmail.com" | #define Fcontact "mkornelix@gmail.com" | |||
#define MEGA (1024.0 * 1024.0) // 2**20 | #define MEGA (1024.0 * 1024.0) // 2**20 | |||
#define GIGA (1024.0 * MEGA) // 2**30 | #define GIGA (1024.0 * MEGA) // 2**30 | |||
#define PI 3.141592654 | #define PI 3.141592654 | |||
#define RAD (180.0/PI) | #define RAD (180.0/PI) | |||
skipping to change at line 67 | skipping to change at line 67 | |||
#define RGBFIX(r,g,b) \ | #define RGBFIX(r,g,b) \ | |||
if (r < 0) { r = 0; } if (g < 0) { g = 0; } if (b < 0) { b = 0; } \ | if (r < 0) { r = 0; } if (g < 0) { g = 0; } if (b < 0) { b = 0; } \ | |||
max$ = r; if (g > max$) { max$ = g; } if (b > max$) { max$ = b; } \ | max$ = r; if (g > max$) { max$ = g; } if (b > max$) { max$ = b; } \ | |||
if (max$ > 255) { r *= 255/max$; g *= 255/max$; b *= 255/max$; } | if (max$ > 255) { r *= 255/max$; g *= 255/max$; b *= 255/max$; } | |||
// compile time limits that could be increased | // compile time limits that could be increased | |||
#define thumbfilesize 512 // thumbnail file pixel size | #define thumbfilesize 512 // thumbnail file pixel size | |||
#define wwhh_limit1 40000 // max. image width or height | #define wwhh_limit1 40000 // max. image width or height | |||
#define wwhh_limit2 (256 * MEGA) // max. image width x height | #define wwhh_limit2 (256 * MEGA) // max. image width x height | |||
#define max_threads 16 | #define NWT 16 | |||
// max. threads (hyperthreads useless) | // working threads 23.1 | |||
#define maxNST 16 | ||||
// max. metadata server threads | ||||
#define maxtopfolders 200 // max. no. of top image folders | #define maxtopfolders 200 // max. no. of top image folders | |||
#define indexrecl 2000 // max. image index rec. (>XFCC >tagFcc) | #define indexrecl 2000 // max. image index rec. (>XFCC >tagFcc) | |||
#define maximages 1000000 // max. image files supported | #define maximages 1000000 // max. image files supported | |||
#define maxgallery 100000 // max. gallery/folder files supported | #define maxgallery 100000 // max. gallery/folder files supported | |||
#define maxtagcats 200 // max tag categories | ||||
#define maxworldcities 100000 // max entries in worldcities.txt 23.0 | #define maxworldcities 100000 // max entries in worldcities.txt 23.0 | |||
#define tagcc 50 | ||||
// max cc for one tag or category ID | ||||
#define tagFcc 1000 | ||||
// max tag cc for one image file | ||||
#define maxtags 10000 | ||||
// max overall tags | ||||
#define tagGcc 20000 | ||||
// max tag cc per catg (textwidget_append()) | ||||
#define tagMcc 1000 | ||||
// max tag cc for batch add tags | ||||
#define tagScc 500 | ||||
// max tag cc for search tags | ||||
#define tagRcc 300 | ||||
// max tag cc for recent tags | ||||
#define maxcaps 20 | ||||
// max captions (metadata items/keys) | ||||
#define maxcapcc 2000 | ||||
// max captions text (metadata text) | ||||
#define GSmax 100000 // max files for gallery_select() | #define GSmax 100000 // max files for gallery_select() | |||
#define MXmax 20 | ||||
// max extra indexed metadata items | #define ANCC 100 | |||
#define MXmaxcc 1000 | // max album name | |||
// max extra indexed metadata total cc 22.40 | #define AFCC 300 | |||
#define MPmax 100 | // max album file name (path) | |||
// max metadata items in dialog picklists | #define maxalbums 100 | |||
#define MRmax 50 | // max total albums | |||
// max metadata items in batch report | #define maxalbumfiles maxgallery | |||
#define MVmax 50 | // max files in one album | |||
// max extra metadata items in view metadata | ||||
#define exif_maxcc 2000 | // metadata keys for embedded image metadata | |||
// max. cc for exif/iptc text | ||||
#define xhistcc 200 | #define meta_ww_key "ImageWidth" | |||
// max. edit hist cc (per edit step) 23.0 | // image width and height | |||
#define ANCC 100 | #define meta_hh_key "ImageHeight" | |||
// max. album name | // (replace meta_wwhh_key) | |||
#define AFCC 300 | #define meta_date_key "DateTimeOriginal" | |||
// max. album file name (path) | // photo date/time | |||
#define maxalbums 100 | #define meta_orientation_key "Orientation" | |||
// max. total albums | // orientation (number format) | |||
#define maxalbumfiles maxgallery | #define meta_rollangle_key "RollAngle" | |||
// max. files in one album | // roll angle - canera tilt error | |||
#define meta_edithist_key "ImageHistory" | ||||
// EXIF/IPTC keys for embedded image metadata | // edit history log | |||
#define meta_copyright_key "Copyright" | ||||
#define exif_ww_key "ImageWidth" | // image copyright | |||
// image width and height | #define meta_focal_length_35_key "FocalLengthIn35mmFormat" | |||
#define exif_hh_key "ImageHeight" | // focal length, 35mm equivalent | |||
// (replace exif_wwhh_key) | #define meta_focal_length_key "FocalLength" | |||
#define exif_date_key "DateTimeOriginal" | // focal length, real | |||
// photo date/time | #define meta_location_key "City" | |||
#define exif_orientation_key "Orientation" | // city/location name (geotags) | |||
// orientation | #define meta_country_key "Country" | |||
#define exif_rollangle_key "RollAngle" | // country name | |||
// roll angle - canera tilt error | #define meta_lati_key "GPSLatitude" | |||
#define exif_edithist_key "ImageHistory" | // latitude in degrees (-180 to +180) | |||
// edit history log | #define meta_longi_key "GPSLongitude" | |||
#define exif_copyright_key "Copyright" | // longitude in degrees (-180 to +180) | |||
// image copyright | #define meta_colorprof1_key "ICCProfileName" | |||
#define exif_focal_length_35_key "FocalLengthIn35mmFormat" | // ICC color profile name, e.g. "sRGB" | |||
// focal length, 35mm equivalent | #define meta_colorprof2_key "ICC_Profile" | |||
#define exif_focal_length_key "FocalLength" | // embedded color profile data | |||
// focal length, real | #define meta_tags_key "Keywords" | |||
#define exif_location_key "City" | // comma-delimited list for image search | |||
// city/location name (geotags) | #define meta_rating_key "Rating" | |||
#define exif_country_key "Country" | // star rating, 0-5 stars | |||
// country name | ||||
#define exif_lati_key "GPSLatitude" | #define meta_creator_key "Creator" // others: artis | |||
// latitude in degrees (-180 to +180) | t, by-line, author, photographer | |||
#define exif_longi_key "GPSLongitude" | #define meta_description_key "Description" // others: image | |||
// longitude in degrees (-180 to +180) | description, comment, usercomment, caption | |||
#define exif_colorprof1_key "ICCProfileName" | #define meta_title_key "Title" // others: subje | |||
// ICC color profile name, e.g. "sRGB" | ct, headline | |||
#define exif_colorprof2_key "ICC_Profile" | ||||
// embedded color profile data | // metadata tag limits ("keywords" metadata key) | |||
#define iptc_creator_key "Creator" // others: artis | #define maxtags 10000 | |||
t, by-line, author, photographer | // max overall tags | |||
#define iptc_description_key "Description" // others: image | #define maxtagcats 200 | |||
description, comment, usercomment, caption | // max tag categories | |||
#define iptc_title_key "Title" // others: subje | #define tagXcc 50 | |||
ct, headline | // max cc for one tag or category ID | |||
#define iptc_keywords_key "Keywords" // keywords (tag | #define catgXcc 20000 | |||
s), comma-delimited list for image search | // max tag cc per catg (textwidget_append()) | |||
#define iptc_rating_key "Rating" // star rating, | #define filetagsXcc 1000 | |||
0-5 stars | // max tag cc for one image file | |||
#define batchtagsXcc 1000 | ||||
// max tag cc for batch add tags | ||||
#define searchtagsXcc 500 | ||||
// max tag cc for search tags | ||||
#define recenttagsXcc 300 | ||||
// max tag cc for recent tags | ||||
#define maxcapkeys 20 | ||||
// max captions (metadata items/keys) | ||||
#define capsXcc 2000 | ||||
// max captions text (metadata text) | ||||
#define maxbatchkeys 50 | ||||
// max metadata items in batch report | ||||
#define maxviewkeys 50 | ||||
// max extra metadata items (view metadata) | ||||
#define xmetamaxkeys 20 | ||||
// max extra indexed metadata items | ||||
#define xmetaXcc 1000 | ||||
// max extra indexed metadata total cc 22.40 | ||||
#define metakeyXcc 80 | ||||
// max cc for metadata key name | ||||
#define metadataXcc 2000 | ||||
// max cc for metadata key data | ||||
#define edithistXcc 200 | ||||
// max edit hist cc (per edit step) 23.0 | ||||
// GTK/GDK definitions | // GTK/GDK definitions | |||
#define TEXTWIN GTK_TEXT_WINDOW_TEXT | #define TEXTWIN GTK_TEXT_WINDOW_TEXT | |||
#define NODITHER GDK_RGB_DITHER_NONE | #define NODITHER GDK_RGB_DITHER_NONE | |||
#define ALWAYS GTK_POLICY_ALWAYS | #define ALWAYS GTK_POLICY_ALWAYS | |||
#define NEVER GTK_POLICY_NEVER | #define NEVER GTK_POLICY_NEVER | |||
#define AUTO GTK_POLICY_AUTOMATIC | #define AUTO GTK_POLICY_AUTOMATIC | |||
#define GDKRGB GDK_COLORSPACE_RGB | #define GDKRGB GDK_COLORSPACE_RGB | |||
#define LINEATTRIBUTES GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER | #define LINEATTRIBUTES GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER | |||
skipping to change at line 141 | skipping to change at line 145 | |||
#define HYPER GDK_INTERP_HYPER | #define HYPER GDK_INTERP_HYPER | |||
#define NEAREST GDK_INTERP_NEAREST | #define NEAREST GDK_INTERP_NEAREST | |||
#define SCROLLWIN GTK_SCROLLED_WINDOW | #define SCROLLWIN GTK_SCROLLED_WINDOW | |||
#define VERTICAL GTK_ORIENTATION_VERTICAL | #define VERTICAL GTK_ORIENTATION_VERTICAL | |||
#define HORIZONTAL GTK_ORIENTATION_HORIZONTAL | #define HORIZONTAL GTK_ORIENTATION_HORIZONTAL | |||
#define MWIN GTK_WINDOW(Mwin) | #define MWIN GTK_WINDOW(Mwin) | |||
// externals from zfuncs module | // externals from zfuncs module | |||
namespace zfuncs { | namespace zfuncs { | |||
extern GdkDisplay *display; | extern GdkDisplay *display; | |||
// X11 workstation (KB, mouse, screen) | // X11 workstation (KB, mouse, screen) | |||
extern GdkScreen *screen; | extern GdkScreen *screen; | |||
// monitor (screen) | // monitor (screen) | |||
extern GdkDevice *mouse; | extern GdkDevice *mouse; | |||
// pointer device | // pointer device | |||
extern GtkSettings *settings; | extern GtkSettings *settings; | |||
// screen settings | // screen settings | |||
extern GtkWidget *mainwin; | extern GtkWidget *mainwin; | |||
// main window for zfuncs parent | // main window for zfuncs parent | |||
extern cchar *build_date_time; | extern ch *build_date_time; | |||
// build date and time | // build date and time | |||
extern char *progexe; | extern ch *progexe; | |||
// executable path name | // executable path name | |||
extern timeb startime; | extern timeb startime; | |||
// app startup time | // app startup time | |||
extern int Floglevel; | extern int Floglevel; | |||
// message log level, 1/2 = errors/all | // message log level, 1/2/3 = errs/info/all | |||
extern int monitor_ww, monitor_hh; | extern int monitor_ww, monitor_hh; | |||
// monitor pixel dimensions | // monitor pixel dimensions | |||
extern cchar *appfont; | extern ch *appfont; | |||
// app font ("sans 10") | // app font ("sans 10") | |||
extern int appfontsize; | extern int appfontsize; | |||
// app font size | // app font size | |||
extern char zappname[40]; | extern ch zappname[40]; | |||
// app name/version | // app name/version | |||
extern char zimagedir[200]; | extern ch zimagedir[200]; | |||
// where application image files live | // where application image files live | |||
extern int Nmalloc, Nstrdup, Nfree; | extern int Nmalloc, Nstrdup, Nfree; | |||
// malloc() strdup() free() counters | // malloc() strdup() free() counters | |||
extern int vmenuclickposn; | extern int vmenuclickposn; | |||
// Vmenu icon click position, 0-100 | // Vmenu icon click position, 0-100 | |||
extern int vmenuclickbutton; | extern int vmenuclickbutton; | |||
// "" button: 1/3 = left/right mouse | // Vmenu button: 1/3 = left/right mouse | |||
extern int vmenustop; | extern int vmenustop; | |||
// Vmenu setupfunc() stop flag | // Vmenu setupfunc() stop flag | |||
extern int zdialog_count; | extern int zdialog_count; | |||
// zdialog count (new - free) | // zdialog count (new - free) | |||
extern int zdialog_busy; | extern int zdialog_busy; | |||
// open zdialog count (run - destroy) | // open zdialog count (run - destroy) | |||
extern zdialog *zdialog_list[zdialog_max]; | extern zdialog *zdialog_list[zdialog_max]; | |||
// active zdialog list | // active zdialog list | |||
extern pthread_t tid_main; | extern pthread_t tid_main; | |||
// main() thread ID | // main() thread ID | |||
extern float splcurve_minx; | extern float splcurve_minx; | |||
// min. anchor point dist, % scale | // min. anchor point dist, % scale | |||
extern cchar *zappcrash_context1, *zappcrash_context2; | extern ch *zappcrash_context1, *zappcrash_context2; | |||
// zappcrash context data | // zappcrash context data | |||
} | } | |||
// gallery files table | // gallery files table | |||
enum FTYPE { IMAGE, RAW, VIDEO, FDIR, THUMB, OTHER, FNF }; // file types, FNF = file not found | enum FTYPE { IMAGE, RAW, VIDEO, FDIR, THUMB, OTHER, FNF }; // file types, FNF = file not found | |||
enum GTYPE { TNONE, FOLDER, SEARCH, META, RECENT, NEWEST, ALBUM }; // gallery types | enum GTYPE { TNONE, FOLDER, SEARCH, META, RECENT, NEWEST, ALBUM }; // gallery types | |||
enum GSORT { SNONE, FNAME, FNUMBER, FDATE, PDATE, FSIZE, PSIZE, MDATA }; // gallery sort types | enum GSORT { SNONE, FNAME, FNUMBER, FDATE, PDATE, FSIZE, PSIZE, MDATA }; // gallery sort types | |||
enum GSEQ { QNONE, ASCEND, DESCEND }; // gallery sort sequence | enum GSEQ { QNONE, ASCEND, DESCEND }; // gallery sort sequence | |||
struct Gindex_t { // gallery index | struct Gindex_t { // gallery index | |||
char *file; | ch *file; | |||
// /folder.../filename | // /folder.../filename | |||
char fdate[16]; | int folder; | |||
// file date: yyyymmddhhmmss | // flag, this is a folder 23.1 | |||
char pdate[16]; | ch fdate[16]; | |||
// photo date: yyyymmddhhmmss | // file date: yyyymmddhhmmss | |||
ch pdate[16]; | ||||
// photo date: yyyymmddhhmmss | ||||
int fsize; // file size, bytes | int fsize; // file size, bytes | |||
int psize; // image size, pixels | int psize; // image size, pixels | |||
char *mdata1; | ch *mdata1; | |||
// fixed text for metadata report | // fixed text for metadata report | |||
char *mdata2; | ch *mdata2; | |||
// variable text for metadata report | // variable text for metadata report | |||
}; | }; | |||
// externals from f.gallery | // externals from f.gallery | |||
namespace navi // gallery() data | namespace navi // gallery() data | |||
{ | { | |||
extern Gindex_t *Gindex; // gallery index | extern Gindex_t *Gindex; // gallery index | |||
extern int Gmdrows; // text rows in metadata list | extern int Gmdrows; // text rows in metadata list | |||
extern int Gfiles; // gallery file count (images + subdirs) | extern int Gfiles; // gallery file count (images + subdirs) | |||
extern int Gfolders; // gallery subfolder count | extern int Gfolders; // gallery subfolder count | |||
extern int Gimages; // gallery image file count | extern int Gimages; // gallery image file count | |||
extern char *galleryname; // folder path or gallery type name | extern ch *galleryname; // folder path or gallery type name | |||
extern GTYPE gallerytype; // gallery type: folder, recent, etc. | extern GTYPE gallerytype; // gallery type: folder, recent, etc. | |||
extern GSORT gallerysort; // filename/file-date/photo-date | extern GSORT gallerysort; // filename/file-date/photo-date | |||
extern GSEQ galleryseq; // ascending/descending | extern GSEQ galleryseq; // ascending/descending | |||
extern int gallerypainted; // gallery paint is complete | extern int gallerypainted; // gallery paint is complete | |||
extern int galleryposn; // gallery target scroll position | extern int galleryposn; // gallery target scroll position | |||
extern int scrollposn; // current scroll position | extern int scrollposn; // current scroll position | |||
extern int xwinW, xwinH; // image gallery window size | extern int xwinW, xwinH; // image gallery window size | |||
extern int thumbsize; // curr. thumbnail display size | extern int thumbsize; // curr. thumbnail display size | |||
extern int genthumbs; // counts thumbnails generated | extern int genthumbs; // counts thumbnails generated | |||
extern double thumbcache_MB; // thumbnail cache size, MB | extern double thumbcache_MB; // thumbnail cache size, MB | |||
int gallery_paint(GtkWidget *, cairo_t *); // gallery window paint function | int gallery_paint(GtkWidget *, cairo_t *); // gallery window paint function | |||
void menufuncx(GtkWidget *, cchar *menu); // gallery menu buttons function | void menufuncx(GtkWidget *, ch *menu); // gallery menu buttons function | |||
void changefolder(GtkWidget *widget, GdkEventButton *event); // gallery folder change function | void changefolder(GtkWidget *widget, GdkEventButton *event); // gallery folder change function | |||
void newtop(GtkWidget *widget, GdkEventButton *event); // gallery change top folder function | void newtop(GtkWidget *widget, GdkEventButton *event); // gallery change top folder function | |||
void newalbum(GtkWidget *widget, GdkEventButton *event); // gallery change album function | void newalbum(GtkWidget *widget, GdkEventButton *event); // gallery change album function | |||
int mouse_event(GtkWidget *, GdkEvent *, void *); // gallery window mouse event function | int mouse_event(GtkWidget *, GdkEvent *, void *); // gallery window mouse event function | |||
char * gallery_dragfile(); | ch * gallery_dragfile(); | |||
// gallery window file drag function | // gallery window file drag function | |||
void gallery_dropfile(int mx, int my, char *file); | void gallery_dropfile(int mx, int my, ch *file); | |||
// gallery window file drop function | // gallery window file drop function | |||
int KBaction(cchar *action); | int KBaction(ch *action); | |||
// gallery window KB key function | // gallery window KB key function | |||
} | } | |||
EX int GScount; // gallery_select(), final file count | EX int GScount; // gallery_select(), final file count | |||
EX int GSselect; // gallery_select dialog, running count | EX int GSselect; // gallery_select dialog, running count | |||
EX char *GSfiles[GSmax]; // gallery_select(), selected files | EX ch *GSfiles[GSmax]; // gallery_select(), selected files | |||
// GTK etc. parameters | // GTK etc. parameters | |||
EX GtkWidget *Mwin, *MWhbox, *MWvbox, *MWmenu; // main window containers | EX GtkWidget *Mwin, *MWhbox, *MWvbox, *MWmenu; // main window containers | |||
EX GtkWidget *Fhbox, *Fvbox, *Fpanel, *Fpanlab, *Fdrawin; // F window widgets, file view | EX GtkWidget *Fhbox, *Fvbox, *Fpanel, *Fpanlab, *Fdrawin; // F window widgets, file view | |||
EX GtkWidget *Ghbox, *Gvbox, *Gsep, *Gpanel, *Gtop, *Galbum; // G window widgets, gallery view | EX GtkWidget *Ghbox, *Gvbox, *Gsep, *Gpanel, *Gtop, *Galbum; // G window widgets, gallery view | |||
EX GtkWidget *Gscroll, *Gdrawin; | EX GtkWidget *Gscroll, *Gdrawin; | |||
EX GtkAdjustment *Gadjust; | EX GtkAdjustment *Gadjust; | |||
EX GtkWidget *Mhbox, *Mvbox; // M window widgets, net map view | EX GtkWidget *Mhbox, *Mvbox; // M window widgets, net map view | |||
EX GtkWidget *Whbox, *Wvbox, *Wdrawin; // W window widgets, world map view | EX GtkWidget *Whbox, *Wvbox, *Wdrawin; // W window widgets, world map view | |||
skipping to change at line 247 | skipping to change at line 252 | |||
EX GdkCursor *blankcursor; | EX GdkCursor *blankcursor; | |||
EX GdkCursor *dotcursor; | EX GdkCursor *dotcursor; | |||
EX int BLACK[3], WHITE[3], RED[3], GREEN[3], BLUE[3]; // RGB values 0-255 | EX int BLACK[3], WHITE[3], RED[3], GREEN[3], BLUE[3]; // RGB values 0-255 | |||
EX int LINE_COLOR[3]; // line drawing color, one of the above | EX int LINE_COLOR[3]; // line drawing color, one of the above | |||
EX draw_context_t draw_context; // GDK window drawing context | EX draw_context_t draw_context; // GDK window drawing context | |||
// user preferences and settings | // user preferences and settings | |||
EX char *menu_style; // menu style: icons/text/both | EX ch *menu_style; // menu style: icons/text/both | |||
EX int FBrgb[3]; // F view background color, RGB 0-255 | EX int FBrgb[3]; // F view background color, RGB 0-255 | |||
EX int GBrgb[3]; // G view background color, RGB 0-255 | EX int GBrgb[3]; // G view background color, RGB 0-255 | |||
EX int MFrgb[3]; // menu font color, RGB 0-255 | EX int MFrgb[3]; // menu font color, RGB 0-255 | |||
EX int MBrgb[3]; // menu background color, RGB 0-255 | EX int MBrgb[3]; // menu background color, RGB 0-255 | |||
EX int iconsize; // menu icon size | EX int iconsize; // menu icon size | |||
EX char *dialog_font; | EX ch *dialog_font; | |||
// dialog font e.g. "sans 10" | // dialog font e.g. "sans 10" | |||
EX char *startalbum; | EX ch *startalbum; | |||
// start album: file name | // start album: file name | |||
EX char *startdisplay; | EX ch *startdisplay; | |||
// start view: recent/prev/blank/file/folder | // start view: recent/prev/blank/file/folder | |||
EX char *startfolder; | EX ch *startfolder; | |||
// start folder (startdisplay=folder) | // start folder (startdisplay=folder) | |||
EX char *startfile; | EX ch *startfile; | |||
// start image file (startdisplay=file) | // start image file (startdisplay=file) | |||
EX int Fdragopt; // 1/2 = 1x drag / magnified scroll | EX int Fdragopt; // 1/2 = 1x drag / magnified scroll | |||
EX int Fshowhidden; // show hidden files in gallery view | EX int Fshowhidden; // show hidden files in gallery view | |||
EX int Flastversion; // gallery shows last versions only | EX int Flastversion; // gallery shows last versions only | |||
EX char *ImagePosn; // F-view image posn: left/center/right | EX ch *ImagePosn; // F-view image posn: left/center/right | |||
EX int Faskquit; // ask to quit option | EX int Faskquit; // ask to quit option | |||
EX int zoomcount; // zoom count to reach 2x (1-8) | EX int zoomcount; // zoom count to reach 2x (1-8) | |||
EX float zoomratio; // corresp. zoom ratio: 2**(1/zoomcount) | EX float zoomratio; // corresp. zoom ratio: 2**(1/zoomcount) | |||
EX int map_dotsize; // map dot size / mouse capture size | EX int map_dotsize; // map dot size / mouse capture size | |||
EX int ovtxcc[2]; // overlay text line range, characters | EX int ovtxcc[2]; // overlay text line range, characters | |||
EX int jpeg_def_quality; // default jpeg save quality | EX int jpeg_def_quality; // default jpeg save quality | |||
EX int tiff_comp_method; // TIFF file compression method | EX int tiff_comp_method; // TIFF file compression method | |||
EX int Frawloader; // RAW file loader, 1/2/3 = dcraw/RT/DT | EX int Frawloader; // RAW file loader, 1/2/3 = dcraw/RT/DT | |||
EX int Fautobright; // RAW loader auto brighten on/off | EX int Fautobright; // RAW loader auto brighten on/off | |||
EX int Fmatchthumb; // RAW loader match thumb color on/off | EX int Fmatchthumb; // RAW loader match thumb color on/off | |||
EX char *RAWfiletypes; | EX ch *RAWfiletypes; | |||
// recognized RAW files: .raw .rw2 ... | // recognized RAW files: .raw .rw2 ... | |||
EX char *myRAWtypes; | EX ch *myRAWtypes; | |||
// RAW types encountered | // RAW types encountered | |||
EX char *VIDEOfiletypes; | EX ch *VIDEOfiletypes; | |||
// recognized video files: .mov .mp4 ... | // recognized video files: .mov .mp4 ... | |||
EX char *myVIDEOtypes; | EX ch *myVIDEOtypes; | |||
// VIDEO types encountered | // VIDEO types encountered | |||
// menu name and function table | // menu name and function table | |||
typedef void menufunc_t(GtkWidget *,cchar *); // menu function type | typedef void menufunc_t(GtkWidget *,ch *); // menu function type | |||
struct menutab_t { | struct menutab_t { | |||
GtkWidget *topmenu; // parent menu | GtkWidget *topmenu; // parent menu | |||
cchar *menu; | ch *menu; | |||
// menu text | // menu text | |||
cchar *icon; | ch *icon; | |||
// menu icon | // menu icon | |||
cchar *desc; | ch *desc; | |||
// menu short description (tooltip) | // menu short description (tooltip) | |||
menufunc_t *func; | menufunc_t *func; | |||
// menu function (GtkWidget *, cchar *) | // menu function (GtkWidget *, ch *) | |||
cchar *arg; | ch *arg; | |||
// argument | // argument | |||
}; | }; | |||
#define CCC (XFCC*2+200) // max. command line size | #define CCC (XFCC*2+200) // max. command line size | |||
EX char command[CCC]; // (command, parameters, 2 filespecs) | EX ch command[CCC]; // (command, parameters, 2 filespecs) | |||
#define maxmenus 250 | #define maxmenus 250 | |||
EX menutab_t menutab[maxmenus]; | EX menutab_t menutab[maxmenus]; | |||
EX int Nmenus; | EX int Nmenus; | |||
// KB shortcut tables | // KB shortcut tables | |||
struct kbsftab_t { // eligible menus for KB shortcut | struct kbsftab_t { // eligible menus for KB shortcut | |||
cchar *menu; // menu name | ch *menu; // menu name | |||
menufunc_t *func; // function | menufunc_t *func; // function | |||
cchar *arg; // argument | ch *arg; // argument | |||
}; | }; | |||
#define maxkbsf 200 // functions that can have KB shortcuts | #define maxkbsf 200 // functions that can have KB shortcuts | |||
EX kbsftab_t kbsftab[maxkbsf]; | EX kbsftab_t kbsftab[maxkbsf]; | |||
EX int Nkbsf; | EX int Nkbsf; | |||
struct kbsutab_t { // user-defined shortcuts | struct kbsutab_t { // user-defined shortcuts | |||
char *key; | ch *key; | |||
// key name, e.g. "Shift+U" | // key name, e.g. "Shift+U" | |||
char *menu; | ch *menu; | |||
// menu name, e.g. "Redo" | // menu name, e.g. "Redo" | |||
}; | }; | |||
#define maxkbsu 100 // max. KB shortcuts | #define maxkbsu 100 // max. KB shortcuts | |||
EX kbsutab_t kbsutab[maxkbsu]; | EX kbsutab_t kbsutab[maxkbsu]; | |||
EX int Nkbsu; | EX int Nkbsu; | |||
// general parameters | // general parameters | |||
EX int Fwsl; // Windows WSL environment | EX int Fwsl; // Windows WSL environment | |||
EX int Fdevmenu; // flag, show developer menu | EX int Fdevmenu; // flag, show developer menu | |||
EX char desktopname[100]; | EX ch desktopname[100]; | |||
// locale specific desktop folder | // locale specific desktop folder | |||
EX char *Prelease; | EX ch *Prelease; | |||
// prior fotoxx version | // prior fotoxx version | |||
EX int Ffirsttime; // first time startup | EX int Ffirsttime; // first time startup | |||
EX int mwgeom[4]; // main window position and size | EX int mwgeom[4]; // main window position and size | |||
EX pid_t fotoxxPID; // my process PID | EX pid_t fotoxxPID; // my process PID | |||
EX int NWT; | ||||
// working threads for edit functions | ||||
EX int NST; | ||||
// metadata server threads | ||||
EX int *Nval; // static integer values 0-maximages | EX int *Nval; // static integer values 0-maximages | |||
EX char FGWM; | EX ch FGWM; | |||
// curr. view mode: 'F' 'G' 'W' 'M' | // curr. view mode: 'F' 'G' 'W' 'M' | |||
EX char PFGWM; | EX ch PFGWM; | |||
// prior view mode | // prior view mode | |||
EX int Fdcraw; // flag, dcraw installed | EX int Fdcraw; // flag, dcraw installed | |||
EX int Fexiftool; // flag, exiftool installed | EX int Fexiftool; // flag, exiftool installed | |||
EX int Frawtherapee; // flag, rawtherapee installed | EX int Frawtherapee; // flag, rawtherapee installed | |||
EX int Frawtherapeecli; // flag, " " (command line) installed | EX int Frawtherapeecli; // flag, " (command line) installed | |||
EX int Fdarktable; // flag, darktable installed | EX int Fdarktable; // flag, darktable installed | |||
EX int Fdarktablecli; | EX int Fdarktablecli; | |||
// flag, " " (command line) installed | // flag, " (command line) installed | |||
EX char *rawcommand; | EX ch *rawcommand; | |||
// custom RAW loader command | // custom RAW loader command | |||
EX int Fheif; // flag, heif-convert installed | EX int Fheif; // flag, heif-convert installed | |||
EX int Fjp2; // flag, opj_decompress installed | EX int Fjp2; // flag, opj_decompress installed | |||
EX int Fwebp; // flag, dwebp installed | EX int Fwebp; // flag, dwebp installed | |||
EX int Fgrowisofs; // flag, growisofs installed | EX int Fgrowisofs; // flag, growisofs installed | |||
EX int Fvlc; // flag, vlc installed | EX int Fvlc; // flag, vlc installed | |||
EX int Ffmpeg; // flag, ffmpeg installed | EX int Ffmpeg; // flag, ffmpeg installed | |||
EX int Faddr2line; // flag, addr2line installed | EX int Faddr2line; // flag, addr2line installed | |||
EX int Ftinycomputer; // flag, memory too little for Fotoxx | EX int Ftinycomputer; // flag, memory too little for Fotoxx | |||
EX int Fshutdown; // flag, app shutdown underway | EX int Fshutdown; // flag, app shutdown underway | |||
EX int Findexlev; // 0/1/2 = none/old/old+new image files | EX int Findexlev; // 0/1/2 = none/old/old+new image files | |||
EX int FMindexlev; // Findexlev if start via file manager | EX int FMindexlev; // Findexlev if start via file manager | |||
EX char *xmeta_keys[MXmax]; | ||||
// indexed metadata key names | ||||
EX int Fkillfunc; | ||||
// flag, running function should quit | ||||
EX int Fpaintrequest; // window paint request pending | EX int Fpaintrequest; // window paint request pending | |||
EX int Fmetamod; // image metadata unsaved changes | EX int Fmetamod; // image metadata unsaved changes | |||
EX int Ffuncbusy; | ||||
// looping function is busy/working | ||||
EX int Fthreadbusy; | ||||
// thread is busy/working | ||||
EX int Ffullscreen; // flag, window is fullscreen | EX int Ffullscreen; // flag, window is fullscreen | |||
EX int Fpanelshow; // show or hide F view top panel | EX int Fpanelshow; // show or hide F view top panel | |||
EX int Fmashup; // flag, mashup function is active | EX int Fmashup; // flag, mashup function is active | |||
EX int Fslideshow; // flag, slide show is active | EX int Fslideshow; // flag, slide show is active | |||
EX int Fview360; // flag, view360 function is active | EX int Fview360; // flag, view360 function is active | |||
EX int Fescape; | EX int Ffuncbusy; | |||
// 1: escapable func running, 2: kill func | // looping function is busy/working | |||
EX char *ss_KBkeys; | EX int Fwatchescape; | |||
// slide show KB keys, packed | // flag, function is watching Fescape | |||
EX int Fescape; | ||||
// flag, if Fwatchescape, [esc] --> Fescape | ||||
EX int Frecent; // start with recent files gallery | EX int Frecent; // start with recent files gallery | |||
EX int Fnew; // start with newly added files gallery | EX int Fnew; // start with newly added files gallery | |||
EX int Fprev; // start with previous file | EX int Fprev; // start with previous file | |||
EX int Fblank; // start with blank window | EX int Fblank; // start with blank window | |||
EX int Fmousevents; // show popup text of mouse events | EX int Fmousevents; // show popup text of mouse events | |||
EX char *topmenu; | EX ch *topmenu; | |||
// latest top-menu selection | // latest top-menu selection | |||
EX char *commandmenu; | EX ch *commandmenu; | |||
// command line menu function | // command line menu function | |||
EX char *commandparam; | EX ch *commandparam; | |||
// command line parameter | // command line parameter | |||
EX char *commandalbum; | EX ch *commandalbum; | |||
// command line album name | // command line album name | |||
EX char *video_command; | EX ch *video_command; | |||
// command to show video file | // command to show video file | |||
EX cchar *F1_help_topic; | EX ch *F1_help_topic; | |||
// current function help topic | // current function help topic | |||
EX int Fcaps; // toggle captions on or off | EX int Fcaps; // toggle captions on or off | |||
EX char *topfolders[maxtopfolders]; // user top-level image folders | EX ch *topfolders[maxtopfolders]; // user top-level image folders | |||
EX int Ntopfolders; // topfolders[] count | EX int Ntopfolders; // topfolders[] count | |||
EX char *misstops[maxtopfolders]; // missing top folders (not mounted) | EX ch *misstops[maxtopfolders]; // missing top folders (not mounted) | |||
EX int Nmisstops; // missing top folders count | EX int Nmisstops; // missing top folders count | |||
EX char *blacklist[1000]; // list of blacklisted folders/files | EX ch *blacklist[1000]; // list of blacklisted folders/files | |||
EX int Nblacklist; // blacklist count | EX int Nblacklist; // blacklist count | |||
EX char *thumbfolder; | EX ch *thumbfolder; | |||
// thumbnails folder | // thumbnails folder | |||
EX char *initial_file; | EX ch *initial_file; | |||
// initial file on command line | // initial file on command line | |||
EX char *curr_file; | EX ch *curr_file; | |||
// current image file | // current image file | |||
EX char curr_file_type[8]; | EX ch curr_file_type[8]; | |||
// jpg / tif / png / other | // jpg / tif / png / other | |||
EX int curr_file_bpc; // image file bits/color, 8/16 | EX int curr_file_bpc; // image file bits/color, 8/16 | |||
EX int curr_file_size; // image file size on disk | EX int curr_file_size; // image file size on disk | |||
EX int curr_file_posn; // position in current gallery, 0-last | EX int curr_file_posn; // position in current gallery, 0-last | |||
EX char exif_edithist[exif_maxcc]; | EX ch meta_edithist[metadataXcc]; | |||
// EXIF edit history text | // EXIF edit history text | |||
EX int exif_edithist_cc0; | EX int meta_edithist_cc0; | |||
// edit history text cc at file open | // edit history text cc at file open | |||
EX int Fexif_edithist; | EX int Fmeta_edithist; | |||
// edit history loaded for curr. file | // edit history loaded for curr. file | |||
EX char *curr_album; | EX ch *curr_album; | |||
// current or last used album | // current or last used album | |||
EX char *copymove_loc; | EX ch *copymove_loc; | |||
// last used copy/move to location | // last used copy/move to location | |||
EX char *clicked_file; | EX ch *clicked_file; | |||
// image file / thumbnail clicked | // image file / thumbnail clicked | |||
EX int clicked_posn; // clicked gallery position (Nth) | EX int clicked_posn; // clicked gallery position (Nth) | |||
EX int clicked_width; // clicked thumbnail position | EX int clicked_width; // clicked thumbnail position | |||
EX int clicked_height; // (normalized 0-100) | EX int clicked_height; // (normalized 0-100) | |||
EX char *imagefiletypes; | EX ch *imagefiletypes; | |||
// supported image types: .jpg .png etc. | // supported image types: .jpg .png etc. | |||
EX char *colormapfile; | EX ch *colormapfile; | |||
// curr. printer color map file | // curr. printer color map file | |||
EX char *RGB_chooser_file; | EX ch *RGB_chooser_file; | |||
// user's color chooser image file | // user's color chooser image file | |||
EX char paneltext[200]; | EX ch paneltext[200]; | |||
// top panel application text | // top panel application text | |||
EX ch *ss_KBkeys; | ||||
// slide show KB keys, packed | ||||
EX int Fscriptbuild; // edit script build is in-progress | EX int Fscriptbuild; // edit script build is in-progress | |||
EX char scriptfile[200]; // current script file name | EX ch scriptfile[200]; // current script file name | |||
EX FILE *script_fid; // current script file FID | EX FILE *script_fid; // current script file FID | |||
EX int Fscriptrun; // flag, script file is active | EX int Fscriptrun; // flag, script file is active | |||
EX char f_load_type[8]; // data set by PXB/PXM_load() | EX ch f_load_type[8]; // data set by PXB/PXM_load() | |||
EX int f_load_bpc; | EX int f_load_bpc; | |||
EX int f_load_bpc_raw; | EX int f_load_bpc_raw; | |||
EX int f_load_size; | EX int f_load_size; | |||
EX char *f_save_file; | EX ch *f_save_file; | |||
// data set by PXB/PXM_save() | // data set by PXB/PXM_save() | |||
EX char f_save_type[8]; | EX ch f_save_type[8]; | |||
EX int f_save_bpc; | EX int f_save_bpc; | |||
EX uint f_save_size; | EX uint f_save_size; | |||
EX int index_updates; | ||||
// file indexing progress counters | ||||
EX int thumb_updates; | ||||
EX int thumb_deletes; | ||||
// files and folders in /home/<user>/.fotoxx/ | // files and folders in /home/<user>/.fotoxx/ | |||
EX char index_folder[200]; | EX ch index_folder[200]; | |||
// image index folder | // image index folder | |||
EX char image_folders_file[200]; | EX ch image_folders_file[200]; | |||
// top image and thumbnail folders | // top image and thumbnail folders | |||
EX char image_index_file[200]; | EX ch image_index_file[200]; | |||
// image index file | // image index file | |||
EX char meta_index_file[200]; | EX ch meta_index_file[200]; | |||
// extra metadata index items | // extra metadata index items | |||
EX char albums_folder[200]; | EX ch albums_folder[200]; | |||
// saved image albums | // saved image albums | |||
EX char custom_kernel_folder[200]; | EX ch custom_kernel_folder[200]; | |||
// custom convolution kernels | // custom convolution kernels | |||
EX char file_maps_folder[200]; | EX ch file_maps_folder[200]; | |||
// fotoxx and user file maps | // fotoxx and user file maps | |||
EX char markup_folder[200]; | EX ch markup_folder[200]; | |||
// saved markup text | // saved markup text | |||
EX char mashup_folder[200]; | EX ch mashup_folder[200]; | |||
// mashup projects | // mashup projects | |||
EX char image_table_maps_folder[200]; | EX ch image_table_maps_folder[200]; | |||
// image table map files | // image table map files | |||
EX char palettes_folder[200]; | EX ch palettes_folder[200]; | |||
// color palett files | // color palett files | |||
EX char pattern_folder[200]; | EX ch pattern_folder[200]; | |||
// pattern files | // pattern files | |||
EX char printer_color_folder[200]; | EX ch printer_color_folder[200]; | |||
// printer calibration | // printer calibration | |||
EX char retouch_folder[200]; | EX ch retouch_folder[200]; | |||
// saved retouch dialogs | // saved retouch dialogs | |||
EX char saved_areas_folder[200]; | EX ch saved_areas_folder[200]; | |||
// saved select area files | // saved select area files | |||
EX char saved_curves_folder[200]; | EX ch saved_curves_folder[200]; | |||
// saved curve data | // saved curve data | |||
EX char scripts_folder[200]; | EX ch scripts_folder[200]; | |||
// script files | // script files | |||
EX char search_settings_folder[200]; | EX ch search_settings_folder[200]; | |||
// saved search dialogs | // saved search dialogs | |||
EX char slideshow_folder[200]; | EX ch slideshow_folder[200]; | |||
// slide show files | // slide show files | |||
EX char slideshow_trans_folder[200]; | EX ch slideshow_trans_folder[200]; | |||
// slide show transition files | // slide show transition files | |||
EX char temp_folder[200]; | EX ch temp_folder[200]; | |||
// temp. files folder | // temp. files folder | |||
EX char tags_defined_file[200]; | EX ch tags_defined_file[200]; | |||
// tags defined file | // tags defined file | |||
EX char recentfiles_file[200]; | EX ch recentfiles_file[200]; | |||
// file of recent image files | // file of recent image files | |||
EX char gallerymem_file[200]; | EX ch gallerymem_file[200]; | |||
// file for recent galleries memory | // file for recent galleries memory | |||
EX char searchresults_file[200]; | EX ch searchresults_file[200]; | |||
// file for search results | // file for search results | |||
EX char meta_picklist_file[200]; | EX ch meta_picklist_file[200]; | |||
// metadata keyname picklist | // metadata keyname picklist | |||
EX char meta_view_extras_file[200]; | EX ch meta_view_extras_file[200]; | |||
// view metadata optional keynames | // view metadata optional keynames | |||
EX char meta_report_items_file[200]; | EX ch meta_report_items_file[200]; | |||
// metadata report keynames | // metadata report keynames | |||
EX char KB_shortcuts_user[200]; | EX ch KB_shortcuts_user[200]; | |||
// KB shortcuts - user defined | // KB shortcuts - user defined | |||
EX char KB_shortcuts_default[200]; | EX ch KB_shortcuts_default[200]; | |||
// KB shortcuts - Fotoxx defaults | // KB shortcuts - Fotoxx defaults | |||
EX char blacklist_file[200]; | EX ch blacklist_file[200]; | |||
// file for blacklisted folders/files | // file for blacklisted folders/files | |||
EX char popup_text_file[200]; | EX ch popup_text_file[200]; | |||
// popup text for edit widget insertions | // popup text for edit widget insertions | |||
EX char capskeys_file[200]; | EX ch capskeys_file[200]; | |||
// metadata keys for image captions | // metadata keys for image captions | |||
// fotoxx PXM and PXB pixmaps | // fotoxx PXM and PXB pixmaps | |||
struct PXM { // PXM pixmap, 3|4 x float per pixel | struct PXM { // PXM pixmap, 3|4 x float per pixel | |||
char wmi[8]; // self-identifier | ch wmi[8]; // self-identifier | |||
int ww, hh, nc, rs; // width, height, channels, row stride | int ww, hh, nc, rs; // width, height, channels, row stride | |||
float *pixels; // ww * hh * nc * sizeof(float) | float *pixels; // ww * hh * nc * sizeof(float) | |||
}; | }; | |||
struct PXB { // PXB pixmap, 3|4 x uint8/pixel | struct PXB { // PXB pixmap, 3|4 x uint8/pixel | |||
char wmi[8]; // self-identifier | ch wmi[8]; // self-identifier | |||
int ww, hh, nc, rs; // width, height, channels, row stride | int ww, hh, nc, rs; // width, height, channels, row stride | |||
uint8 *pixels; // hh * rs bytes (in pixbuf) | uint8 *pixels; // hh * rs bytes (in pixbuf) | |||
PIXBUF *pixbuf; // parallel GDK pixbuf sharing pixels | PIXBUF *pixbuf; // parallel GDK pixbuf sharing pixels | |||
}; | }; | |||
// parameters for F/W image window painting (functions Fpaint() etc.) | // parameters for F/W image window painting (functions Fpaint() etc.) | |||
struct FWstate { | struct FWstate { | |||
PXB *fpxb; // image PXB, size = 1x | PXB *fpxb; // image PXB, size = 1x | |||
PXB *mpxb; // image PXB, size = Mscale | PXB *mpxb; // image PXB, size = Mscale | |||
skipping to change at line 537 | skipping to change at line 542 | |||
int x1, y1, x2, y2; // endpoint coordinates in image space | int x1, y1, x2, y2; // endpoint coordinates in image space | |||
int type; // 1/2/3/4 = black/white/both/dash | int type; // 1/2/3/4 = black/white/both/dash | |||
}; | }; | |||
#define maxtoplines 8 // max. top lines | #define maxtoplines 8 // max. top lines | |||
EX topline_t toplines[8], ptoplines[8]; // top lines, prior top lines | EX topline_t toplines[8], ptoplines[8]; // top lines, prior top lines | |||
EX int Ntoplines, Nptoplines; // current counts | EX int Ntoplines, Nptoplines; // current counts | |||
struct toptext_t { | struct toptext_t { | |||
int ID, px, py; | int ID, px, py; | |||
char *text; | ch *text; | |||
char *font; | ch *font; | |||
}; | }; | |||
#define maxtoptext 100 // max. text strings | #define maxtoptext 100 // max. text strings | |||
EX toptext_t toptext[100]; // text strings | EX toptext_t toptext[100]; // text strings | |||
EX int Ntoptext; // current count | EX int Ntoptext; // current count | |||
struct topcircle_t { // circle drawn over image | struct topcircle_t { // circle drawn over image | |||
int px, py; | int px, py; | |||
int radius; | int radius; | |||
}; | }; | |||
skipping to change at line 566 | skipping to change at line 571 | |||
#define sa_initseq 10 // initial sequence number (0/1/2 reserv ed) | #define sa_initseq 10 // initial sequence number (0/1/2 reserv ed) | |||
#define sa_maxseq 9999 // ultimate limit 64K | #define sa_maxseq 9999 // ultimate limit 64K | |||
#define mode_rect 1 // select rectangle by drag/click | #define mode_rect 1 // select rectangle by drag/click | |||
#define mode_ellipse 2 // select ellipse by drag | #define mode_ellipse 2 // select ellipse by drag | |||
#define mode_draw 3 // freehand draw by drag/click | #define mode_draw 3 // freehand draw by drag/click | |||
#define mode_follow 4 // follow edge indicated by clicks | #define mode_follow 4 // follow edge indicated by clicks | |||
#define mode_replace 5 // adjust edge by dragging mouse | #define mode_replace 5 // adjust edge by dragging mouse | |||
#define mode_mouse 6 // select area within mouse (radius) | #define mode_mouse 6 // select area within mouse (radius) | |||
#define mode_onecolor 7 // select one matching color within mous e | #define mode_onecolor 7 // select one matching color within mous e | |||
#define mode_allcolors 8 // select all matching colors within mou se | #define mode_allcolors 8 // select all matching colors within mou se | |||
#define mode_seldsel 9 // select one color and deselect 2nd col or | #define mode_seldsel 9 // select one color and deselect 2nd col or | |||
EX VOL int sa_stat; // 0/1/2/3/4 = none/edit/xx/fini/disab | EX VOL int sa_stat; // 0/1/2/3/4 = none/edit/xx/fini/disab | |||
EX int sa_mode; // 1-9 = curr. select area edit method | EX int sa_mode; // 1-9 = curr. select area edit method | |||
EX uint16 sa_endpx[10000], sa_endpy[10000]; // last pixel drawn per sequence no. | EX uint16 sa_endpx[10000], sa_endpy[10000]; // last pixel drawn per sequence no. | |||
EX int sa_thresh; // mouse pixel distance threshold | EX int sa_thresh; // mouse pixel distance threshold | |||
EX int sa_mouseradius; // mouse selection radius | EX int sa_mouseradius; // mouse selection radius | |||
EX int sa_searchrange; // search range (* mouse radius) | EX int sa_searchrange; // search range (* mouse radius) | |||
EX int sa_mousex, sa_mousey; // mouse position in image | EX int sa_mousex, sa_mousey; // mouse position in image | |||
EX int sa_lastx, sa_lasty; // last selected mouse position | EX int sa_lastx, sa_lasty; // last selected mouse position | |||
EX float sa_colormatch; // color range to match (0.001 to 1.0) | EX float sa_colormatch; // color range to match (0.001 to 1.0) | |||
EX int sa_edgecalc_done; // edge distance calculation done | EX int sa_edgecalc_done; // edge distance calculation done | |||
EX int sa_edgecalc_busy; // edge distance calculation busy | EX int sa_edgecalc_busy; // edge distance calculation busy | |||
EX int sa_blendwidth; // edge blend width | EX int sa_blendwidth; // edge blend width | |||
EX int sa_minx, sa_maxx; // enclosing rectangle for area | EX int sa_minx, sa_maxx; // enclosing rectangle for area | |||
EX int sa_miny, sa_maxy; | EX int sa_miny, sa_maxy; | |||
EX char *sa_stackdirec; // pixel search stack | EX ch *sa_stackdirec; // pixel search stack | |||
EX int *sa_stack; | EX int *sa_stack; | |||
EX int sa_maxstack; | EX int sa_maxstack; | |||
EX int sa_Nstack; | EX int sa_Nstack; | |||
EX int sa_currseq; // current select sequence no. | EX int sa_currseq; // current select sequence no. | |||
EX int sa_Ncurrseq; // current sequence pixel count | EX int sa_Ncurrseq; // current sequence pixel count | |||
EX uint8 *sa_pixselc; // maps pixels selected in current cycle | EX uint8 *sa_pixselc; // maps pixels selected in current cycle | |||
EX uint16 *sa_pixmap; // 0/1/2+ = outside/edge/inside edge dist | EX uint16 *sa_pixmap; // 0/1/2+ = outside/edge/inside edge dist | |||
EX uint8 *sa_pixmap2; // maps mouse-selected pixels | EX uint8 *sa_pixmap2; // maps mouse-selected pixels | |||
EX uint sa_Npixel; // total select area pixel count | EX uint sa_Npixel; // total select area pixel count | |||
EX int sa_fww, sa_fhh; // valid image dimensions for select area | EX int sa_fww, sa_fhh; // valid image dimensions for select area | |||
skipping to change at line 611 | skipping to change at line 616 | |||
#define GYS 4 // [4] y-lines spacing | #define GYS 4 // [4] y-lines spacing | |||
#define GXC 5 // [5] x-lines count | #define GXC 5 // [5] x-lines count | |||
#define GYC 6 // [6] y-lines count | #define GYC 6 // [6] y-lines count | |||
#define GXF 7 // [7] x-lines offset | #define GXF 7 // [7] x-lines offset | |||
#define GYF 8 // [8] y-lines offset | #define GYF 8 // [8] y-lines offset | |||
// Image index record. | // Image index record. | |||
// pdate, wwhh, tags, title, desc, gtags may have "null" (char) as a missing va lue. | // pdate, wwhh, tags, title, desc, gtags may have "null" (char) as a missing va lue. | |||
struct xxrec_t { | struct xxrec_t { | |||
char *file; | ch *file; | |||
// image filespec | // image filespec | |||
char fdate[16]; | ch fdate[16]; | |||
// file date, yyyymmddhhmmss | // file date, yyyymmddhhmmss | |||
char pdate[16]; | ch pdate[16]; | |||
// EXIF photo date, yyyymmddhhmmss | // EXIF photo date, yyyymmddhhmmss | |||
char rating[4]; | ch rating[4]; | |||
// IPTC rating, "0" to "5" stars | // meta rating, "0" to "5" stars | |||
int ww, hh; // image width x height, pixels | int ww, hh; // image width x height, pixels | |||
int fsize; // image file size, bytes | int fsize; // image file size, bytes | |||
char *tags; | ch *tags; | |||
// IPTC tags | // meta tags | |||
char *title; | ch *title; | |||
// IPTC title | // meta title | |||
char *desc; | ch *desc; | |||
// IPTC description | // meta description | |||
char *location; | ch *location; | |||
// city, park, monument ... | // city, park, monument ... | |||
char *country; | ch *country; | |||
// country | // country | |||
float flati, flongi; // earth coordinates | float flati, flongi; // earth coordinates | |||
char *xmeta; // extra indexed metadata | ch *xmeta; // indexed metadata | |||
}; | }; | |||
EX xxrec_t **xxrec_tab; // image index table, file sequence | EX xxrec_t **xxrec_tab; // image index table, file sequence | |||
EX int Nxxrec; // count, < maximages | EX int Nxxrec; // count, < maximages | |||
EX int Findexvalid; | EX int Findexvalid; | |||
// 0/1/2 = no / yes:old / yes:old+new | // 0/1/2 = no / old files / old+new files | |||
EX ch *xmeta_keys[xmetamaxkeys]; | ||||
// indexed metadata key names | ||||
// image edit function data | // image edit function data | |||
struct editfunc { // edit function data | struct editfunc { // edit function data | |||
cchar *menuname; | ch *menuname; | |||
// menu name in menutab[*] | // menu name in menutab[*] | |||
char edit_hist[xhistcc]; | ch edit_hist[edithistXcc]; | |||
// EXIF edit history text 23.0 | // metadata edit history text 23.0 | |||
int FprevReq; // request to use smaller image if poss. | int FprevReq; // request to use smaller image if poss. | |||
int Farea; // area: 0/1/2 = delete/ignore/usable | int Farea; // area: 0/1/2 = delete/ignore/usable | |||
int Fmods; // flag, image modifications by this func | int Fmods; // flag, image modifications by this func | |||
int Fpreview; // flag, using smaller image for edits | int Fpreview; // flag, using smaller image for edits | |||
int Frestart; // flag, OK to restart with new file | int Frestart; // flag, OK to restart with new file | |||
int Fpaintedits; // flag, OK to use with paint edits | int Fpaintedits; // flag, OK to use with paint edits | |||
int Fscript; // flag, function can be scripted | int Fscript; // flag, function can be scripted | |||
int Fsaved; // current mods are saved to disk | int Fsaved; // current mods are saved to disk | |||
zdialog *zd; // edit dialog | zdialog *zd; // edit dialog | |||
spldat *sd; // edit curve data | spldat *sd; // edit curve data | |||
void (*menufunc)(GtkWidget *, cchar *); // edit menu function in menutab[*] | void (*menufunc)(GtkWidget *, ch *); // edit menu function in menutab[*] | |||
void * (*threadfunc)(void *); // edit thread function | void * (*threadfunc)(void *); // edit thread function | |||
void (*mousefunc)(); // edit mouse function | void (*mousefunc)(); // edit mouse function | |||
}; | }; | |||
EX editfunc *CEF; // current active edit function | EX editfunc *CEF; // current active edit function | |||
EX int Fpaintedits; // paint_edits() is active | EX int Fpaintedits; // paint_edits() is active | |||
EX int editpixels_pxlo; // get_edit_pixels() image area: | EX int editpixels_pxlo; // get_edit_pixels() image area: | |||
EX int editpixels_pxhi; // mouse circle box enclosure | EX int editpixels_pxhi; // mouse circle box enclosure | |||
EX int editpixels_pylo; // select area box enclosure | EX int editpixels_pylo; // select area box enclosure | |||
EX int editpixels_pyhi; // full image | EX int editpixels_pyhi; // full image | |||
// edit undo/redo stack data | // edit undo/redo stack data | |||
#define maxedits 100 // undo/redo stack size | #define maxedits 100 // undo/redo stack size | |||
EX char URS_filename[100]; // stack image filename template | EX ch URS_filename[200]; // stack image filename template | |||
EX int URS_pos; // stack position, 0-99 | EX int URS_pos; // stack position, 0-99 | |||
EX int URS_max; // stack max. position, 0-99 | EX int URS_max; // stack max. position, 0-99 | |||
EX char URS_menu[100][32]; | EX ch URS_menu[100][32]; | |||
// edit function menu name | // edit function menu name | |||
EX char URS_parms[100][xhistcc]; | EX ch URS_parms[100][edithistXcc]; | |||
// edit parameters or null 23.0 | // edit parameters or null 23.0 | |||
EX int URS_saved[100]; // flag, edit saved to file or not | EX int URS_saved[100]; // flag, edit saved to file or not | |||
struct textattr_t { // attributes for gentext() function | struct textattr_t { // attributes for gentext() function | |||
char text[1000]; | ch text[1000]; | |||
// text to generate image from | // text to generate image from | |||
char font[80]; | ch font[80]; | |||
// font name | // font name | |||
int size; // font size | int size; // font size | |||
int tww, thh; // generated image size, unrotated | int tww, thh; // generated image size, unrotated | |||
float angle; // text angle, degrees | float angle; // text angle, degrees | |||
float sinT, cosT; // trig funcs for text angle | float sinT, cosT; // trig funcs for text angle | |||
char color[4][20]; // text, backing, outline, shadow "R|G|B" | ch color[4][20]; // text, backing, outline, shadow "R|G|B" | |||
int transp[4]; // corresponding transparencies 0-255 | int transp[4]; // corresponding transparencies 0-255 | |||
int towidth; // outline width, pixels | int towidth; // outline width, pixels | |||
int shwidth; // shadow width | int shwidth; // shadow width | |||
int shangle; // shadow angle -180...+180 | int shangle; // shadow angle -180...+180 | |||
int emboss[2]; // emboss radius, depth | int emboss[2]; // emboss radius, depth | |||
PXB *pxb_text; // image with text/outline/shadow | PXB *pxb_text; // image with text/outline/shadow | |||
}; | }; | |||
struct lineattr_t { // attributes for genline() function | struct lineattr_t { // attributes for genline() function | |||
int length, width; // line length and width, pixels | int length, width; // line length and width, pixels | |||
int larrow, rarrow; // left/right arrow head size (0 = no arrow) | int larrow, rarrow; // left/right arrow head size (0 = no arrow) | |||
int lww, lhh; // generated image size, unrotated | int lww, lhh; // generated image size, unrotated | |||
float angle; // line angle, degrees | float angle; // line angle, degrees | |||
float sinT, cosT; // trig funcs for line angle | float sinT, cosT; // trig funcs for line angle | |||
char color[4][20]; // line, background, outline, shadow "R|G|B" | ch color[4][20]; // line, background, outline, shadow "R|G|B" | |||
int transp[4]; // corresponding transparencies 0-255 | int transp[4]; // corresponding transparencies 0-255 | |||
int towidth; // outline width, pixels | int towidth; // outline width, pixels | |||
int shwidth; // shadow width | int shwidth; // shadow width | |||
int shangle; // shadow angle -180...+180 | int shangle; // shadow angle -180...+180 | |||
PXB *pxb_line; // image with line/outline/shadow | PXB *pxb_line; // image with line/outline/shadow | |||
}; | }; | |||
// dialogs with global visibility | // dialogs with global visibility | |||
EX zdialog *zd_paintedits; // m_paint_edits(), control dialog | EX zdialog *zd_paintedits; // m_paint_edits(), control dialog | |||
skipping to change at line 726 | skipping to change at line 732 | |||
EX zdialog *zd_magnify; // magnify image zdialog | EX zdialog *zd_magnify; // magnify image zdialog | |||
EX zdialog *zd_album_update; // album_replacefile zdialog | EX zdialog *zd_album_update; // album_replacefile zdialog | |||
EX zdialog *zd_gallery_select1; // gallery_select1 zdialog | EX zdialog *zd_gallery_select1; // gallery_select1 zdialog | |||
EX zdialog *zd_gallery_select; // gallery_select zdialog | EX zdialog *zd_gallery_select; // gallery_select zdialog | |||
EX zdialog *zd_edit_bookmarks; // bookmarks edit zdialog | EX zdialog *zd_edit_bookmarks; // bookmarks edit zdialog | |||
EX zdialog *zd_ss_imageprefs; // slide show image prefs zdialog | EX zdialog *zd_ss_imageprefs; // slide show image prefs zdialog | |||
// method for created threads to send events to an active zdialog | // method for created threads to send events to an active zdialog | |||
EX zdialog *zd_thread; // active zdialog | EX zdialog *zd_thread; // active zdialog | |||
EX cchar *zd_thread_event; // event to send | EX ch *zd_thread_event; // event to send | |||
// edit function parameters | // edit function parameters | |||
EX int cropx1, cropy1, cropx2, cropy2; // crop rectangle NW and SE corners | EX int cropx1, cropy1, cropx2, cropy2; // crop rectangle NW and SE corners | |||
EX char *cropsizes[10]; | EX ch *cropsizes[10]; | |||
// previous crop sizes "NNNNxNNNN" | // previous crop sizes "NNNNxNNNN" | |||
EX char *cropbuttons[5]; | EX ch *cropbuttons[5]; | |||
// crop dialog button labels | // crop dialog button labels | |||
EX char *cropratios[5]; | EX ch *cropratios[5]; | |||
// corresponding aspect ratios | // corresponding aspect ratios | |||
EX int editresize[2]; // edit resize width, height | EX int editresize[2]; // edit resize width, height | |||
EX float lens_mm; // pano lens mm setting | EX float lens_mm; // pano lens mm setting | |||
EX int Fupright; // flag, image was uprighted | EX int Fupright; // flag, image was uprighted | |||
EX int Flevel; // flag, image was levelled | EX int Flevel; // flag, image was levelled | |||
// initialization and GTK functions (fotoxx main) | // initialization and GTK functions (fotoxx main) | |||
int check_outboards(int fshow); // check required/optional program installs | int check_outboards(int fshow); // check required/optional program installs | |||
int main(int argc, char * argv[]); // main program | int main(int argc, ch * argv[]); // main program | |||
void first_startup(); // initial user indexing decision | void first_startup(); // initial user indexing decision | |||
int delete_event(); // window delete event function | int delete_event(); // window delete event function | |||
int destroy_event(); // window destroy event function | int destroy_event(); // window destroy event function | |||
int state_event(GtkWidget *, GdkEvent *event); // window state event function | int state_event(GtkWidget *, GdkEvent *event); // window state event function | |||
void drop_event(int mousex, int mousey, char *file); | void drop_event(int mousex, int mousey, ch *file); | |||
// file drag-drop event function | // file drag-drop event function | |||
int Fblock(cchar * fname, cchar *action); | int Fblock(cch * fname, ch *action); | |||
// block/unblock mutex functions | // block/unblock mutex functions | |||
int gtimefunc(void *arg); // periodic function | int gtimefunc(void *arg); // periodic function | |||
void update_Fpanel(); // update F window information panel | void update_Fpanel(); // update F window information panel | |||
int paintlock(int lock); // block/unblock window updates | int paintlock(int lock); // block/unblock window updates | |||
int Fpaint(GtkWidget *, cairo_t *); // F and W drawing area paint function | int Fpaint(GtkWidget *, cairo_t *); // F and W drawing area paint function | |||
void Fpaintnow(); // window repaint synchronously | void Fpaintnow(); // window repaint synchronously | |||
void Fpaint2(); // window repaint (thread callable) | void Fpaint2(); // window repaint (thread callable) | |||
void Fpaint3(int px, int py, int ww, int hh, cairo_t *cr); // update Mpxb area from updated E3 area | void Fpaint3(int px, int py, int ww, int hh, cairo_t *cr); // update Mpxb area from updated E3 area | |||
void Fpaint0(int px, int py, int ww, int hh, cairo_t *cr); // update Mpxb area from updated E0 area | void Fpaint0(int px, int py, int ww, int hh, cairo_t *cr); // update Mpxb area from updated E0 area | |||
void Fpaint4(int px, int py, int ww, int hh, cairo_t *cr); // update Dpxb area from updated Mpxb | void Fpaint4(int px, int py, int ww, int hh, cairo_t *cr); // update Dpxb area from updated Mpxb | |||
void Fpaint3_thread(int px, int py, int ww, int hh); // Fpaint3 for threads (define update area) | void Fpaint3_thread(int px, int py, int ww, int hh); // Fpaint3 for threads (define update area) | |||
void Fpaint3_main(); // update Fpaint3 area in main thread | void Fpaint3_main(); // update Fpaint3 area in main thread | |||
void Fpaintmouse(int mxposn, int mypons, int radius); // update Mpxb area for mouse painted E3 area | void Fpaintmouse(int mxposn, int mypons, int radius); // update Mpxb area for mouse painted E3 area | |||
void mouse_event(GtkWidget *, GdkEventButton *, void *); // mouse event function | void mouse_event(GtkWidget *, GdkEventButton *, void *); // mouse event function | |||
void m_zoom(GtkWidget *, cchar *); // zoom image +/- | void m_zoom(GtkWidget *, ch *); // zoom image +/- | |||
void KBevent(GdkEventKey *event); // pass dialog KB events to main app | void KBevent(GdkEventKey *event); // pass dialog KB events to main app | |||
int KBpress(GtkWidget *, GdkEventKey *, void *); // KB key press event function | int KBpress(GtkWidget *, GdkEventKey *, void *); // KB key press event function | |||
int KBrelease(GtkWidget *, GdkEventKey *, void *); // KB key release event function | int KBrelease(GtkWidget *, GdkEventKey *, void *); // KB key release event function | |||
void win_fullscreen(int hidemenu); // full screen without menu/panel | void win_fullscreen(int hidemenu); // full screen without menu/panel | |||
void win_unfullscreen(); // restore to prior size with menu etc. | void win_unfullscreen(); // restore to prior size with menu etc. | |||
void set_mwin_title(); // main window title = curr_file path | void set_mwin_title(); // main window title = curr_file path | |||
// cairo drawing functions (fotoxx main) | // cairo drawing functions (fotoxx main) | |||
void draw_pixel(int px, int py, cairo_t *cr, int fat = 0); // draw pixel | void draw_pixel(int px, int py, cairo_t *cr, int fat = 0); // draw pixel | |||
void erase_pixel(int px, int py, cairo_t *cr); // erase pixel | void erase_pixel(int px, int py, cairo_t *cr); // erase pixel | |||
void draw_line(int x1, int y1, int x2, int y2, int type, cairo_t *cr); // draw line or dotted line (type 1/2) | void draw_line(int x1, int y1, int x2, int y2, int type, cairo_t *cr); // draw line or dotted line (type 1/2) | |||
void erase_line(int x1, int y1, int x2, int y2, cairo_t *cr); // erase line | void erase_line(int x1, int y1, int x2, int y2, cairo_t *cr); // erase line | |||
void draw_toplines(int arg, cairo_t *cr); // draw all pre-set overlay lines | void draw_toplines(int arg, cairo_t *cr); // draw all pre-set overlay lines | |||
void draw_gridlines(cairo_t *cr); // draw grid lines on image | void draw_gridlines(cairo_t *cr); // draw grid lines on image | |||
void add_toptext(int ID, int px, int py, cchar *text, cchar *font); // add text string with ID on window | void add_toptext(int ID, int px, int py, ch *text, ch *font); // add text string with ID on window | |||
void draw_toptext(cairo_t *cr); // draw text strings when window repainted | void draw_toptext(cairo_t *cr); // draw text strings when window repainted | |||
void erase_toptext(int ID); // remove all text strings with ID | void erase_toptext(int ID); // remove all text strings with ID | |||
void draw_text(int px, int py, cchar *text, cchar *font, cairo_t *cr); // draw text on window | void draw_text(int px, int py, ch *text, ch *font, cairo_t *cr); // draw text on window | |||
void add_topcircle(int px, int py, int radius); // draw circle on window | void add_topcircle(int px, int py, int radius); // draw circle on window | |||
void draw_topcircles(cairo_t *cr); // draw circles when window repainted | void draw_topcircles(cairo_t *cr); // draw circles when window repainted | |||
void erase_topcircles(); // remove all circles | void erase_topcircles(); // remove all circles | |||
void draw_mousecircle(int cx, int cy, int rad, int Ferase, cairo_t *cr); // draw circle around mouse pointer | void draw_mousecircle(int cx, int cy, int rad, int Ferase, cairo_t *cr); // draw circle around mouse pointer | |||
void draw_mousecircle2(int cx, int cy, int rad, int Ferase, cairo_t *cr); // 2nd circle for m_copypixels1() | void draw_mousecircle2(int cx, int cy, int rad, int Ferase, cairo_t *cr); // 2nd circle for m_copypixels1() | |||
void draw_mousearc(int cx, int cy, int ww, int hh, int Ferase, cairo_t *cr); // draw ellipse around pointer | void draw_mousearc(int cx, int cy, int ww, int hh, int Ferase, cairo_t *cr); // draw ellipse around pointer | |||
// edit support functions (fotoxx main) | // edit support functions (fotoxx main) | |||
int edit_wwhhOK(int ww, int hh); // check image size within limits | int edit_wwhhOK(int ww, int hh); // check image size within limits | |||
int edit_setup(editfunc &EF); // start new edit transaction | int edit_setup(editfunc &EF); // start new edit transaction | |||
void edit_cancel(int keep); // cancel edit (keep zdialog etc.) | void edit_cancel(int keep); // cancel edit (keep zdialog etc.) | |||
void edit_apply(); // apply edit, dialog > new edit | void edit_apply(); // apply edit, dialog > new edit | |||
void edit_done(int keep); // commit edit, add undo stack | void edit_done(int keep); // commit edit, add undo stack | |||
void edit_undo(); // undo edit, back to org. image | void edit_undo(); // undo edit, back to org. image | |||
void edit_redo(); // redo the edit after undo | void edit_redo(); // redo the edit after undo | |||
void edit_reset(); // reset to initial status | void edit_reset(); // reset to initial status | |||
void edit_fullsize(); // convert to full-size pixmaps | void edit_fullsize(); // convert to full-size pixmaps | |||
void edit_addhist(cchar *format, ...); // edit params > editfunc.edit_hist | void edit_addhist(ch *format, ...); // edit params > editfunc.edit_hist | |||
void m_undo_redo(GtkWidget *, cchar *); | void m_undo_redo(GtkWidget *, ch *); | |||
// undo / redo if left / right mouse click | // undo / redo if left / right mouse click | |||
void m_undo(GtkWidget *, cchar *); | void m_undo(GtkWidget *, ch *); | |||
// undo one edit | // undo one edit | |||
void m_redo(GtkWidget *, cchar *); | void m_redo(GtkWidget *, ch *); | |||
// redo one edit | // redo one edit | |||
void undo_all(); // undo all edits of current image | void undo_all(); // undo all edits of current image | |||
void redo_all(); // redo all edits of current image | void redo_all(); // redo all edits of current image | |||
void save_undo(); // undo/redo save function | void save_undo(); // undo/redo save function | |||
PXM * load_undo(int posn); // load image from undo/redo stack | PXM * load_undo(int posn); // load image from undo/redo stack | |||
typedef void mcbFunc(); // callback function type | typedef void mcbFunc(); // callback function type | |||
EX mcbFunc *mouseCBfunc; // current edit mouse function | EX mcbFunc *mouseCBfunc; // current edit mouse function | |||
void takeMouse(mcbFunc func, GdkCursor *); // capture mouse for edit dialog | void takeMouse(mcbFunc func, GdkCursor *); // capture mouse for edit dialog | |||
void freeMouse(); // free mouse for main window | void freeMouse(); // free mouse for main window | |||
// thread support functions (fotoxx main) | // thread support functions (fotoxx main) | |||
typedef void * threadfunc(void *); // thread function type | typedef void * threadfunc(void *); // thread function type | |||
void thread_start(threadfunc func, void *arg); // start thread in idle state | void thread_start(threadfunc func, void *arg); // start thread in idle state | |||
void thread_signal(); // signal thread that work is pending | void thread_signal(); // signal thread that work is pending | |||
void thread_stop(); // stop thread and wait for exit | void thread_stop(); // stop thread and wait for exit | |||
void thread_wait(); // wait for thread to become idle | void thread_wait(); // wait for thread to become idle | |||
int thread_killed(); // thread: query user kill action | ||||
void do_wthreads(threadfunc func, int Nt); // thread: start worker threads and wait | void do_wthreads(threadfunc func, int Nt); // thread: start worker threads and wait | |||
// other support functions (fotoxx main) | // other support functions (fotoxx main) | |||
void progress_reset(double goal); // reset progress counters, set goal value | void progress_reset(double goal); // reset progress counters, set goal value | |||
void progress_add(int index, double value); // increment progress per thread | void progress_add(int index, double value); // increment progress per thread | |||
int progress_percent(); // get progress as percent 0-100 | int progress_percent(); // get progress as percent 0-100 | |||
void save_params(); // save parameters for next session | void save_params(); // save parameters for next session | |||
void load_params(); // load parameters from prior session | void load_params(); // load parameters from prior session | |||
void free_resources(int fkeepundo = 0); // free all allocated resources | void free_resources(int fkeepundo = 0); // free all allocated resources | |||
// window and menu builder (f.widgets.cc) | // window and menu builder (f.widgets.cc) | |||
void build_widgets(); // build widgets for F/G/W/M view modes | void build_widgets(); // build widgets for F/G/W/M view modes | |||
void popup_menufunc(GtkWidget *, cchar *menu); // image/thumb right-click menu func | void popup_menufunc(GtkWidget *, ch *menu); // image/thumb right-click menu func | |||
void image_Rclick_popup(); // popup menu for image right-click | void image_Rclick_popup(); // popup menu for image right-click | |||
void gallery_Lclick_func(int Nth); // function for thumbnail left-click | void gallery_Lclick_func(int Nth); // function for thumbnail left-click | |||
void gallery_Rclick_popup(int Nth); // popup menu for thumbnail right-click | void gallery_Rclick_popup(int Nth); // popup menu for thumbnail right-click | |||
void m_viewmode(GtkWidget *, cchar *fgw); | void m_viewmode(GtkWidget *, ch *fgw); | |||
// set current F/G/W/M view mode | // set current F/G/W/M view mode | |||
void m_custom(GtkWidget *, cchar *); | void m_custom(GtkWidget *, ch *); | |||
// build custom user menu | // build custom user menu | |||
// pixmap/pixbuf memory image and file I/O functions (f.pixmap.cc) | // pixmap/pixbuf memory image and file I/O functions (f.pixmap.cc) | |||
uint imagesize(int ww, int hh, int nc, int pz); // calculate and check image < 4 GB | uint imagesize(int ww, int hh, int nc, int pz); // calculate and check image < 4 GB | |||
PXM * PXM_make(int ww, int hh, int nc); // create a PXM pixmap | PXM * PXM_make(int ww, int hh, int nc); // create a PXM pixmap | |||
void PXM_free(PXM *&pxm); // free PXM pixmap | void PXM_free(PXM *&pxm); // free PXM pixmap | |||
void PXM_audit(PXM *pxm); // audit contents of a PXM pixmap | void PXM_audit(PXM *pxm); // audit contents of a PXM pixmap | |||
void PXM_clear(PXM *pxm, int BW); // clear PXM pixmap to value BW (0/255) | void PXM_clear(PXM *pxm, int BW); // clear PXM pixmap to value BW (0/255) | |||
void PXM_addalpha(PXM *pxm); // add alpha channel to PXM pixmap | void PXM_addalpha(PXM *pxm); // add alpha channel to PXM pixmap | |||
skipping to change at line 886 | skipping to change at line 891 | |||
PXB * PXB_resize_fast(PXB *pxb1, int size); // resize PXB pixmap to max. ww/hh | PXB * PXB_resize_fast(PXB *pxb1, int size); // resize PXB pixmap to max. ww/hh | |||
PXB * PXB_rotate(PXB *pxb, float angle); // rotate PXB pixmap | PXB * PXB_rotate(PXB *pxb, float angle); // rotate PXB pixmap | |||
int vpixel(PXB *pxb, float px, float py, uint8 *vpix); // get PXB virtual pixel at (px,py) | int vpixel(PXB *pxb, float px, float py, uint8 *vpix); // get PXB virtual pixel at (px,py) | |||
int vpixel(PXM *pxm, float px, float py, float *vpix); // get PXM virtual pixel at (px,py) | int vpixel(PXM *pxm, float px, float py, float *vpix); // get PXM virtual pixel at (px,py) | |||
PXB * PXM_PXB_copy(PXM *pxm); // PXM to pixbuf, same scale | PXB * PXM_PXB_copy(PXM *pxm); // PXM to pixbuf, same scale | |||
void PXM_PXB_update(PXM *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXM, same scale | void PXM_PXB_update(PXM *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXM, same scale | |||
void PXB_PXB_update(PXB *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXB, any scale | void PXB_PXB_update(PXB *, PXB *, int px3, int py3, int ww3, int hh3); // update PXB area from PXB, any scale | |||
PXB * PXB_load(cchar *filespec, int fack); | PXB * PXB_load(ch *filespec, int fack); | |||
// load file to PXB pixmap, 8 bpc | // load file to PXB pixmap, 8 bpc | |||
PXM * PXM_load(cchar *filespec, int fack); | PXM * PXM_load(ch *filespec, int fack); | |||
// load file to PXM pixmap, 8/16 bpc | // load file to PXM pixmap, 8/16 bpc | |||
int PXB_save(PXB *pxb, cchar *filespec, int bpc, int quality, int fack); | int PXB_save(PXB *pxb, ch *filespec, int bpc, int quality, int fack); | |||
// save PXB pixmap to file | // save PXB pixmap to file | |||
int PXM_save(PXM *pxm, cchar *filespec, int bpc, int quality, int fack); | int PXM_save(PXM *pxm, ch *filespec, int bpc, int quality, int fack); | |||
// save PXM pixmap to file | // save PXM pixmap to file | |||
PXB * JPG_PXB_load(cchar *file, int size = 0); | PXB * JPG_PXB_load(ch *file, int size = 0); | |||
// JPG file to PXB, 8 bpc | // JPG file to PXB, 8 bpc | |||
PXM * JPG_PXM_load(cchar *file); | PXM * JPG_PXM_load(ch *file); | |||
// JPG file to PXM, 8 bpc | // JPG file to PXM, 8 bpc | |||
int PXB_JPG_save(PXB *pxb, cchar *file, int quality); | int PXB_JPG_save(PXB *pxb, ch *file, int quality); | |||
// PXB to JPG file, 8 bpc | // PXB to JPG file, 8 bpc | |||
int PXM_JPG_save(PXM *pxm, cchar *file, int quality); | int PXM_JPG_save(PXM *pxm, ch *file, int quality); | |||
// PXM to JPG file, 8 bpc | // PXM to JPG file, 8 bpc | |||
PXB * HEIC_PXB_load(cchar *file, int size = 0); | PXB * HEIC_PXB_load(ch *file, int size = 0); | |||
// HEIC file to PXB, 8 bpc | // HEIC file to PXB, 8 bpc | |||
PXM * HEIC_PXM_load(cchar *file); | PXM * HEIC_PXM_load(ch *file); | |||
// HEIC file to PXM, 8 bpc | // HEIC file to PXM, 8 bpc | |||
int PXB_HEIC_save(PXB *pxb, cchar *file); | int PXB_HEIC_save(PXB *pxb, ch *file); | |||
// PXB to HEIC file, 8 bpc | // PXB to HEIC file, 8 bpc | |||
int PXM_HEIC_save(PXM *pxm, cchar *file); | int PXM_HEIC_save(PXM *pxm, ch *file); | |||
// PXM to HEIC file, 8 bpc | // PXM to HEIC file, 8 bpc | |||
PXB * JP2_PXB_load(cchar *file); | PXB * JP2_PXB_load(ch *file); | |||
// JP2 file to PXB, 8 bpc | // JP2 file to PXB, 8 bpc | |||
PXM * JP2_PXM_load(cchar *file); | PXM * JP2_PXM_load(ch *file); | |||
// JP2 file to PXM, 8 bpc | // JP2 file to PXM, 8 bpc | |||
int PXB_JP2_save(PXB *pxb, cchar *file); | int PXB_JP2_save(PXB *pxb, ch *file); | |||
// PXB to JP2 file, 8 bpc | // PXB to JP2 file, 8 bpc | |||
int PXM_JP2_save(PXM *pxm, cchar *file); | int PXM_JP2_save(PXM *pxm, ch *file); | |||
// PXM to JP2 file, 8 bpc | // PXM to JP2 file, 8 bpc | |||
PXB * WEBP_PXB_load(cchar *file); | PXB * WEBP_PXB_load(ch *file); | |||
// WEBP file to PXB, 8 bpc | // WEBP file to PXB, 8 bpc | |||
PXM * WEBP_PXM_load(cchar *file); | PXM * WEBP_PXM_load(ch *file); | |||
// WEBP file to PXM, 8 bpc | // WEBP file to PXM, 8 bpc | |||
int PXB_WEBP_save(PXB *pxb, cchar *file); | int PXB_WEBP_save(PXB *pxb, ch *file); | |||
// PXB to WEBP file, 8 bpc | // PXB to WEBP file, 8 bpc | |||
int PXM_WEBP_save(PXM *pxm, cchar *file); | int PXM_WEBP_save(PXM *pxm, ch *file); | |||
// PXM to WEBP file, 8 bpc | // PXM to WEBP file, 8 bpc | |||
PXB * PDF_PXB_load(cchar *file); | PXB * PDF_PXB_load(ch *file); | |||
// PDF/PS/EPS file to PXB, 8 bpc | // PDF/PS/EPS file to PXB, 8 bpc | |||
PXM * PDF_PXM_load(cchar *file); | PXM * PDF_PXM_load(ch *file); | |||
// PDF/PS/EPS file to PXM, 8 bpc | // PDF/PS/EPS file to PXM, 8 bpc | |||
int PXB_PDF_save(PXB *pxb, cchar *file); | int PXB_PDF_save(PXB *pxb, ch *file); | |||
// PXB to PDF/PS/EPS file, 8 bpc | // PXB to PDF/PS/EPS file, 8 bpc | |||
int PXM_PDF_save(PXM *pxm, cchar *file); | int PXM_PDF_save(PXM *pxm, ch *file); | |||
// PXM to PDF/PS/EPS file, 8 bpc | // PXM to PDF/PS/EPS file, 8 bpc | |||
PXB * MPO_PXB_load(cchar *file, int size = 0); | PXB * MPO_PXB_load(ch *file, int size = 0); | |||
// MPO file to PXB, 8 bpc | // MPO file to PXB, 8 bpc | |||
PXM * MPO_PXM_load(cchar *file); | PXM * MPO_PXM_load(ch *file); | |||
// MPO file to PXM, 8 bpc | // MPO file to PXM, 8 bpc | |||
int PXB_MPO_save(PXB *pxb, cchar *file); | int PXB_MPO_save(PXB *pxb, ch *file); | |||
// PXB to MPO file, 8 bpc | // PXB to MPO file, 8 bpc | |||
int PXM_MPO_save(PXM *pxm, cchar *file); | int PXM_MPO_save(PXM *pxm, ch *file); | |||
// PXM to MPO file, 8 bpc | // PXM to MPO file, 8 bpc | |||
PXB * TIFF_PXB_load(cchar *filespec); | PXB * TIFF_PXB_load(ch *filespec); | |||
// TIFF file to PXB, 8 bpc | // TIFF file to PXB, 8 bpc | |||
PXM * TIFF_PXM_load(cchar *filespec); | PXM * TIFF_PXM_load(ch *filespec); | |||
// TIFF file to PXM, 8/16 bpc | // TIFF file to PXM, 8/16 bpc | |||
int PXB_TIFF_save(PXB *pxb, cchar *filespec, int bpc); | int PXB_TIFF_save(PXB *pxb, ch *filespec, int bpc); | |||
// PXB to TIFF file, 8/16 bpc | // PXB to TIFF file, 8/16 bpc | |||
int PXM_TIFF_save(PXM *pxm, cchar *filespec, int bpc); | int PXM_TIFF_save(PXM *pxm, ch *filespec, int bpc); | |||
// PXM to TIFF file, 8/16 bpc | // PXM to TIFF file, 8/16 bpc | |||
PXB * PNG_PXB_load(cchar *filespec); | PXB * PNG_PXB_load(ch *filespec); | |||
// PNG file to PXB, 8 bpc, keep alpha | // PNG file to PXB, 8 bpc, keep alpha | |||
PXM * PNG_PXM_load(cchar *filespec); | PXM * PNG_PXM_load(ch *filespec); | |||
// PNG file to PXM, 8/16 bpc | // PNG file to PXM, 8/16 bpc | |||
int PXB_PNG_save(PXB *pxb, cchar *filespec, int bpc); | int PXB_PNG_save(PXB *pxb, ch *filespec, int bpc); | |||
// PXB to PNG file, 8/16 bpc | // PXB to PNG file, 8/16 bpc | |||
int PXM_PNG_save(PXM *pxm, cchar *filespec, int bpc); | int PXM_PNG_save(PXM *pxm, ch *filespec, int bpc); | |||
// PXM to PNG file, 8/16 bpc | // PXM to PNG file, 8/16 bpc | |||
PXB * ANY_PXB_load(cchar *filespec); | PXB * ANY_PXB_load(ch *filespec); | |||
// ANY file to PXB, 8 bpc | // ANY file to PXB, 8 bpc | |||
PXM * ANY_PXM_load(cchar *filespec); | PXM * ANY_PXM_load(ch *filespec); | |||
// ANY file to PXM, 8 bpc | // ANY file to PXM, 8 bpc | |||
PXB * RAW_PXB_load(cchar *rawfile, int autobright, int matchthumb); | PXB * RAW_PXB_load(ch *rawfile, int autobright, int matchthumb); | |||
// RAW file to PXB, 8 bpc | // RAW file to PXB, 8 bpc | |||
PXM * RAW_PXM_load(cchar *rawfile, int autobright, int matchthumb); | PXM * RAW_PXM_load(ch *rawfile, int autobright, int matchthumb); | |||
// RAW file to PXM, 16 bpc | // RAW file to PXM, 16 bpc | |||
PXB * RAW_PXB_load_dcraw(cchar *rawfile, int autobright); | PXB * RAW_PXB_load_dcraw(ch *rawfile, int autobright); | |||
// RAW file to PXB, 8 bpc | // RAW file to PXB, 8 bpc | |||
PXB * RAW_PXB_load_dcraw_half(cchar *rawfile); | PXB * RAW_PXB_load_dcraw_half(ch *rawfile); | |||
// RAW file to PXB, 8 bpc, 1/2 size | // RAW file to PXB, 8 bpc, 1/2 size | |||
PXM * RAW_PXM_load_dcraw(cchar *rawfile, int autobright); | PXM * RAW_PXM_load_dcraw(ch *rawfile, int autobright); | |||
// RAW file to PXB, 16 bpc | // RAW file to PXB, 16 bpc | |||
PXB * RAW_PXB_load_RT(cchar *rawfile, int autobright); | PXB * RAW_PXB_load_RT(ch *rawfile, int autobright); | |||
// RAW file to PXB, 8 bpc | // RAW file to PXB, 8 bpc | |||
PXM * RAW_PXM_load_RT(cchar *rawfile, int autobright); | PXM * RAW_PXM_load_RT(ch *rawfile, int autobright); | |||
// RAW file to PXB, 16 bpc | // RAW file to PXB, 16 bpc | |||
PXB * RAW_PXB_load_DT(cchar *rawfile, int autobright); | PXB * RAW_PXB_load_DT(ch *rawfile, int autobright); | |||
// RAW file to PXB, 8 bpc | // RAW file to PXB, 8 bpc | |||
PXM * RAW_PXM_load_DT(cchar *rawfile, int autobright); | PXM * RAW_PXM_load_DT(ch *rawfile, int autobright); | |||
// RAW file to PXB, 16 bpc | // RAW file to PXB, 16 bpc | |||
PXB * RAW_PXB_load_custom(cchar *rawfile, int autobright); | PXB * RAW_PXB_load_custom(ch *rawfile, int autobright); | |||
// RAW file to PXB, 8 bpc | // RAW file to PXB, 8 bpc | |||
PXM * RAW_PXM_load_custom(cchar *rawfile, int autobright); | PXM * RAW_PXM_load_custom(ch *rawfile, int autobright); | |||
// RAW file to PXB, 16 bpc | // RAW file to PXB, 16 bpc | |||
PXB * RAW_thumb_pxb(cchar *rawfile); // get PXB for thumbnail creation | PXB * RAW_thumb_pxb(ch *rawfile); // get PXB for thumbnail creation | |||
void pixelvert(uint8 *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); // convert pixel buffer format | void pixelvert(uint8 *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); // convert pixel buffer format | |||
void pixelvert(uint8 *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); // and/or channel count | void pixelvert(uint8 *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); // and/or channel count | |||
void pixelvert(uint8 *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(uint8 *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(uint16 *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(uint16 *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(uint16 *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(uint16 *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(uint16 *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(uint16 *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(float *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(float *buff1, uint8 *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(float *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(float *buff1, uint16 *buff2, int ww, int hh, int nc1, int nc2); | |||
void pixelvert(float *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | void pixelvert(float *buff1, float *buff2, int ww, int hh, int nc1, int nc2); | |||
// file menu functions (f.file.cc) | // file menu functions (f.file.cc) | |||
void m_new_session(GtkWidget *, cchar *); | void m_new_session(GtkWidget *, ch *); | |||
// start parallel fotoxx session | // start parallel fotoxx session | |||
void new_session(cchar *args); | void new_session(ch *args); | |||
// callable function | // callable function | |||
void m_open_file(GtkWidget *, cchar *); | void m_open_file(GtkWidget *, ch *); | |||
// file open dialog | // file open dialog | |||
void m_open_drag(int x, int y, char *file); | void m_open_drag(int x, int y, ch *file); | |||
// open drag-drop file | // open drag-drop file | |||
void m_cycle2files(GtkWidget *, cchar *); | void m_cycle2files(GtkWidget *, ch *); | |||
// open/cycle 2 previous files | // open/cycle 2 previous files | |||
void m_cycle3files(GtkWidget *, cchar *); | void m_cycle3files(GtkWidget *, ch *); | |||
// open/cycle 3 previous files | // open/cycle 3 previous files | |||
void m_view360(GtkWidget *, cchar *); | void m_view360(GtkWidget *, ch *); | |||
// view a 360 degree panorama | // view a 360 degree panorama | |||
int f_open(cchar *file, int n = 0, int kp = 0, int ak = 1, int z = 0); | int f_open(ch *file, int n = 0, int kp = 0, int ak = 1, int z = 0); | |||
// open new current image file | // open new current image file | |||
int f_open_saved(); // open saved file, retain undo/redo stack | int f_open_saved(); // open saved file, retain undo/redo stack | |||
int f_remove(cchar *file, cchar *opt); // delete/trash file/index/thumb/gallery | int f_remove(ch *file, ch *opt); // delete/trash file/index/thumb/gallery | |||
void f_preload(int next); // start preload of next file | void f_preload(int next); // start preload of next file | |||
void m_prev(GtkWidget *, cchar *); | void m_prev(GtkWidget *, ch *); | |||
// open previous file in gallery | // open previous file in gallery | |||
void m_next(GtkWidget *, cchar *); | void m_next(GtkWidget *, ch *); | |||
// open next file in gallery | // open next file in gallery | |||
void m_prev_next(GtkWidget *, cchar *); | void m_prev_next(GtkWidget *, ch *); | |||
// left/right mouse >> prev/next image | // left/right mouse >> prev/next image | |||
void m_zoom_menu(GtkWidget *, cchar *); | void m_zoom_menu(GtkWidget *, ch *); | |||
// left/right mouse >> image/thumb zoom | // left/right mouse >> image/thumb zoom | |||
void m_rename(GtkWidget *, cchar *); | void m_rename(GtkWidget *, ch *); | |||
// rename an image file (same location) | // rename an image file (same location) | |||
void m_permissions(GtkWidget *, cchar *); | void m_permissions(GtkWidget *, ch *); | |||
// view and change file permissions | // view and change file permissions | |||
void m_remove_alpha(GtkWidget *, cchar *); | void m_remove_alpha(GtkWidget *, ch *); | |||
// remove alpha channel from image file | // remove alpha channel from image file | |||
void m_blank_image(GtkWidget *, cchar *); | void m_blank_image(GtkWidget *, ch *); | |||
// create new blank image file | // create new blank image file | |||
int create_blank_file(cchar *file, int ww, int hh, int RGB[3]); | int create_blank_file(ch *file, int ww, int hh, int RGB[3]); | |||
// create new blank image file, callable | // create new blank image file, callable | |||
void m_blank_window(GtkWidget *, cchar *); | void m_blank_window(GtkWidget *, ch *); | |||
// blank / unblank window | // blank / unblank window | |||
void play_gif(cchar *file); | void play_gif(ch *file); | |||
// play GIF file animation | // play GIF file animation | |||
void m_copy_move(GtkWidget *, cchar *); | void m_copy_move(GtkWidget *, ch *); | |||
// copy or move image file to new location | // copy or move image file to new location | |||
void m_copyto_desktop(GtkWidget *, cchar *); | void m_copyto_desktop(GtkWidget *, ch *); | |||
// copy image file to desktop | // copy image file to desktop | |||
void m_copyto_clip(GtkWidget *, cchar *file); | void m_copyto_clip(GtkWidget *, ch *file); | |||
// copy an image file to the clipboard | // copy an image file to the clipboard | |||
void m_delete_trash(GtkWidget *, cchar *); | void m_delete_trash(GtkWidget *, ch *); | |||
// delete or trash an image file | // delete or trash an image file | |||
void m_convert_adobe(GtkWidget *, cchar *); | void m_convert_adobe(GtkWidget *, ch *); | |||
// convert adobe file into jpeg image(s) | // convert adobe file into jpeg image(s) | |||
void m_wallpaper(GtkWidget *, cchar *file); | void m_wallpaper(GtkWidget *, ch *file); | |||
// current file >> desktop wallpaper | // current file >> desktop wallpaper | |||
void m_print(GtkWidget *, cchar *); | void m_print(GtkWidget *, ch *); | |||
// print an image file | // print an image file | |||
void m_print_calibrated(GtkWidget *, cchar *); | void m_print_calibrated(GtkWidget *, ch *); | |||
// print an image file with adjusted colors | // print an image file with adjusted colors | |||
void m_quit(GtkWidget *, cchar *); | void m_quit(GtkWidget *, ch *); | |||
// exit application with checks | // exit application with checks | |||
void quitxx(); // exit unconditionally | void quitxx(); // exit unconditionally | |||
void m_help(GtkWidget *, cchar *menu); // various help menu functions | void m_help(GtkWidget *, ch *menu); // various help menu functions | |||
void m_file_save(GtkWidget *, cchar *); | void m_file_save(GtkWidget *, ch *); | |||
// save modified image file to disk | // save modified image file to disk | |||
void m_file_save_replace(GtkWidget *, cchar *menu); | void m_file_save_replace(GtkWidget *, ch *menu); | |||
// for KB shortcut Save File (replace) | // for KB shortcut Save File (replace) | |||
void m_file_save_version(GtkWidget *, cchar *menu); | void m_file_save_version(GtkWidget *, ch *menu); | |||
// for KB shortcut Save File Version | // for KB shortcut Save File Version | |||
int f_save(char *outfile, cchar *type, int bpc, int qual, int ack); | int f_save(ch *outfile, ch *type, int bpc, int qual, int ack); | |||
// save current image file to disk | // save current image file to disk | |||
int f_save_as(); // save_as dialog (choose file and bpc) | int f_save_as(); // save_as dialog (choose file and bpc) | |||
char * f_realpath(cchar *infile); | ch * f_realpath(ch *infile); | |||
// get real path for file with symlinks | // get real path for file with symlinks | |||
char * file_rootname(cchar *file); | ch * file_rootname(ch *file); | |||
// get root name without .vNN.ext | // get root name without .vNN.ext | |||
char * file_basename(cchar *file); | ch * file_basename(ch *file); | |||
// get base name /.../filename.ext | // get base name /.../filename.ext | |||
char ** file_all_versions(cchar *file, int &nf); | ch ** file_all_versions(ch *file, int &nf); | |||
// get all versions for given file | // get all versions for given file | |||
char * file_new_version(cchar *file); | ch * file_new_version(ch *file); | |||
// get next avail. file version name | // get next avail. file version name | |||
char * file_newest_version(cchar *file); | ch * file_newest_version(ch *file); | |||
// get newest version or original file | // get newest version or original file | |||
char * file_prior_version(cchar *file); | ch * file_prior_version(ch *file); | |||
// get prior version or original file | // get prior version or original file | |||
int find_imagefiles(cchar *dr, int fgs, char **&fls, int &nf, int zf = 1); | int find_imagefiles(ch *dr, int fgs, ch **&fls, int &nf, int zf = 1); | |||
// find all image files within a folder | // find all image files within a folder | |||
int regfile(cchar *file, struct stat *statb = 0); | int regfile(ch *file, struct stat *statb = 0); | |||
// test file is regular file, opt. return stat | // test file is regular file, opt. return stat | |||
int dirfile(cchar *file, struct stat *statb = 0); | int dirfile(ch *file, struct stat *statb = 0); | |||
// test file is directory, opt. return stat | // test file is directory, opt. return stat | |||
int hasperm(cchar *file, cchar rw); | int hasperm(ch *file, ch rw); | |||
// test file exists with 'r'/'w' permission | // test file exists with 'r'/'w' permission | |||
int set_permissions(GtkWidget *win, cchar *file, cchar *p1, char *p2); | int set_permissions(GtkWidget *win, ch *file, ch *p1, ch *p2); | |||
// show and set file permissions | // show and set file permissions | |||
int conv_permissions(cchar *perms, mode_t &mode); | int conv_permissions(ch *perms, mode_t &mode); | |||
// conv. "read+write" etc. to mode_t | // conv. "read+write" etc. to mode_t | |||
int conv_permissions(mode_t mode, char *perms); | int conv_permissions(mode_t mode, ch *perms); | |||
// conv. mode_t to "read+write" etc. | // conv. mode_t to "read+write" etc. | |||
// thumbnail gallery and navigation functions (f.gallery.cc) | // thumbnail gallery and navigation functions (f.gallery.cc) | |||
char * gallery(cchar *filez, cchar *action, int Nth); | ch * gallery(ch *filez, ch *action, int Nth); | |||
// display image gallery window, navigate | // display image gallery window, navigate | |||
void gallery_memory(ch *action); | ||||
void gallery_memory(cchar *action); | // save/recall gallery sort and posn. | |||
// save/recall gallery sort and posn. | ||||
void set_gwin_title(); // main window title = gallery name | void set_gwin_title(); // main window title = gallery name | |||
char * prev_next_file(int index, int lastver); | ch * prev_next_file(int index, int lastver); | |||
// get prev/next file with last version option | // get prev/next file with last version option | |||
char * prev_next_gallery(int index); | ch * prev_next_gallery(int index); | |||
// get prev/next gallery (physical folder) | // get prev/next gallery (physical folder) | |||
int file_position(cchar *file, int Nth); | int file_position(ch *file, int Nth); | |||
// get rel. position of file in gallery | // get rel. position of file in gallery | |||
FTYPE image_file_type(cchar *file); | FTYPE image_file_type(ch *file); | |||
// FNF folder IMAGE RAW THUMB OTHER | // FNF folder IMAGE RAW THUMB OTHER | |||
char * thumb2imagefile(cchar *thumbfile); | ch * thumb2imagefile(ch *thumbfile); | |||
// get image file for thumbnail file | // get image file for thumbnail file | |||
char * image2thumbfile(cchar *imagefile); | ch * image2thumbfile(ch *imagefile); | |||
// get thumbnail file for image file | // get thumbnail file for image file | |||
int thumbfile_OK(cchar *imagefile); | int thumbfile_OK(ch *imagefile); | |||
// check thumbnail file exists and not stale | // check thumbnail file exists and not stale | |||
int update_thumbfile(cchar *imagefile); | int update_thumbfile(ch *imagefile); | |||
// create or refresh thumbnail file | // create or refresh thumbnail file | |||
int thumbfile_set_mod_time(cchar *imagefile); | int thumbfile_set_mod_time(ch *imagefile); | |||
// set thumbnail mod time from image file | // set thumbnail mod time from image file | |||
void delete_thumbfile(cchar *imagefile); | void delete_thumbfile(ch *imagefile); | |||
// delete thumbnail for file | // delete thumbnail for file | |||
PIXBUF * get_cache_thumb(cchar *imagefile, PXB *thumbpxb); | PIXBUF * get_cache_thumb(ch *imagefile, PXB *thumbpxb); | |||
// get thumbnail from cache, add if needed | // get thumbnail from cache, add if needed | |||
int check_cache_thumb(cchar *imagefile); | int check_cache_thumb(ch *imagefile); | |||
// test if thumbnail cached or not | // test if thumbnail cached or not | |||
int replace_cache_thumb(cchar *imagefile, PXB *thumbpxb); | int replace_cache_thumb(ch *imagefile, PXB *thumbpxb); | |||
// replace cached thumbnail PXB | // replace cached thumbnail PXB | |||
void preload_thumbs_start(); // initz. for preload_thumbs() | void preload_thumbs_start(); // initz. for preload_thumbs() | |||
void preload_thumbs(int targetfile); // preload thumbnails into cache | void preload_thumbs(int targetfile); // preload thumbnails into cache | |||
void gallery_popimage(); // popup big image of clicked thumbnail | void gallery_popimage(); // popup big image of clicked thumbnail | |||
char * gallery_select1(cchar *gfolder); // select one file from gallery window | ch * gallery_select1(ch *gfolder); // select one file from gallery window | |||
void gallery_select1_Lclick_func(int Nth); // gallery_select1, thumbnail left-click | void gallery_select1_Lclick_func(int Nth); // gallery_select1, thumbnail left-click | |||
void gallery_select_clear(); // clear gallery_select() file list | void gallery_select_clear(); // clear gallery_select() file list | |||
int gallery_select(); // select files from gallery window | int gallery_select(); // select files from gallery window | |||
void gallery_select_Lclick_func(int Nth); // gallery_select, thumbnail left-click | void gallery_select_Lclick_func(int Nth); // gallery_select, thumbnail left-click | |||
void gallery_select_Rclick_func(int Nth); // gallery_select, thumbnail right-click | void gallery_select_Rclick_func(int Nth); // gallery_select, thumbnail right-click | |||
void m_thumbview(GtkWidget *, cchar *); | void m_thumbview(GtkWidget *, ch *); | |||
// gallery, thumbnails + file data | // gallery, thumbnails + file data | |||
void m_metaview(GtkWidget *, cchar *); | void m_metaview(GtkWidget *, ch *); | |||
// gallery, thumbnails + basic metadata | // gallery, thumbnails + basic metadata | |||
void m_recentfiles(GtkWidget *, cchar *); | void m_recentfiles(GtkWidget *, ch *); | |||
// gallery of recently viewed files | // gallery of recently viewed files | |||
void add_recent_file(cchar *file); | void add_recent_file(ch *file); | |||
// add file to recent file list | // add file to recent file list | |||
void m_newfiles(GtkWidget *, cchar *); | void m_newfiles(GtkWidget *, ch *); | |||
// gallery of newest files | // gallery of newest files | |||
void m_gallery_sort(GtkWidget *, cchar *); | void m_gallery_sort(GtkWidget *, ch *); | |||
// sort gallery by file, date, size ... | // sort gallery by file, date, size ... | |||
void m_gallery_screen(GtkWidget *, cchar *); | void m_gallery_screen(GtkWidget *, ch *); | |||
// screen gallery for new, old, pattern match | // screen gallery for new, old, pattern match | |||
void m_source_folder(GtkWidget *, cchar *); | void m_source_folder(GtkWidget *, ch *); | |||
// set gallery from current file folder | // set gallery from current file folder | |||
void m_allfolders(GtkWidget *, cchar *); | void m_allfolders(GtkWidget *, ch *); | |||
// list folders, click for gallery | // list folders, click for gallery | |||
void m_select_files(GtkWidget *, cchar *); | void m_select_files(GtkWidget *, ch *); | |||
// files for album/batch/script funcs | // files for album/batch/script funcs | |||
void m_rename_folder(GtkWidget *, cchar *); | void m_rename_folder(GtkWidget *, ch *); | |||
// rename current folder (file gallery) | // rename current folder (file gallery) | |||
void m_add_subfolder(GtkWidget *, cchar *); | void m_add_subfolder(GtkWidget *, ch *); | |||
// add subfolder to existing file gallery | // add subfolder to existing file gallery | |||
void m_bookmarks(GtkWidget *, cchar *); | void m_bookmarks(GtkWidget *, ch *); | |||
// select bookmark, goto gallery posn | // select bookmark, goto gallery posn | |||
void m_edit_bookmarks(GtkWidget *, cchar *); | void m_edit_bookmarks(GtkWidget *, ch *); | |||
// edit bookmarks (gallery/file position) | // edit bookmarks (gallery/file position) | |||
void edit_bookmarks_Lclick_func(int Nth); // thumbnail click response function | void edit_bookmarks_Lclick_func(int Nth); // thumbnail click response function | |||
void m_thumbframe(GtkWidget *, cchar *); | void m_thumbframe(GtkWidget *, ch *); | |||
// set video frame for video thumbnail | // set video frame for video thumbnail | |||
void m_show_hidden(GtkWidget *, cchar *); | void m_show_hidden(GtkWidget *, ch *); | |||
// for KB shortcut "show hidden files" | // for KB shortcut "show hidden files" | |||
void m_current_album(GtkWidget *, cchar *); | void m_current_album(GtkWidget *, ch *); | |||
// for KB shortcut "Current Album" | // for KB shortcut "Current Album" | |||
// albums menu (f.albums.cc) | // albums menu (f.albums.cc) | |||
void m_manage_albums(GtkWidget *, cchar *); | void m_manage_albums(GtkWidget *, ch *); | |||
// create and edit image albums | // create and edit image albums | |||
int album_create_from_gallery(cchar *newalbumfile); | int album_create_from_gallery(ch *newalbumfile); | |||
// create album from current gallery | // create album from current gallery | |||
void album_show(cchar *albumfile = 0); | void album_show(ch *albumfile = 0); | |||
// set/show current album gallery | // set/show current album gallery | |||
void album_add_selfiles(int mode); // add selected files to album | void album_add_selfiles(int mode); // add selected files to album | |||
void album_add_currfile(int mode); // add current file to album | void album_add_currfile(int mode); // add current file to album | |||
void album_add_file(cchar *file, int posn); // add one file to album (drag/drop) | void album_add_file(ch *file, int posn); // add one file to album (drag/drop) | |||
void album_remove_file(int posn); // remove file from album | void album_remove_file(int posn); // remove file from album | |||
void album_move_file(int pos1, int pos2); // move file position (drag/drop) | void album_move_file(int pos1, int pos2); // move file position (drag/drop) | |||
void album_folder_rename(cchar *oldname, cchar *newname); | void album_folder_rename(ch *oldname, ch *newname); | |||
// fix album files after folder rename | // fix album files after folder rename | |||
void album_purge_replace(cchar *album, int Nt, char **tfile, char **rfile); | void album_purge_replace(ch *album, int Nt, ch **tfile, ch **rfile); | |||
// purge missing, replace target files | // purge missing, replace target files | |||
void album_purge_replace(cchar *album, char *targfile, char *repfile); | void album_purge_replace(ch *album, ch *targfile, ch *repfile); | |||
// version for single target file | // version for single target file | |||
void m_update_albums(GtkWidget *, cchar *); | void m_update_albums(GtkWidget *, ch *); | |||
// update albums for new file version | // update albums for new file version | |||
void update_albums_Lclick_func(int Nth); // m_update_albums() thumbnail click | void update_albums_Lclick_func(int Nth); // m_update_albums() thumbnail click | |||
void m_gallery2album(GtkWidget *, cchar *); | void m_gallery2album(GtkWidget *, ch *); | |||
// save current gallery as album | // save current gallery as album | |||
void m_album_mass_update(GtkWidget *, cchar *); | void m_album_mass_update(GtkWidget *, ch *); | |||
// album mass update tools | // album mass update tools | |||
void m_cycle_wallpaper(int argc, char *argv[]); | void m_cycle_wallpaper(int argc, ch *argv[]); | |||
// cycle wallpaper | // cycle wallpaper | |||
// slide show menu (f.albums.cc) | // slide show menu (f.albums.cc) | |||
void m_slideshow(GtkWidget *, cchar *); // enter or leave slideshow mode | void m_slideshow(GtkWidget *, ch *); // enter or leave slideshow mode | |||
void ss_imageprefs_Lclick_func(int Nth); // slideshow image prefs thumbnail click func | void ss_imageprefs_Lclick_func(int Nth); // slideshow image prefs thumbnail click func | |||
void ss_KBfunc(int KBkey); // slideshow keyboard input | void ss_KBfunc(int KBkey); // slideshow keyboard input | |||
// metadata menu functions (f.meta.cc) | // metadata menu functions (f.meta.cc) | |||
int select_meta_keys(zlist_t *mlist, int maxout, int Fex); // dialog - select metadata items | int select_meta_keys(zlist_t *mlist, int maxout, int Fex); // dialog - select metadata items | |||
void meta_view(int type); // popup metadata report | void meta_view(int type); // popup metadata report | |||
void m_meta_view_short(GtkWidget *, cchar *); | void m_meta_view_short(GtkWidget *, ch *); | |||
// view selected EXIF/IPTC data | // view selected metadata | |||
void m_meta_view_long(GtkWidget *, cchar *); | void m_meta_view_long(GtkWidget *, ch *); | |||
// view all EXIF/IPTC data | // view all metadata | |||
void m_meta_edit_main(GtkWidget *, cchar *); | void m_meta_edit_main(GtkWidget *, ch *); | |||
// edit date/rating/tags dialog | // edit date/rating/tags dialog | |||
void m_meta_edit_any(GtkWidget *, cchar *); | void m_meta_edit_any(GtkWidget *, ch *); | |||
// add or change any EXIF/IPTC data | // add or change any metadata | |||
void m_meta_delete(GtkWidget *, cchar *); | void m_meta_delete(GtkWidget *, ch *); | |||
// delete EXIF/IPTC data | // delete metadata | |||
void m_meta_copy(GtkWidget *, cchar *); | void m_meta_copy(GtkWidget *, ch *); | |||
// copy metadata from one file to another | // copy metadata from one file to another | |||
void m_meta_fix(GtkWidget *, cchar *); | void m_meta_fix(GtkWidget *, ch *); | |||
// repair malformed metadata blocking edits | // repair malformed metadata blocking edits | |||
void m_meta_manage_tags(GtkWidget *, cchar *); | void m_meta_manage_tags(GtkWidget *, ch *); | |||
// manage tags (keywords) | // manage tags (keywords) | |||
void m_meta_choose_caps(GtkWidget *, cchar *); | void m_meta_choose_caps(GtkWidget *, ch *); | |||
// choose metadata keys for image captions | // choose metadata keys for image captions | |||
void meta_show_caps(int show); // show captions on current image | void meta_show_caps(int show); // show captions on current image | |||
void m_meta_toggle_caps(GtkWidget *, cchar *); // toggle image captions on/off | void m_meta_toggle_caps(GtkWidget *, ch *); // toggle image captions on/off | |||
void m_batch_tags(GtkWidget *, cchar *); | void m_batch_tags(GtkWidget *, ch *); | |||
// add and remove tags | // add and remove tags | |||
void m_batch_rename_tags(GtkWidget *, cchar *); | void m_batch_rename_tags(GtkWidget *, ch *); | |||
// rename tags for all image files | // rename tags for all image files | |||
void m_batch_photo_date_time(GtkWidget *, cchar *menu); | void m_batch_photo_date_time(GtkWidget *, ch *menu); | |||
// change or shift photo dates/times | // change or shift photo dates/times | |||
void m_batch_change_meta(GtkWidget *, cchar *); | void m_batch_change_meta(GtkWidget *, ch *); | |||
// add/change/delete metadata | // add/change/delete metadata | |||
void m_batch_report_meta(GtkWidget *, cchar *); | void m_batch_report_meta(GtkWidget *, ch *); | |||
// metadata report | // metadata report | |||
void m_batch_meta_mover(GtkWidget *, cchar *); | void m_batch_meta_mover(GtkWidget *, ch *); | |||
// move metadata between keys | // move metadata between keys | |||
void m_batch_geotags(GtkWidget *, cchar *menu); | void m_batch_geotags(GtkWidget *, ch *menu); | |||
// add or change geotags | // add or change geotags | |||
void m_meta_places_dates(GtkWidget *, cchar *); | void m_meta_places_dates(GtkWidget *, ch *); | |||
// report images by location and date range | // report images by location and date range | |||
void m_meta_timeline(GtkWidget *, cchar *); | void m_meta_timeline(GtkWidget *, ch *); | |||
// report images by month | // report images by month | |||
void m_autosearch(GtkWidget *, cchar *); | void m_autosearch(GtkWidget *, ch *); | |||
// search images, write to stdout | // search images, write to stdout | |||
void m_search_images(GtkWidget *, cchar *); | void m_search_images(GtkWidget *, ch *); | |||
// search image metadata | // search image metadata | |||
void metadate_pdate(cchar *metadate, char *pdate, char *ptime); | void metadate_pdate(ch *metadate, ch *pdate, ch *ptime); | |||
// "yyyymmddhhmm" > "yyyy:mm:dd" + "hh:mm:ss" | // "yyyymmddhhmm" > "yyyy-mm-dd" + "hh:mm:ss" | |||
void load_filemeta(cchar *file); | void load_filemeta(ch *file); | |||
// load metadata for image file | // load metadata for image file | |||
void save_filemeta(cchar *file); | void save_filemeta(ch *file); | |||
// save metadata in EXIF and image index | // save metadata in file and image index | |||
void set_meta_wwhh(int ww, int hh); // set ww/hh outside m_meta_edit() | void set_meta_wwhh(int ww, int hh); // set ww/hh outside m_meta_edit() | |||
void update_image_index(cchar *file); | void update_image_index(ch *file); | |||
// update image index for image file | // update image index for image file | |||
void delete_image_index(cchar *file); | void delete_image_index(ch *file); | |||
// delete image index for image file | // delete image index for image file | |||
void m_set_map_markers(GtkWidget *, cchar *); // set markers for all images or gallery only | void m_set_map_markers(GtkWidget *, ch *); // set markers for all images or gallery only | |||
void m_download_maps(GtkWidget *, cchar *); | void m_download_maps(GtkWidget *, ch *); | |||
// download fotoxx geographic map files | // download fotoxx geographic map files | |||
void m_load_filemap(GtkWidget *, cchar *); | void m_load_filemap(GtkWidget *, ch *); | |||
// load a file map chosen by user (W view) | // load a file map chosen by user (W view) | |||
void filemap_mousefunc(); // mouse function for file map view mode | void filemap_mousefunc(); // mouse function for file map view mode | |||
void filemap_paint_dots(); // paint red dots on map image locations | void filemap_paint_dots(); // paint red dots on map image locations | |||
void free_filemap(); // free memory used by file map image | void free_filemap(); // free memory used by file map image | |||
void m_load_netmap(GtkWidget *, cchar *); // load the initial net map | void m_load_netmap(GtkWidget *, ch *); // load the initial net map | |||
void netmap_paint_dots(); // paint red dots on map image locations | void netmap_paint_dots(); // paint red dots on map image locations | |||
void m_netmap_zoomin(GtkWidget *, cchar *); | void m_netmap_zoomin(GtkWidget *, ch *); | |||
// zoom net map to given location | // zoom net map to given location | |||
void m_netmap_locs(GtkWidget *, cchar *); | void m_netmap_locs(GtkWidget *, ch *); | |||
// save amd recall net map locations | // save amd recall net map locations | |||
int exif_get(cchar *file, cchar **keys, char **kdat, int nk); | int meta_get1(ch *files, ch **keys, ch **kdat, int NK); | |||
// get EXIF/IPTC data for given keys | // get metadata for file and given keys | |||
int exif_put(cchar *file, cchar **keys, cchar **kdat, int nk); | int meta_getN(ch **files, int NF, ch **keys, ch **kdat, int NK); | |||
// put EXIF/IPTC data for given keys | // get metadata for multiple files and keys | |||
int exif_copy(cchar *f1, cchar *f2, cchar **keys, cchar **kdat, int nk); | int meta_put(ch *file, ch **keys, ch **kdat, int NK); | |||
// copy EXIF/IPTC data from file to file | // put metadata for given keys | |||
int exif_server(int Nrecs, char **inputs, char **outputs); | int meta_copy(ch *f1, ch *f2, ch **keys, ch **kdat, int NK); | |||
// run exiftool as a server process | // copy metadata from file to file | |||
void exif_tagdate(cchar *exifdate, char *tagdate); | void meta_tagdate(ch *metadate, ch *tagdate); | |||
// yyyy:mm:dd:hh:mm:ss to yyyymmddhhmmss | // yyyy:mm:dd:hh:mm:ss to yyyymmddhhmmss | |||
void tag_exifdate(cchar *tagdate, char *exifdate); | void tag_metadate(ch *tagdate, ch *metadate); | |||
// yyyymmddhhmmss to yyyy:mm:dd:hh:mm:ss | // yyyymmddhhmmss to yyyy:mm:dd:hh:mm:ss | |||
xxrec_t * get_xxrec(cchar *file); | xxrec_t * get_xxrec(ch *file); | |||
// get index record from memory table | // get index record from memory table | |||
int put_xxrec(xxrec_t *xxrec, cchar *file); | int put_xxrec(xxrec_t *xxrec, ch *file); | |||
// add/update index table and file | // add/update index table and file | |||
xxrec_t * read_xxrec_seq(int &ftf); // read image index records 1-last | xxrec_t * read_xxrec_seq(int &ftf); // read image index records 1-last | |||
int write_xxrec_seq(xxrec_t *xxrec, int &ftf); // write image index records 1-last | int write_xxrec_seq(xxrec_t *xxrec, int &ftf); // write image index records 1-last | |||
// select area menu functions (f.select.cc) | // select area menu functions (f.select.cc) | |||
void m_select_area(GtkWidget *, cchar *); | void m_select_area(GtkWidget *, ch *); | |||
// select area to edit within image | // select area to edit within image | |||
void m_select_find_gap(GtkWidget *, cchar *); | void m_select_find_gap(GtkWidget *, ch *); | |||
// find gap in area outline | // find gap in area outline | |||
void m_select_edgeblend(GtkWidget *, cchar *); | void m_select_edgeblend(GtkWidget *, ch *); | |||
// manually blend area edges via mouse | // manually blend area edges via mouse | |||
void m_copy_complex(GtkWidget *, cchar *); | void m_copy_complex(GtkWidget *, ch *); | |||
// select and copy complex shape | // select and copy complex shape | |||
void m_select_show(GtkWidget *, cchar *); | void m_select_show(GtkWidget *, ch *); | |||
// enable area for subsequent edits | // enable area for subsequent edits | |||
void m_select_hide(GtkWidget *, cchar *); | void m_select_hide(GtkWidget *, ch *); | |||
// show area outline | // show area outline | |||
void m_select_enable(GtkWidget *, cchar *); | void m_select_enable(GtkWidget *, ch *); | |||
// hide area outline | // hide area outline | |||
void m_select_disable(GtkWidget *, cchar *); | void m_select_disable(GtkWidget *, ch *); | |||
// disable area | // disable area | |||
void m_select_invert(GtkWidget *, cchar *); | void m_select_invert(GtkWidget *, ch *); | |||
// invert area | // invert area | |||
void m_select_clear(GtkWidget *, cchar *); | void m_select_clear(GtkWidget *, ch *); | |||
// clear area | // clear area | |||
void m_select_copy(GtkWidget *, cchar *); | void m_select_copy(GtkWidget *, ch *); | |||
// copy area to default file | // copy area to default file | |||
void m_select_save(GtkWidget *, cchar *); | void m_select_save(GtkWidget *, ch *); | |||
// copy area to designamted file | // copy area to designamted file | |||
void m_select_load(GtkWidget *, cchar *); | void m_select_load(GtkWidget *, ch *); | |||
// load file and paste as area in image | // load file and paste as area in image | |||
void m_select_paste(GtkWidget *, cchar *); | void m_select_paste(GtkWidget *, ch *); | |||
// paste last copied area into image | // paste last copied area into image | |||
void sa_geom_mousefunc(); // select rectangle or ellipse | void sa_geom_mousefunc(); // select rectangle or ellipse | |||
void sa_draw_mousefunc(); // edge line drawing function | void sa_draw_mousefunc(); // edge line drawing function | |||
int sa_nearpix(int mx, int my, int rad, int &px, int &py, int fx); // find nearest pixel | int sa_nearpix(int mx, int my, int rad, int &px, int &py, int fx); // find nearest pixel | |||
void sa_draw_line(int px1, int py1, int px2, int py2, cairo_t *cr); // draw a connected line | void sa_draw_line(int px1, int py1, int px2, int py2, cairo_t *cr); // draw a connected line | |||
void sa_draw1pix(int px, int py, cairo_t *cr); // add one pixel to select area | void sa_draw1pix(int px, int py, cairo_t *cr); // add one pixel to select area | |||
void sa_mouse_select(); // select by mouse (opt. color match) | void sa_mouse_select(); // select by mouse (opt. color match) | |||
void sa_nextseq(); // start next sequence number | void sa_nextseq(); // start next sequence number | |||
void sa_unselect_pixels(cairo_t *cr); // remove current selection | void sa_unselect_pixels(cairo_t *cr); // remove current selection | |||
void sa_pixmap_create(); // create area pixel maps | void sa_pixmap_create(); // create area pixel maps | |||
skipping to change at line 1203 | skipping to change at line 1207 | |||
void sa_clear(); // clear area | void sa_clear(); // clear area | |||
void sa_edgecalc(); // calculate area edge distances | void sa_edgecalc(); // calculate area edge distances | |||
void sa_edgecreep(int); // adjust area edge +/- | void sa_edgecreep(int); // adjust area edge +/- | |||
float sa_blendfunc(int edgedist); // area edge blending for edit functions | float sa_blendfunc(int edgedist); // area edge blending for edit functions | |||
// image edit functions - Edit menu (f.edit.cc) | // image edit functions - Edit menu (f.edit.cc) | |||
void get_edit_pixels_init(int Nthreads, int margin); // get edit pixels initz. (mouse/area/full) | void get_edit_pixels_init(int Nthreads, int margin); // get edit pixels initz. (mouse/area/full) | |||
void copy_edit_pixels(PXM *pxm1, PXM *pxm2); // copy edit pixels from image to image | void copy_edit_pixels(PXM *pxm1, PXM *pxm2); // copy edit pixels from image to image | |||
int get_edit_pixels(int thread, int &px, int &py, float &blend); // get edit pixels from image, area, or mouse | int get_edit_pixels(int thread, int &px, int &py, float &blend); // get edit pixels from image, area, or mouse | |||
void m_paint_edits(GtkWidget *, cchar *); | void m_paint_edits(GtkWidget *, ch *); | |||
// paint edits gradually by mouse painting | // paint edits gradually by mouse painting | |||
void m_rotate(GtkWidget *, cchar *); | void m_rotate(GtkWidget *, ch *); | |||
// rotate or level image | // rotate or level image | |||
void m_crop(GtkWidget *, cchar *); | void m_crop(GtkWidget *, ch *); | |||
// crop image margins | // crop image margins | |||
void m_retouch(GtkWidget *, cchar *); | void m_retouch(GtkWidget *, ch *); | |||
// brightness, contrast, color | // brightness, contrast, color | |||
void blackbodyRGB(int K, float &R, float &G, float &B); // convert deg. K to RGB factors | void blackbodyRGB(int K, float &R, float &G, float &B); // convert deg. K to RGB factors | |||
void m_resize(GtkWidget *, cchar *); | void m_resize(GtkWidget *, ch *); | |||
// resize image | // resize image | |||
void m_upright(GtkWidget *, cchar *); | void m_upright(GtkWidget *, ch *); | |||
// auto upright based on EXIF | // auto upright based on metadata | |||
void m_mirror(GtkWidget *, cchar *); | void m_mirror(GtkWidget *, ch *); | |||
// mirror image horz. or vert. | // mirror image horz. or vert. | |||
void m_markup(GtkWidget *, cchar *); | void m_markup(GtkWidget *, ch *); | |||
// draw text/line/box/oval on image | // draw text/line/box/oval on image | |||
void m_draw_text(GtkWidget *, cchar *); | void m_draw_text(GtkWidget *, ch *); | |||
// draw text on image | // draw text on image | |||
void load_text(zdialog *zd); // load text and attributes from a file | void load_text(zdialog *zd); // load text and attributes from a file | |||
void save_text(zdialog *zd); // save text and attributes to a file | void save_text(zdialog *zd); // save text and attributes to a file | |||
int gentext(textattr_t *attr); // generate text image from attributes | int gentext(textattr_t *attr); // generate text image from attributes | |||
void m_draw_line(GtkWidget *, cchar *); // draw line/arrow on image | void m_draw_line(GtkWidget *, ch *); // draw line/arrow on image | |||
void load_line(zdialog *zd); // load line attributes from a file | void load_line(zdialog *zd); // load line attributes from a file | |||
void save_line(zdialog *zd); // save line attributes to a file | void save_line(zdialog *zd); // save line attributes to a file | |||
int genline(lineattr_t *attr); // generate line/arrow image from attributes | int genline(lineattr_t *attr); // generate line/arrow image from attributes | |||
void m_draw_box(GtkWidget *, cchar *); | void m_draw_box(GtkWidget *, ch *); | |||
// draw box on image | // draw box on image | |||
void m_draw_oval(GtkWidget *, cchar *); | void m_draw_oval(GtkWidget *, ch *); | |||
// draw oval on image | // draw oval on image | |||
void m_color_mode(GtkWidget *, cchar *); | void m_color_mode(GtkWidget *, ch *); | |||
// B+W/color, negative/positive, sepia | // B+W/color, negative/positive, sepia | |||
void m_paint_image(GtkWidget *, cchar *); | void m_paint_image(GtkWidget *, ch *); | |||
// paint pixels with the mouse | // paint pixels with the mouse | |||
int RGB_chooser(zdialog *zd, cchar *butt, uint8 rgb[3]); | int RGB_chooser(zdialog *zd, ch *butt, uint8 rgb[3]); | |||
// dialog, get color from color file | // dialog, get color from color file | |||
int HSL_chooser(zdialog *zd, cchar *butt, uint8 RGB[3]); | int HSL_chooser(zdialog *zd, ch *butt, uint8 RGB[3]); | |||
// dialog, get color from HSL dialog | // dialog, get color from HSL dialog | |||
void m_paint_transp(GtkWidget *, cchar *); | void m_paint_transp(GtkWidget *, ch *); | |||
// paint transparency with the mouse | // paint transparency with the mouse | |||
void m_copy_in_image(GtkWidget *, cchar *); | void m_copy_in_image(GtkWidget *, ch *); | |||
// copy pixels within one image | // copy pixels within one image | |||
void m_copy_from_image(GtkWidget *, cchar *); | void m_copy_from_image(GtkWidget *, ch *); | |||
// copy pixels from one image to another | // copy pixels from one image to another | |||
void m_copy_from_image_slave(GtkWidget *, cchar *); | void m_copy_from_image_slave(GtkWidget *, ch *); | |||
// source image slave process for the above | // source image slave process for the above | |||
void m_copy_prior_edit(GtkWidget *, cchar *); | void m_copy_prior_edit(GtkWidget *, ch *); | |||
// undo prior edits by mouse painting | // undo prior edits by mouse painting | |||
void m_plugins(GtkWidget *, cchar *); | void m_plugins(GtkWidget *, ch *); | |||
// plugins menu function | // plugins menu function | |||
void m_edit_plugins(GtkWidget *, cchar *); | void m_edit_plugins(GtkWidget *, ch *); | |||
// edit plugin function | // edit plugin function | |||
void m_run_plugin(GtkWidget *, cchar *); | void m_run_plugin(GtkWidget *, ch *); | |||
// run plugin function | // run plugin function | |||
void m_rawtherapee(GtkWidget *, cchar *rawfile); | void m_rawtherapee(GtkWidget *, ch *rawfile); | |||
// edit RAW file with Raw Therapee | // edit RAW file with Raw Therapee | |||
void m_darktable(GtkWidget *, cchar *rawfile); | void m_darktable(GtkWidget *, ch *rawfile); | |||
// edit RAW file with Darktable | // edit RAW file with Darktable | |||
void m_extract_mpo(GtkWidget *, cchar *); | void m_extract_mpo(GtkWidget *, ch *); | |||
// extract .MPO left and right files | // extract .MPO left and right files | |||
// image edit functions - Repair menu (f.repair.cc) | // image edit functions - Repair menu (f.repair.cc) | |||
void m_sharpen(GtkWidget *, cchar *); // sharpen image | void m_sharpen(GtkWidget *, ch *); // sharpen image | |||
void sharp_GR_callable(int amount, int thresh); // callable gradient sharpen | void sharp_GR_callable(int amount, int thresh); // callable gradient sharpen | |||
void m_blur(GtkWidget *, cchar *); | void m_blur(GtkWidget *, ch *); | |||
// blur image - steering dialog | // blur image - steering dialog | |||
void m_fix_motionblur(GtkWidget *, cchar *); | void m_fix_motionblur(GtkWidget *, ch *); | |||
// reduce blur from camera motion | // reduce blur from camera motion | |||
void m_denoise(GtkWidget *, cchar *); | void m_denoise(GtkWidget *, ch *); | |||
// image noise reduction | // image noise reduction | |||
void m_defog(GtkWidget *, cchar *); | void m_defog(GtkWidget *, ch *); | |||
// add/remove fog/haze based on brightness | // add/remove fog/haze based on brightness | |||
void m_redeyes(GtkWidget *, cchar *); | void m_redeyes(GtkWidget *, ch *); | |||
// red-eye removal | // red-eye removal | |||
void m_smart_erase(GtkWidget *, const char *); | void m_smart_erase(GtkWidget *, ch *); | |||
// smart erase object | // smart erase object | |||
void m_remove_halo(GtkWidget *, const char *); | void m_remove_halo(GtkWidget *, ch *); | |||
// remove halo left by other edits | // remove halo left by other edits | |||
void m_adjust_RGB(GtkWidget *, cchar *); | void m_adjust_RGB(GtkWidget *, ch *); | |||
// color adjust using RGB or CMY colors | // color adjust using RGB or CMY colors | |||
void m_adjust_HSL(GtkWidget *, cchar *); | void m_adjust_HSL(GtkWidget *, ch *); | |||
// color adjust with HSL | // color adjust with HSL | |||
void HSLtoRGB(float H, float S, float L, float &R, float &G, float &B); // convert HSL color space to RGB | void HSLtoRGB(float H, float S, float L, float &R, float &G, float &B); // convert HSL color space to RGB | |||
void RGBtoHSL(float R, float G, float B, float &H, float &S, float &L); // convert RGB color space to HSL | void RGBtoHSL(float R, float G, float B, float &H, float &S, float &L); // convert RGB color space to HSL | |||
void m_color_profile(GtkWidget *, cchar *); | void m_color_profile(GtkWidget *, ch *); | |||
// convert to another color profile | // convert to another color profile | |||
void m_remove_dust(GtkWidget *, cchar *); | void m_remove_dust(GtkWidget *, ch *); | |||
// remove dust spots | // remove dust spots | |||
void m_chromatic1(GtkWidget *, const char *); | void m_chromatic1(GtkWidget *, ch *); | |||
// reduce lateral chromatic aberration | // reduce lateral chromatic aberration | |||
void m_chromatic2(GtkWidget *, const char *); | void m_chromatic2(GtkWidget *, ch *); | |||
// reduce axial chromatic aberration | // reduce axial chromatic aberration | |||
// image edit functions - Refine menu (f.refine.cc) | // image edit functions - Refine menu (f.refine.cc) | |||
void m_voodoo1(GtkWidget *, cchar *); | void m_voodoo1(GtkWidget *, ch *); | |||
// automatic image retouch | // automatic image retouch | |||
void m_voodoo2(GtkWidget *, cchar *); | void m_voodoo2(GtkWidget *, ch *); | |||
// automatic image retouch | // automatic image retouch | |||
void m_edit_dist(GtkWidget *, cchar *); | void m_edit_dist(GtkWidget *, ch *); | |||
// edit brightness distribution | // edit brightness distribution | |||
void m_flatten_dist(GtkWidget *, cchar *); | void m_flatten_dist(GtkWidget *, ch *); | |||
// flatten brightness distribution | // flatten brightness distribution | |||
void m_localcon(GtkWidget *, cchar *); | void m_localcon(GtkWidget *, ch *); | |||
// increase local contrast | // increase local contrast | |||
void m_gradients(GtkWidget *, cchar *); | void m_gradients(GtkWidget *, ch *); | |||
// magnify brightness gradients | // magnify brightness gradients | |||
void m_gretinex(GtkWidget *, cchar *); | void m_gretinex(GtkWidget *, ch *); | |||
// rescale RGB levels - global | // rescale RGB levels - global | |||
void m_lretinex(GtkWidget *, cchar *); | void m_lretinex(GtkWidget *, ch *); | |||
// rescale RGB levels - local | // rescale RGB levels - local | |||
void m_saturation(GtkWidget *, cchar *); | void m_saturation(GtkWidget *, ch *); | |||
// adjust saturation based on brightness | // adjust saturation based on brightness | |||
void m_soft_focus(GtkWidget *, cchar *); | void m_soft_focus(GtkWidget *, ch *); | |||
// apply lens soft focus effect | // apply lens soft focus effect | |||
void m_match_colors(GtkWidget *, cchar *); | void m_match_colors(GtkWidget *, ch *); | |||
// set image2 colors to match image1 | // set image2 colors to match image1 | |||
void m_brite_ramp(GtkWidget *, cchar *); | void m_brite_ramp(GtkWidget *, ch *); | |||
// add brightness ramp across image | // add brightness ramp across image | |||
void m_vignette(GtkWidget *, cchar *); | void m_vignette(GtkWidget *, ch *); | |||
// vignette tool | // vignette tool | |||
// image edit functions - Effects menu (f.effects.cc) | // image edit functions - Effects menu (f.effects.cc) | |||
void m_sketch(GtkWidget *, cchar *); | void m_sketch(GtkWidget *, ch *); | |||
// simulated sketch | // simulated sketch | |||
void m_cartoon(GtkWidget *, cchar *); | void m_cartoon(GtkWidget *, ch *); | |||
// cartoon drawing | // cartoon drawing | |||
void m_drawing(GtkWidget *, cchar *); | void m_drawing(GtkWidget *, ch *); | |||
// outline drawing | // outline drawing | |||
void m_emboss(GtkWidget *, cchar *); | void m_emboss(GtkWidget *, ch *); | |||
// simulated embossing | // simulated embossing | |||
void m_tiles(GtkWidget *, cchar *); | void m_tiles(GtkWidget *, ch *); | |||
// tile array (pixelate) | // tile array (pixelate) | |||
void m_painting(GtkWidget *, cchar *); | void m_painting(GtkWidget *, ch *); | |||
// simulated painting | // simulated painting | |||
void m_texture(GtkWidget *, cchar *); | void m_texture(GtkWidget *, ch *); | |||
// add texture to image | // add texture to image | |||
void m_pattern(GtkWidget *, cchar *); | void m_pattern(GtkWidget *, ch *); | |||
// tile image with a pattern | // tile image with a pattern | |||
void m_dither(GtkWidget *, cchar *); | void m_dither(GtkWidget *, ch *); | |||
// dithered dots | // dithered dots | |||
void m_dither0(GtkWidget *, cchar *); | void m_dither0(GtkWidget *, ch *); | |||
// Roy Lichtenstein dots | // Roy Lichtenstein dots | |||
void m_dither1(GtkWidget *, cchar *); | void m_dither1(GtkWidget *, ch *); | |||
// pure RGB or B&W dots | // pure RGB or B&W dots | |||
void m_dither2(GtkWidget *, cchar *); | void m_dither2(GtkWidget *, ch *); | |||
// RGB reduced bit-depth dots | // RGB reduced bit-depth dots | |||
void m_dither3(GtkWidget *, cchar *); | void m_dither3(GtkWidget *, ch *); | |||
// custom palette color dots | // custom palette color dots | |||
void m_mosaic(GtkWidget *, cchar *); | void m_mosaic(GtkWidget *, ch *); | |||
// make mosaic with tiles from images | // make mosaic with tiles from images | |||
void m_add_noise(GtkWidget *, cchar *); | void m_add_noise(GtkWidget *, ch *); | |||
// add random_noise to image | // add random_noise to image | |||
void m_color_depth(GtkWidget *, cchar *); | void m_color_depth(GtkWidget *, ch *); | |||
// set color depth 1-16 bits/color | // set color depth 1-16 bits/color | |||
void m_shift_colors(GtkWidget *, cchar *); | void m_shift_colors(GtkWidget *, ch *); | |||
// shift colors into other colors | // shift colors into other colors | |||
void m_alien_colors(GtkWidget *, cchar *); | void m_alien_colors(GtkWidget *, ch *); | |||
// revise hues using an algorithm | // revise hues using an algorithm | |||
void m_copy_colors(GtkWidget *, cchar *); | void m_copy_colors(GtkWidget *, ch *); | |||
// copy selected colors from current image | // copy selected colors from current image | |||
void m_paste_colors(GtkWidget *, cchar *); | void m_paste_colors(GtkWidget *, ch *); | |||
// paste selected colors from selected image | // paste selected colors from selected image | |||
void m_anykernel(GtkWidget *, cchar *); | void m_anykernel(GtkWidget *, ch *); | |||
// apply custom convolution kernel | // apply custom convolution kernel | |||
// image edit functions - Warp menu (f.warp.cc) | // image edit functions - Warp menu (f.warp.cc) | |||
void m_unbend(GtkWidget *, cchar *); | void m_unbend(GtkWidget *, ch *); | |||
// unbend panoramas | // unbend panoramas | |||
void m_perspective(GtkWidget *, cchar *); | void m_perspective(GtkWidget *, ch *); | |||
// warp tetragon into rectangle | // warp tetragon into rectangle | |||
void m_warp_area(GtkWidget *, cchar *); | void m_warp_area(GtkWidget *, ch *); | |||
// warp image within an area | // warp image within an area | |||
void m_warp_curved(GtkWidget *, cchar *); | void m_warp_curved(GtkWidget *, ch *); | |||
// warp image, curved transform | // warp image, curved transform | |||
void m_warp_linear(GtkWidget *, cchar *); | void m_warp_linear(GtkWidget *, ch *); | |||
// warp image, linear transform | // warp image, linear transform | |||
void m_warp_affine(GtkWidget *, cchar *); | void m_warp_affine(GtkWidget *, ch *); | |||
// warp image, affine transform | // warp image, affine transform | |||
void m_area_rescale(GtkWidget *, cchar *); | void m_area_rescale(GtkWidget *, ch *); | |||
// rescale image, select areas unchanged | // rescale image, select areas unchanged | |||
void m_unwarp_closeup(GtkWidget *, cchar *); | void m_unwarp_closeup(GtkWidget *, ch *); | |||
// warp image within closeup face area | // warp image within closeup face area | |||
void m_waves(GtkWidget *, cchar *); | void m_waves(GtkWidget *, ch *); | |||
// warp image using a wave pattern | // warp image using a wave pattern | |||
void m_twist(GtkWidget *, cchar *); | void m_twist(GtkWidget *, ch *); | |||
// twist image centered at mouse | // twist image centered at mouse | |||
void m_sphere(GtkWidget *, cchar *); | void m_sphere(GtkWidget *, ch *); | |||
// image spherical projection | // image spherical projection | |||
void m_stretch(GtkWidget *, cchar *); | void m_stretch(GtkWidget *, ch *); | |||
// add/remove barrel/pincushion distortion | // add/remove barrel/pincushion distortion | |||
void m_inside_out(GtkWidget *, cchar *); | void m_inside_out(GtkWidget *, ch *); | |||
// turn an image inside-out | // turn an image inside-out | |||
void m_tiny_planet(GtkWidget *, cchar *); | void m_tiny_planet(GtkWidget *, ch *); | |||
// convert image to tiny planet | // convert image to tiny planet | |||
void m_escher_spiral(GtkWidget *, cchar *); | void m_escher_spiral(GtkWidget *, ch *); | |||
// generate inward spiraling image | // generate inward spiraling image | |||
void m_flatphoto(GtkWidget *, cchar *); | void m_flatphoto(GtkWidget *, ch *); | |||
// flatten photo of a curved surface | // flatten photo of a curved surface | |||
// image edit functions - Combine menu (f.comb.cc) | // image edit functions - Combine menu (f.comb.cc) | |||
void m_HDR(GtkWidget *, cchar *); | void m_HDR(GtkWidget *, ch *); | |||
// make HDR combined image | // make HDR combined image | |||
void m_HDF(GtkWidget *, cchar *); | void m_HDF(GtkWidget *, ch *); | |||
// make HDF combined image | // make HDF combined image | |||
void m_stack_paint(GtkWidget *, cchar *); | void m_stack_paint(GtkWidget *, ch *); | |||
// stack / paint image | // stack / paint image | |||
void m_stack_noise(GtkWidget *, cchar *); | void m_stack_noise(GtkWidget *, ch *); | |||
// stack / noise reduction | // stack / noise reduction | |||
void m_stack_layer(GtkWidget *, cchar *); | void m_stack_layer(GtkWidget *, ch *); | |||
// stack / layer paint image | // stack / layer paint image | |||
void m_stack_split(GtkWidget *, cchar *); | void m_stack_split(GtkWidget *, ch *); | |||
// stack / split (sliding image split) | // stack / split (sliding image split) | |||
void m_image_diffs(GtkWidget *, cchar *); | void m_image_diffs(GtkWidget *, ch *); | |||
// show differences between 2 images | // show differences between 2 images | |||
void m_pano_horz(GtkWidget *, cchar *); | void m_pano_horz(GtkWidget *, ch *); | |||
// make panorama combined image | // make panorama combined image | |||
void m_pano_vert(GtkWidget *, cchar *); | void m_pano_vert(GtkWidget *, ch *); | |||
// make vertical panorama | // make vertical panorama | |||
void m_cim_show_files(GtkWidget *, cchar *); | void m_cim_show_files(GtkWidget *, ch *); | |||
// show input files for cim edit function | // show input files for cim edit function | |||
// image edit functions - mashup and image_table (f.mashup.cc) | // image edit functions - mashup and image_table (f.mashup.cc) | |||
void m_mashup(GtkWidget *, cchar *); | void m_mashup(GtkWidget *, ch *); | |||
// arrange images and text in custom layout | // arrange images and text in custom layout | |||
void m_image_table(GtkWidget *, cchar *); | void m_image_table(GtkWidget *, ch *); | |||
// combine images into a table layout | // combine images into a table layout | |||
void image_table_Lclick_func(int mx, int my); // table image click function | void image_table_Lclick_func(int mx, int my); // table image click function | |||
// batch menu functions (f.batch.cc) | // batch menu functions (f.batch.cc) | |||
void m_batch_convert(GtkWidget *, cchar *); | void m_batch_convert(GtkWidget *, ch *); | |||
// rename/convert/resize/export image files | // rename/convert/resize/export image files | |||
void m_batch_copy_move(GtkWidget *, cchar *); | void m_batch_copy_move(GtkWidget *, ch *); | |||
// copy/move image files to new folder | // copy/move image files to new folder | |||
void m_batch_upright(GtkWidget *, cchar *); | void m_batch_upright(GtkWidget *, ch *); | |||
// upright rotated image files | // upright rotated image files | |||
void m_batch_deltrash(GtkWidget *, cchar *); | void m_batch_deltrash(GtkWidget *, ch *); | |||
// delete or trash selected files | // delete or trash selected files | |||
void m_batch_RAW(GtkWidget *, cchar *); | void m_batch_RAW(GtkWidget *, ch *); | |||
// convert RAW files using Raw Therapee | // convert RAW files using Raw Therapee | |||
void m_batch_overlay(GtkWidget *, cchar *); | void m_batch_overlay(GtkWidget *, ch *); | |||
// add overlay image to selected host images | // add overlay image to selected host images | |||
void m_burn_DVD(GtkWidget *, cchar *); | void m_burn_DVD(GtkWidget *, ch *); | |||
// burn selected images to CD/DVD | // burn selected images to CD/DVD | |||
void m_export_filelist(GtkWidget *, cchar *); | void m_export_filelist(GtkWidget *, ch *); | |||
// create file of selected image files | // create file of selected image files | |||
void m_export_files(GtkWidget *, cchar *); | void m_export_files(GtkWidget *, ch *); | |||
// export image files to a folder | // export image files to a folder | |||
void m_edit_script(GtkWidget *, cchar *); | void m_edit_script(GtkWidget *, ch *); | |||
// build script file with N edit funcs | // build script file with N edit funcs | |||
void edit_script_addfunc(editfunc *); // edit_done() hook to add script func | void edit_script_addfunc(editfunc *); // edit_done() hook to add script func | |||
void m_run_script(GtkWidget *, cchar *); | void m_run_script(GtkWidget *, ch *); | |||
// run script on current image file | // run script on current image file | |||
void m_batch_script(GtkWidget *, cchar *); | void m_batch_script(GtkWidget *, ch *); | |||
// run script on batch of image files | // run script on batch of image files | |||
int batch_sharp_func(PXM *pxm, int amount, int thresh); // callable sharpen func for batch funcs | int batch_sharp_func(PXM *pxm, int amount, int thresh); // callable sharpen func for batch funcs | |||
// tools menu functions (f.tools.cc) | // tools menu functions (f.tools.cc) | |||
void m_index(GtkWidget *, cchar *); // rebuild image index and thumbnails | void m_index(GtkWidget *, ch *); // rebuild image index and thumbnails | |||
void index_rebuild(int level, int keepopen); // index rebuild function | void index_rebuild(int level, int keepopen); // index rebuild function | |||
void m_quick_index(GtkWidget *, cchar *); | void m_quick_index(GtkWidget *, ch *); | |||
// quick incremental index, no UI | // quick incremental index, no UI | |||
void m_move_fotoxx_home(GtkWidget *, cchar *); | void m_move_fotoxx_home(GtkWidget *, ch *); | |||
// move fotoxx home folder | // move fotoxx home folder | |||
void m_settings(GtkWidget *, cchar *); | void m_settings(GtkWidget *, ch *); | |||
// user preferences and settings | // user preferences and settings | |||
void m_KB_shortcuts(GtkWidget *, cchar *); | void m_KB_shortcuts(GtkWidget *, ch *); | |||
// edit KB shortcuts, update file | // edit KB shortcuts, update file | |||
void KB_shortcuts_load(); // load KB shortcuts at startup time | void KB_shortcuts_load(); // load KB shortcuts at startup time | |||
void KB_shortcuts_merge(); // merge user and package shortcuts | void KB_shortcuts_merge(); // merge user and package shortcuts | |||
void m_RGB_dist(GtkWidget *, cchar *); // show brightness distribution graph | void m_RGB_dist(GtkWidget *, ch *); // show brightness distribution graph | |||
void RGB_dist_graph(GtkWidget *drawin, cairo_t *cr, int *); // draw brightness distribution graph | void RGB_dist_graph(GtkWidget *drawin, cairo_t *cr, int *); // draw brightness distribution graph | |||
void brightness_scale(GtkWidget *drawarea, cairo_t *cr, int *); // draw black to white horizontal band | void brightness_scale(GtkWidget *drawarea, cairo_t *cr, int *); // draw black to white horizontal band | |||
void m_magnify(GtkWidget *, cchar *); | void m_magnify(GtkWidget *, ch *); | |||
// magnify image within a radius of the mouse | // magnify image within a radius of the mouse | |||
void m_duplicates(GtkWidget *, cchar *); | void m_duplicates(GtkWidget *, ch *); | |||
// find duplicate image files | // find duplicate image files | |||
void m_measure_image(GtkWidget *, cchar *); | void m_measure_image(GtkWidget *, ch *); | |||
// measure distances within an image | // measure distances within an image | |||
void m_show_RGB(GtkWidget *, cchar *); | void m_show_RGB(GtkWidget *, ch *); | |||
// show RGB values at mouse click | // show RGB values at mouse click | |||
void m_popup_text(GtkWidget *, cchar *); | void m_popup_text(GtkWidget *, ch *); | |||
// show popup text for edit widget insertion | // show popup text for edit widget insertion | |||
void m_calibrate_printer(GtkWidget *, cchar *); | void m_calibrate_printer(GtkWidget *, ch *); | |||
// calibrate printer colors | // calibrate printer colors | |||
void print_calibrated(); // print image with adjusted colors | void print_calibrated(); // print image with adjusted colors | |||
void m_grid_settings(GtkWidget *, cchar *); | void m_grid_settings(GtkWidget *, ch *); | |||
// grid lines settings dialog | // grid lines settings dialog | |||
void m_toggle_grid(GtkWidget *, cchar *); | void m_toggle_grid(GtkWidget *, ch *); | |||
// toggle grid lines on and off | // toggle grid lines on and off | |||
void m_line_color(GtkWidget *, cchar *); | void m_line_color(GtkWidget *, ch *); | |||
// foreground line color (area/mouse/crop...) | // foreground line color (area/mouse/crop...) | |||
void m_darkbrite(GtkWidget *, cchar *); | void m_darkbrite(GtkWidget *, ch *); | |||
// highlight the darkest and brightest pixels | // highlight the darkest and brightest pixels | |||
void darkbrite_paint(); // paint function called from Fpaint() | void darkbrite_paint(); // paint function called from Fpaint() | |||
void m_monitor_color(GtkWidget *, cchar *); | void m_monitor_color(GtkWidget *, ch *); | |||
// check monitor brightness and color | // check monitor brightness and color | |||
void m_resources(GtkWidget *, cchar *); | void m_resources(GtkWidget *, ch *); | |||
// report CPU and memory usage | // report CPU and memory usage | |||
void m_zmalloc_report(GtkWidget *, cchar *); | void m_zmalloc_report(GtkWidget *, ch *); | |||
// popup report, zmalloc allocations by tag | // popup report, zmalloc allocations by tag | |||
void m_zmalloc_growth(GtkWidget *, cchar *); | void m_zmalloc_growth(GtkWidget *, ch *); | |||
// same, only tags with allocation growth | // same, only tags with allocation growth | |||
void m_mouse_events(GtkWidget *, cchar *); | void m_mouse_events(GtkWidget *, ch *); | |||
// show mouse events popup text | // show mouse events popup text | |||
void m_appimage_files(GtkWidget *, cchar *); | void m_appimage_files(GtkWidget *, ch *); | |||
// list files in appimage container | // list files in appimage container | |||
void m_appimage_unstall(GtkWidget *, cchar *); | void m_appimage_unstall(GtkWidget *, ch *); | |||
// uninstall appimage package | // uninstall appimage package | |||
void m_zappcrash_test(GtkWidget *, cchar *); | void m_zappcrash_test(GtkWidget *, ch *); | |||
// zappcrash test function | // zappcrash test function | |||
End of changes. 121 change blocks. | ||||
1071 lines changed or deleted | 1074 lines changed or added |