Merge branch 'dev' into tone-equalizer
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
#include <gtkmm.h>
|
||||
@@ -171,11 +172,13 @@ protected:
|
||||
FilmNegative* filmNegative;
|
||||
PdSharpening* pdSharpening;
|
||||
std::vector<PParamsChangeListener*> paramcListeners;
|
||||
std::unordered_map<Gtk::Widget *, FoldableToolPanel *>
|
||||
expanderToToolPanelMap;
|
||||
|
||||
rtengine::StagedImageProcessor* ipc;
|
||||
|
||||
std::vector<ToolPanel*> toolPanels;
|
||||
std::vector<FoldableToolPanel*> favorites;
|
||||
std::vector<FoldableToolPanel*> favoritesToolPanels;
|
||||
ToolVBox* favoritePanel;
|
||||
ToolVBox* exposurePanel;
|
||||
ToolVBox* detailsPanel;
|
||||
@@ -186,7 +189,7 @@ protected:
|
||||
ToolVBox* locallabPanel;
|
||||
ToolBar* toolBar;
|
||||
|
||||
TextOrIcon* toiF;
|
||||
std::unique_ptr<TextOrIcon> toiF;
|
||||
TextOrIcon* toiE;
|
||||
TextOrIcon* toiD;
|
||||
TextOrIcon* toiC;
|
||||
@@ -199,7 +202,7 @@ protected:
|
||||
Gtk::Image* imgPanelEnd[8];
|
||||
Gtk::Box* vbPanelEnd[8];
|
||||
|
||||
Gtk::ScrolledWindow* favoritePanelSW;
|
||||
std::unique_ptr<Gtk::ScrolledWindow> favoritePanelSW;
|
||||
Gtk::ScrolledWindow* exposurePanelSW;
|
||||
Gtk::ScrolledWindow* detailsPanelSW;
|
||||
Gtk::ScrolledWindow* colorPanelSW;
|
||||
@@ -211,12 +214,17 @@ protected:
|
||||
std::vector<MyExpander*> expList;
|
||||
|
||||
bool hasChanged;
|
||||
bool batch;
|
||||
|
||||
void addPanel(Gtk::Box* where, FoldableToolPanel* panel, int level = 1);
|
||||
void foldThemAll(GdkEventButton* event);
|
||||
void updateVScrollbars(bool hide);
|
||||
void addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1);
|
||||
void notebookPageChanged(Gtk::Widget* page, guint page_num);
|
||||
void updatePanelTools(
|
||||
Gtk::Widget *page,
|
||||
const std::vector<Glib::ustring> &favorites,
|
||||
bool cloneFavoriteTools);
|
||||
|
||||
private:
|
||||
EditDataProvider *editDataProvider;
|
||||
@@ -225,12 +233,107 @@ private:
|
||||
Gtk::Widget* prevPage;
|
||||
|
||||
public:
|
||||
enum class Panel {
|
||||
FAVORITE,
|
||||
EXPOSURE,
|
||||
DETAILS,
|
||||
COLOR,
|
||||
ADVANCED,
|
||||
LOCALLAB,
|
||||
TRANSFORM_PANEL,
|
||||
RAW,
|
||||
};
|
||||
|
||||
enum class Tool {
|
||||
TONE_CURVE,
|
||||
SHADOWS_HIGHLIGHTS,
|
||||
IMPULSE_DENOISE,
|
||||
DEFRINGE_TOOL,
|
||||
SPOT,
|
||||
DIR_PYR_DENOISE,
|
||||
EPD,
|
||||
SHARPENING_TOOL,
|
||||
LOCAL_CONTRAST,
|
||||
SHARPEN_EDGE,
|
||||
SHARPEN_MICRO,
|
||||
L_CURVE,
|
||||
RGB_CURVES,
|
||||
COLOR_TONING,
|
||||
LENS_GEOM,
|
||||
LENS_PROF,
|
||||
DISTORTION,
|
||||
ROTATE,
|
||||
VIBRANCE,
|
||||
COLOR_APPEARANCE,
|
||||
WHITE_BALANCE,
|
||||
VIGNETTING,
|
||||
RETINEX_TOOL,
|
||||
GRADIENT,
|
||||
LOCALLAB,
|
||||
PC_VIGNETTE,
|
||||
PERSPECTIVE,
|
||||
CA_CORRECTION,
|
||||
CH_MIXER,
|
||||
BLACK_WHITE,
|
||||
RESIZE_TOOL,
|
||||
PR_SHARPENING,
|
||||
CROP_TOOL,
|
||||
ICM,
|
||||
WAVELET,
|
||||
DIR_PYR_EQUALIZER,
|
||||
HSV_EQUALIZER,
|
||||
FILM_SIMULATION,
|
||||
SOFT_LIGHT,
|
||||
DEHAZE,
|
||||
SENSOR_BAYER,
|
||||
SENSOR_XTRANS,
|
||||
BAYER_PROCESS,
|
||||
XTRANS_PROCESS,
|
||||
BAYER_PREPROCESS,
|
||||
PREPROCESS,
|
||||
DARKFRAME_TOOL,
|
||||
FLATFIELD_TOOL,
|
||||
RAW_CA_CORRECTION,
|
||||
RAW_EXPOSURE,
|
||||
PREPROCESS_WB,
|
||||
BAYER_RAW_EXPOSURE,
|
||||
XTRANS_RAW_EXPOSURE,
|
||||
FATTAL,
|
||||
FILM_NEGATIVE,
|
||||
PD_SHARPENING,
|
||||
};
|
||||
|
||||
struct ToolTree {
|
||||
Tool id;
|
||||
std::vector<ToolTree> children;
|
||||
};
|
||||
|
||||
using ToolLayout = std::unordered_map<Panel, const std::vector<ToolTree> &, ScopedEnumHash>;
|
||||
|
||||
CoarsePanel* coarse;
|
||||
Gtk::Notebook* toolPanelNotebook;
|
||||
|
||||
ToolPanelCoordinator(bool batch = false);
|
||||
~ToolPanelCoordinator () override;
|
||||
|
||||
static const ToolLayout &getDefaultToolLayout();
|
||||
/**
|
||||
* Gets the tool with the provided tool name.
|
||||
*
|
||||
* @param name The tool name as a raw string.
|
||||
* @return The tool.
|
||||
* @throws std::out_of_range If the name is not recognized.
|
||||
*/
|
||||
static Tool getToolFromName(const std::string &name);
|
||||
/**
|
||||
* Gets the tool name for the tool's ToolPanel as a string.
|
||||
*
|
||||
* @param tool The name as a raw string, or an empty string if the tool is
|
||||
* unknown.
|
||||
*/
|
||||
static std::string getToolName(Tool tool);
|
||||
static bool isFavoritable(Tool tool);
|
||||
|
||||
bool getChangedState()
|
||||
{
|
||||
return hasChanged;
|
||||
@@ -248,6 +351,8 @@ public:
|
||||
const LUTu& histLRETI
|
||||
);
|
||||
void foldAllButOne(Gtk::Box* parent, FoldableToolPanel* openedSection);
|
||||
void updateToolLocations(
|
||||
const std::vector<Glib::ustring> &favorites, bool cloneFavoriteTools);
|
||||
|
||||
// multiple listeners can be added that are notified on changes (typical: profile panel and the history)
|
||||
void addPParamsChangeListener(PParamsChangeListener* pp)
|
||||
@@ -262,7 +367,7 @@ public:
|
||||
void unsetTweakOperator (rtengine::TweakOperator *tOperator) override;
|
||||
|
||||
// FilmNegProvider interface
|
||||
void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false) override;
|
||||
void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false, bool isGainMapSupported = false) override;
|
||||
|
||||
// profilechangelistener interface
|
||||
void profileChange(
|
||||
@@ -309,7 +414,7 @@ public:
|
||||
}
|
||||
|
||||
//DFProvider interface
|
||||
rtengine::RawImage* getDF() override;
|
||||
const rtengine::RawImage* getDF() override;
|
||||
|
||||
//FFProvider interface
|
||||
rtengine::RawImage* getFF() override;
|
||||
@@ -355,6 +460,25 @@ public:
|
||||
|
||||
void setEditProvider(EditDataProvider *provider);
|
||||
|
||||
protected:
|
||||
static std::unordered_map<std::string, Tool> toolNamesReverseMap;
|
||||
|
||||
std::unordered_map<Tool, const ToolTree *, ScopedEnumHash>
|
||||
toolToDefaultToolTreeMap;
|
||||
|
||||
FoldableToolPanel *getFoldableToolPanel(Tool tool) const;
|
||||
FoldableToolPanel *getFoldableToolPanel(const ToolTree &tool) const;
|
||||
void updateFavoritesPanel(
|
||||
const std::vector<Glib::ustring> &favorites, bool cloneFavoriteTools);
|
||||
template <typename T>
|
||||
typename std::enable_if<std::is_convertible<T, const ToolTree>::value, void>::type
|
||||
updateToolPanel(
|
||||
Gtk::Box *panelBox,
|
||||
const std::vector<T> &children,
|
||||
int level,
|
||||
const std::unordered_set<Tool, ScopedEnumHash> &favorites,
|
||||
bool cloneFavoriteTools);
|
||||
|
||||
private:
|
||||
IdleRegister idle_register;
|
||||
};
|
||||
|
Reference in New Issue
Block a user