summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-11-02 23:14:28 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-11-02 23:14:28 +0000
commit08382df305f91a07349031e785500eb7be34872c (patch)
treea47356965661c877b46ac2a26ebc017638291477 /src
parentRemove unrelated code (diff)
downloadinkscape-08382df305f91a07349031e785500eb7be34872c.tar.gz
inkscape-08382df305f91a07349031e785500eb7be34872c.zip
Move finctions away object sets
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-powerclip.cpp19
-rw-r--r--src/live_effects/lpe-powerclip.h2
-rw-r--r--src/live_effects/lpe-powermask.cpp18
-rw-r--r--src/live_effects/lpe-powermask.h3
-rw-r--r--src/object-set.h2
-rw-r--r--src/selection-chemistry.cpp26
-rw-r--r--src/verbs.cpp11
7 files changed, 54 insertions, 27 deletions
diff --git a/src/live_effects/lpe-powerclip.cpp b/src/live_effects/lpe-powerclip.cpp
index 40a9cdbfb..18276270d 100644
--- a/src/live_effects/lpe-powerclip.cpp
+++ b/src/live_effects/lpe-powerclip.cpp
@@ -395,6 +395,25 @@ LPEPowerClip::flattenClip(SPItem * clip_data, Geom::PathVector &path_in)
}
}
+void sp_inverse_powerclip(Inkscape::Selection *sel) {
+ if (!sel->isEmpty()) {
+ auto selList = sel->items();
+ for(auto i = boost::rbegin(selList); i != boost::rend(selList); ++i) {
+ SPLPEItem* lpeitem = dynamic_cast<SPLPEItem*>(*i);
+ if (lpeitem) {
+ Effect::createAndApply(POWERCLIP, SP_ACTIVE_DOCUMENT, lpeitem);
+ Effect* lpe = lpeitem->getCurrentLPE();
+ lpe->getRepr()->setAttribute("is_inverse", "false");
+ lpe->getRepr()->setAttribute("is_visible", "true");
+ lpe->getRepr()->setAttribute("inverse", "true");
+ lpe->getRepr()->setAttribute("flatten", "false");
+ lpe->getRepr()->setAttribute("hide_clip", "false");
+ dynamic_cast<LPEPowerClip *>(lpe)->convertShapes();
+ }
+ }
+ }
+}
+
}; //namespace LivePathEffect
}; /* namespace Inkscape */
diff --git a/src/live_effects/lpe-powerclip.h b/src/live_effects/lpe-powerclip.h
index 38485b798..6f99d220f 100644
--- a/src/live_effects/lpe-powerclip.h
+++ b/src/live_effects/lpe-powerclip.h
@@ -38,6 +38,8 @@ private:
bool convert_shapes;
};
+void sp_inverse_powerclip(Inkscape::Selection *sel);
+
} //namespace LivePathEffect
} //namespace Inkscape
#endif
diff --git a/src/live_effects/lpe-powermask.cpp b/src/live_effects/lpe-powermask.cpp
index 05510f258..b7c88584b 100644
--- a/src/live_effects/lpe-powermask.cpp
+++ b/src/live_effects/lpe-powermask.cpp
@@ -303,6 +303,24 @@ LPEPowerMask::doOnRemove (SPLPEItem const* lpeitem)
}
}
+void sp_inverse_powerclip(Inkscape::Selection *sel) {
+ if (!sel->isEmpty()) {
+ auto selList = sel->items();
+ for(auto i = boost::rbegin(selList); i != boost::rend(selList); ++i) {
+ SPLPEItem* lpeitem = dynamic_cast<SPLPEItem*>(*i);
+ if (lpeitem) {
+ Effect::createAndApply(POWERMASK, SP_ACTIVE_DOCUMENT, lpeitem);
+ Effect* lpe = lpeitem->getCurrentLPE();
+ lpe->getRepr()->setAttribute("invert", "false");
+ lpe->getRepr()->setAttribute("is_visible", "true");
+ lpe->getRepr()->setAttribute("hide_mask", "false");
+ lpe->getRepr()->setAttribute("background", "true");
+ lpe->getRepr()->setAttribute("background_color", "#ffffffff");
+ }
+ }
+ }
+}
+
}; //namespace LivePathEffect
}; /* namespace Inkscape */
diff --git a/src/live_effects/lpe-powermask.h b/src/live_effects/lpe-powermask.h
index a54424e2f..d2d87fd41 100644
--- a/src/live_effects/lpe-powermask.h
+++ b/src/live_effects/lpe-powermask.h
@@ -35,6 +35,9 @@ private:
Geom::Path mask_box;
};
+void sp_inverse_powermask(Inkscape::Selection *sel);
+
} //namespace LivePathEffect
} //namespace Inkscape
+
#endif
diff --git a/src/object-set.h b/src/object-set.h
index 2e57966e6..a8061593a 100644
--- a/src/object-set.h
+++ b/src/object-set.h
@@ -422,7 +422,7 @@ public:
void tile(bool apply = true); //"Object to Pattern"
void untile();
void createBitmapCopy();
- void setMask(bool apply_clip_path, bool apply_to_layer = false, bool skip_undo = false, bool inverse = false);
+ void setMask(bool apply_clip_path, bool apply_to_layer = false, bool skip_undo = false);
void editMask(bool clip);
void unsetMask(const bool apply_clip_path, const bool skip_undo = false);
void setClipGroup();
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp
index 43e7d8af5..0bd611163 100644
--- a/src/selection-chemistry.cpp
+++ b/src/selection-chemistry.cpp
@@ -95,8 +95,6 @@ SPCycleType SP_CYCLING = SP_CYCLE_FOCUS;
#include "ui/tool/control-point-selection.h"
#include "ui/tool/multi-path-manipulator.h"
#include "live_effects/effect.h"
-#include "live_effects/lpe-powerclip.h"
-#include "live_effects/lpe-powermask.h"
#include "live_effects/parameter/originalpath.h"
#include "layer-manager.h"
#include "object-set.h"
@@ -3864,7 +3862,7 @@ void ObjectSet::setClipGroup()
* If \a apply_clip_path parameter is true, clipPath is created, otherwise mask
*
*/
- void ObjectSet::setMask(bool apply_clip_path, bool apply_to_layer, bool skip_undo, bool inverse)
+ void ObjectSet::setMask(bool apply_clip_path, bool apply_to_layer, bool skip_undo)
{
if(!desktop() && apply_to_layer)
return;
@@ -4018,27 +4016,7 @@ void ObjectSet::setClipGroup()
}
apply_mask_to->setAttribute(attributeName, Glib::ustring("url(#") + mask_id + ')');
- if (inverse) {
- using namespace Inkscape::LivePathEffect;
- if (apply_clip_path) {
- Effect::createAndApply(POWERCLIP, doc, item);
- Effect* lpe = SP_LPE_ITEM(item)->getCurrentLPE();
- lpe->getRepr()->setAttribute("is_inverse", "false");
- lpe->getRepr()->setAttribute("is_visible", "true");
- lpe->getRepr()->setAttribute("inverse", "true");
- lpe->getRepr()->setAttribute("flatten", "false");
- lpe->getRepr()->setAttribute("hide_clip", "false");
- dynamic_cast<LPEPowerClip *>(lpe)->convertShapes();
- } else {
- Effect::createAndApply(POWERMASK, doc, item);
- Effect* lpe = SP_LPE_ITEM(item)->getCurrentLPE();
- lpe->getRepr()->setAttribute("invert", "false");
- lpe->getRepr()->setAttribute("is_visible", "true");
- lpe->getRepr()->setAttribute("hide_mask", "false");
- lpe->getRepr()->setAttribute("background", "true");
- lpe->getRepr()->setAttribute("background_color", "#ffffffff");
- }
- }
+
}
for (std::vector<SPItem*>::const_iterator i = items_to_delete.begin(); i != items_to_delete.end(); ++i) {
diff --git a/src/verbs.cpp b/src/verbs.cpp
index 962196d06..27fc29dd4 100644
--- a/src/verbs.cpp
+++ b/src/verbs.cpp
@@ -85,6 +85,9 @@
#include "ui/icon-names.h"
#include "ui/tools/node-tool.h"
#include "ui/dialog/save-template-dialog.h"
+#include "live_effects/effect.h"
+#include "live_effects/lpe-powerclip.h"
+#include "live_effects/lpe-powermask.h"
using Inkscape::DocumentUndo;
using Inkscape::UI::Dialog::ActionAlign;
@@ -1593,7 +1596,9 @@ void ObjectVerb::perform( SPAction *action, void *data)
sel->setMask(false, false);
break;
case SP_VERB_OBJECT_SET_INVERSE_MASK:
- sel->setMask(false, false, false, true);
+ sel->setMask(false, false);
+ using Inkscape::LivePathEffect;
+ sp_inverse_powermask(sp_action_get_selection(action));
break;
case SP_VERB_OBJECT_EDIT_MASK:
sel->editMask(false);
@@ -1605,7 +1610,9 @@ void ObjectVerb::perform( SPAction *action, void *data)
sel->setMask(true, false);
break;
case SP_VERB_OBJECT_SET_INVERSE_CLIPPATH:
- sel->setMask(true, false, false, true);
+ sel->setMask(true, false);
+ using Inkscape::LivePathEffect;
+ sp_inverse_powerclip(sp_action_get_selection(action));
break;
case SP_VERB_OBJECT_CREATE_CLIP_GROUP:
sel->setClipGroup();