Add Horizontal and Vertical outline options in OutlineCommand

This commit is contained in:
David Capello 2019-04-11 23:21:14 -03:00
parent 84b44a36ea
commit 61d1e7c46c
5 changed files with 15 additions and 5 deletions

View File

@ -1121,6 +1121,8 @@ color = Outline Color:
outside = Outside outside = Outside
inside = Inside inside = Inside
circle = Circle circle = Circle
horizontal = Horizontal
vertical = Vertical
square = Square square = Square
bg_color = Background Color: bg_color = Background Color:

View File

@ -12,6 +12,8 @@
<vbox> <vbox>
<radio id="circle" text="@.circle" group="1" /> <radio id="circle" text="@.circle" group="1" />
<radio id="square" text="@.square" group="1" /> <radio id="square" text="@.square" group="1" />
<radio id="horizontal" text="@.horizontal" group="1" />
<radio id="vertical" text="@.vertical" group="1" />
</vbox> </vbox>
<vbox> <vbox>
<radio id="outside" text="@.outside" group="2" /> <radio id="outside" text="@.outside" group="2" />

View File

@ -79,6 +79,8 @@ public:
m_panel.inside()->setSelected(m_filter.place() == OutlineFilter::Place::Inside); m_panel.inside()->setSelected(m_filter.place() == OutlineFilter::Place::Inside);
m_panel.circle()->setSelected(m_filter.shape() == OutlineFilter::Shape::Circle); m_panel.circle()->setSelected(m_filter.shape() == OutlineFilter::Shape::Circle);
m_panel.square()->setSelected(m_filter.shape() == OutlineFilter::Shape::Square); 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.color()->Change.connect(&OutlineWindow::onColorChange, this);
m_panel.bgColor()->Change.connect(&OutlineWindow::onBgColorChange, 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.inside()->Click.connect([this](ui::Event&){ onPlaceChange(OutlineFilter::Place::Inside); });
m_panel.circle()->Click.connect([this](ui::Event&){ onShapeChange(OutlineFilter::Shape::Circle); }); 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.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: private:

View File

@ -25,8 +25,11 @@ using namespace doc;
namespace { namespace {
static const int kCircleMatrix = 0272; static const int kMatrices[int(OutlineFilter::Shape::NShapes)] =
static const int kSquareMatrix = 0777; { 0272, // Circle
0777, // Square
0070, // Horizontal
0202 }; // Vertical
struct GetPixelsDelegate { struct GetPixelsDelegate {
color_t bgColor; color_t bgColor;
@ -37,8 +40,7 @@ namespace {
void init(color_t bgColor, OutlineFilter::Shape shape) { void init(color_t bgColor, OutlineFilter::Shape shape) {
this->bgColor = bgColor; this->bgColor = bgColor;
this->matrix = (shape == OutlineFilter::Shape::Circle ? kCircleMatrix: this->matrix = kMatrices[int(shape)];
kSquareMatrix);
} }
void reset() { void reset() {

View File

@ -17,7 +17,7 @@ namespace filters {
class OutlineFilter : public Filter { class OutlineFilter : public Filter {
public: public:
enum class Place { Outside, Inside }; enum class Place { Outside, Inside };
enum class Shape { Circle, Square }; enum class Shape { Circle, Square, Horizontal, Vertical, NShapes };
OutlineFilter(); OutlineFilter();