summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/knot-holder-entity.cpp38
-rw-r--r--src/knot-holder-entity.h33
2 files changed, 31 insertions, 40 deletions
diff --git a/src/knot-holder-entity.cpp b/src/knot-holder-entity.cpp
index e8f97e453..75f36089c 100644
--- a/src/knot-holder-entity.cpp
+++ b/src/knot-holder-entity.cpp
@@ -173,40 +173,39 @@ static Geom::Point sp_pattern_knot_get(SPPattern const *pat, gdouble x, gdouble
}
bool
-PatternKnotHolderEntityXY::knot_missing() const
+PatternKnotHolderEntity::knot_missing() const
{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
+ SPPattern *pat = _pattern();
return (pat == nullptr);
}
-bool
-PatternKnotHolderEntityAngle::knot_missing() const
+SPPattern*
+PatternKnotHolderEntity::_pattern() const
{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
- return (pat == nullptr);
-}
-
-bool
-PatternKnotHolderEntityScale::knot_missing() const
-{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
- return (pat == nullptr);
+ return _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
}
Geom::Point
PatternKnotHolderEntityXY::knot_get() const
{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
+ SPPattern *pat = _pattern();
return sp_pattern_knot_get(pat, 0, 0);
}
Geom::Point
PatternKnotHolderEntityAngle::knot_get() const
{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
+ SPPattern *pat = _pattern();
return sp_pattern_knot_get(pat, pat->width(), 0);
}
+Geom::Point
+PatternKnotHolderEntityScale::knot_get() const
+{
+ SPPattern *pat = _pattern();
+ return sp_pattern_knot_get(pat, pat->width(), pat->height());
+}
+
void
PatternKnotHolderEntityAngle::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
@@ -234,7 +233,7 @@ PatternKnotHolderEntityAngle::knot_set(Geom::Point const &p, Geom::Point const &
void
PatternKnotHolderEntityScale::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
+ SPPattern *pat = _pattern();
// FIXME: this snapping should be done together with knowing whether control was pressed. If GDK_CONTROL_MASK, then constrained snapping should be used.
Geom::Point p_snapped = snap_knot_position(p, state);
@@ -262,13 +261,6 @@ PatternKnotHolderEntityScale::knot_set(Geom::Point const &p, Geom::Point const &
}
-Geom::Point
-PatternKnotHolderEntityScale::knot_get() const
-{
- SPPattern *pat = _fill ? SP_PATTERN(item->style->getFillPaintServer()) : SP_PATTERN(item->style->getStrokePaintServer());
- return sp_pattern_knot_get(pat, pat->width(), pat->height());
-}
-
/* Filter manipulation */
void FilterKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state)
{
diff --git a/src/knot-holder-entity.h b/src/knot-holder-entity.h
index 1aa686f65..92c4d5536 100644
--- a/src/knot-holder-entity.h
+++ b/src/knot-holder-entity.h
@@ -24,6 +24,7 @@
class SPItem;
class SPKnot;
class SPDesktop;
+class SPPattern;
class KnotHolder;
namespace Inkscape {
@@ -106,38 +107,36 @@ protected:
/* pattern manipulation */
-class PatternKnotHolderEntityXY : public KnotHolderEntity {
+class PatternKnotHolderEntity : public KnotHolderEntity {
public:
- PatternKnotHolderEntityXY(bool fill) : KnotHolderEntity(), _fill(fill) {}
+ PatternKnotHolderEntity(bool fill) : KnotHolderEntity(), _fill(fill) {}
bool knot_missing() const override;
- Geom::Point knot_get() const override;
void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {};
- void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) override;
-private:
+protected:
// true if the entity tracks fill, false for stroke
bool _fill;
+ SPPattern *_pattern() const;
};
-class PatternKnotHolderEntityAngle : public KnotHolderEntity {
+class PatternKnotHolderEntityXY : public PatternKnotHolderEntity {
public:
- PatternKnotHolderEntityAngle(bool fill) : KnotHolderEntity(), _fill(fill) {}
- bool knot_missing() const override;
+ PatternKnotHolderEntityXY(bool fill) : PatternKnotHolderEntity(fill) {}
Geom::Point knot_get() const override;
- void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {};
void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) override;
-private:
- bool _fill;
};
-class PatternKnotHolderEntityScale : public KnotHolderEntity {
+class PatternKnotHolderEntityAngle : public PatternKnotHolderEntity {
public:
- PatternKnotHolderEntityScale(bool fill) : KnotHolderEntity(), _fill(fill) {}
- bool knot_missing() const override;
+ PatternKnotHolderEntityAngle(bool fill) : PatternKnotHolderEntity(fill) {}
+ Geom::Point knot_get() const override;
+ void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) override;
+};
+
+class PatternKnotHolderEntityScale : public PatternKnotHolderEntity {
+public:
+ PatternKnotHolderEntityScale(bool fill) : PatternKnotHolderEntity(fill) {}
Geom::Point knot_get() const override;
- void knot_ungrabbed(Geom::Point const &p, Geom::Point const &origin, guint state) override {};
void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) override;
-private:
- bool _fill;
};
/* Filter manipulation */