"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "fotoxx.h" between
fotoxx-23.0.tar.gz and fotoxx-23.1.tar.gz

About: fotoxx is a program for photo editing and collection management.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)