diff --git a/data/strings/en.ini b/data/strings/en.ini index ec8820c47..1686fa799 100644 --- a/data/strings/en.ini +++ b/data/strings/en.ini @@ -1121,6 +1121,8 @@ color = Outline Color: outside = Outside inside = Inside circle = Circle +horizontal = Horizontal +vertical = Vertical square = Square bg_color = Background Color: diff --git a/data/widgets/outline.xml b/data/widgets/outline.xml index 90a782ad4..9d2723b87 100644 --- a/data/widgets/outline.xml +++ b/data/widgets/outline.xml @@ -12,6 +12,8 @@ + + diff --git a/src/app/commands/filters/cmd_outline.cpp b/src/app/commands/filters/cmd_outline.cpp index 471caee98..2e7e439e2 100644 --- a/src/app/commands/filters/cmd_outline.cpp +++ b/src/app/commands/filters/cmd_outline.cpp @@ -79,6 +79,8 @@ public: m_panel.inside()->setSelected(m_filter.place() == OutlineFilter::Place::Inside); m_panel.circle()->setSelected(m_filter.shape() == OutlineFilter::Shape::Circle); m_panel.square()->setSelected(m_filter.shape() == OutlineFilter::Shape::Square); + m_panel.horizontal()->setSelected(m_filter.shape() == OutlineFilter::Shape::Horizontal); + m_panel.vertical()->setSelected(m_filter.shape() == OutlineFilter::Shape::Vertical); m_panel.color()->Change.connect(&OutlineWindow::onColorChange, this); m_panel.bgColor()->Change.connect(&OutlineWindow::onBgColorChange, this); @@ -86,6 +88,8 @@ public: m_panel.inside()->Click.connect([this](ui::Event&){ onPlaceChange(OutlineFilter::Place::Inside); }); m_panel.circle()->Click.connect([this](ui::Event&){ onShapeChange(OutlineFilter::Shape::Circle); }); m_panel.square()->Click.connect([this](ui::Event&){ onShapeChange(OutlineFilter::Shape::Square); }); + m_panel.horizontal()->Click.connect([this](ui::Event&){ onShapeChange(OutlineFilter::Shape::Horizontal); }); + m_panel.vertical()->Click.connect([this](ui::Event&){ onShapeChange(OutlineFilter::Shape::Vertical); }); } private: diff --git a/src/filters/outline_filter.cpp b/src/filters/outline_filter.cpp index 12bf93232..ce30c7a16 100644 --- a/src/filters/outline_filter.cpp +++ b/src/filters/outline_filter.cpp @@ -25,8 +25,11 @@ using namespace doc; namespace { - static const int kCircleMatrix = 0272; - static const int kSquareMatrix = 0777; + static const int kMatrices[int(OutlineFilter::Shape::NShapes)] = + { 0272, // Circle + 0777, // Square + 0070, // Horizontal + 0202 }; // Vertical struct GetPixelsDelegate { color_t bgColor; @@ -37,8 +40,7 @@ namespace { void init(color_t bgColor, OutlineFilter::Shape shape) { this->bgColor = bgColor; - this->matrix = (shape == OutlineFilter::Shape::Circle ? kCircleMatrix: - kSquareMatrix); + this->matrix = kMatrices[int(shape)]; } void reset() { diff --git a/src/filters/outline_filter.h b/src/filters/outline_filter.h index 1dfa07569..1587ee5d2 100644 --- a/src/filters/outline_filter.h +++ b/src/filters/outline_filter.h @@ -17,7 +17,7 @@ namespace filters { class OutlineFilter : public Filter { public: enum class Place { Outside, Inside }; - enum class Shape { Circle, Square }; + enum class Shape { Circle, Square, Horizontal, Vertical, NShapes }; OutlineFilter();