From e7e6dd1cb5882bbef714396b301af001470c3795 Mon Sep 17 00:00:00 2001 From: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com> Date: Mon, 31 May 2021 11:20:01 -0700 Subject: [PATCH] Clean up rtgui perspective.* and controllines.* Change size_t to std::size_t, remove void from function parameters, use constants to represent the minimum required number of control lines, and change const auto & to const auto. --- rtgui/controllines.cc | 8 ++++---- rtgui/controllines.h | 10 +++++----- rtgui/perspective.cc | 20 +++++++------------- rtgui/perspective.h | 7 ++++++- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/rtgui/controllines.cc b/rtgui/controllines.cc index e4ef9e9f7..84175af28 100644 --- a/rtgui/controllines.cc +++ b/rtgui/controllines.cc @@ -80,17 +80,17 @@ void ControlLineManager::setDrawMode(bool draw) draw_mode = draw; } -size_t ControlLineManager::size(void) const +std::size_t ControlLineManager::size() const { return control_lines.size(); } -size_t ControlLineManager::getHorizontalCount(void) const +std::size_t ControlLineManager::getHorizontalCount() const { return horizontalCount; } -size_t ControlLineManager::getVerticalCount(void) const +std::size_t ControlLineManager::getVerticalCount() const { return verticalCount; } @@ -482,7 +482,7 @@ void ControlLineManager::removeAll(void) callbacks->lineChanged(); } -void ControlLineManager::removeLine(size_t line_id) +void ControlLineManager::removeLine(std::size_t line_id) { if (line_id >= control_lines.size()) { return; diff --git a/rtgui/controllines.h b/rtgui/controllines.h index 578118eb7..81c4c7b8a 100644 --- a/rtgui/controllines.h +++ b/rtgui/controllines.h @@ -52,7 +52,7 @@ protected: bool draw_mode; bool drawing_line; bool edited; - size_t horizontalCount, verticalCount; + std::size_t horizontalCount, verticalCount; Cairo::RefPtr line_icon_h, line_icon_v; Cairo::RefPtr line_icon_h_prelight, line_icon_v_prelight; int prev_obj; @@ -68,7 +68,7 @@ protected: * line, inclusive, the line type is set to vertical. Otherwise, horizontal. */ void autoSetLineType(int object_id); - void removeLine(size_t line_id); + void removeLine(std::size_t line_id); public: class Callbacks @@ -89,9 +89,9 @@ public: bool getEdited(void) const; /** Returns the number of horizontal control lines. */ - size_t getHorizontalCount(void) const; + std::size_t getHorizontalCount() const; /** Returns the number of vertical control lines. */ - size_t getVerticalCount(void) const; + std::size_t getVerticalCount() const; void removeAll(void); /** Sets whether or not the lines are visible and interact-able. */ void setActive(bool active); @@ -101,7 +101,7 @@ public: void setEditProvider(EditDataProvider* provider); void setLines(const std::vector& lines); /** Returns the number of lines. */ - size_t size(void) const; + std::size_t size() const; /** * Allocates a new array and populates it with copies of the control lines. */ diff --git a/rtgui/perspective.cc b/rtgui/perspective.cc index e77c622cd..c845c272b 100644 --- a/rtgui/perspective.cc +++ b/rtgui/perspective.cc @@ -519,22 +519,16 @@ void PerspCorrection::applyControlLines(void) } std::vector control_lines; - int h_count = 0, v_count = 0; double rot = camera_roll->getValue(); double pitch = camera_pitch->getValue(); double yaw = camera_yaw->getValue(); lines->toControlLines(control_lines); - for (unsigned int i = 0; i < lines->size(); i++) { - if (control_lines[i].type == rtengine::ControlLine::HORIZONTAL) { - h_count++; - } else if (control_lines[i].type == rtengine::ControlLine::VERTICAL) { - v_count++; - } - } - lens_geom_listener->autoPerspRequested(v_count > 1, h_count > 1, rot, pitch, - yaw, &control_lines); + lens_geom_listener->autoPerspRequested( + lines->getVerticalCount() >= MIN_VERT_LINES, + lines->getHorizontalCount() >= MIN_HORIZ_LINES, + rot, pitch, yaw, &control_lines); disableListener(); camera_pitch->setValue(pitch); @@ -748,15 +742,15 @@ void PerspCorrection::lineChanged(void) } } -void PerspCorrection::updateApplyDeleteButtons(void) +void PerspCorrection::updateApplyDeleteButtons() { if (batchMode) { return; } bool edit_mode = lines_button_edit->get_active(); - bool enough_lines = lines->getHorizontalCount() >= 2 || lines->getVerticalCount() >= 2; - const auto &tooltip = M("GENERAL_APPLY") + bool enough_lines = lines->getHorizontalCount() >= MIN_HORIZ_LINES || lines->getVerticalCount() >= MIN_VERT_LINES; + const auto tooltip = M("GENERAL_APPLY") + ((edit_mode && !enough_lines) ? "\n\n" + M("TP_PERSPECTIVE_CONTROL_LINE_APPLY_INVALID_TOOLTIP") : ""); lines_button_apply->set_sensitive(edit_mode && enough_lines); diff --git a/rtgui/perspective.h b/rtgui/perspective.h index 3368b6282..404b02010 100644 --- a/rtgui/perspective.h +++ b/rtgui/perspective.h @@ -96,10 +96,15 @@ protected: void tweakParams(rtengine::procparams::ProcParams &pparams) override; void setCamBasedEventsActive (bool active = true); void setFocalLengthValue (const rtengine::procparams::ProcParams* pparams, const rtengine::FramesMetaData* metadata); - void updateApplyDeleteButtons(void); + void updateApplyDeleteButtons(); public: + /** Minimum number of horizontal lines for horizontal/full correction. */ + static constexpr std::size_t MIN_HORIZ_LINES = 2; + /** Minimum number of vertical lines for vertical/full correction. */ + static constexpr std::size_t MIN_VERT_LINES = 2; + PerspCorrection (); void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;