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();