summaryrefslogtreecommitdiffstats
path: root/src/live_effects/lpe-bool.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/live_effects/lpe-bool.h')
-rw-r--r--src/live_effects/lpe-bool.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/live_effects/lpe-bool.h b/src/live_effects/lpe-bool.h
new file mode 100644
index 0000000..4fd0018
--- /dev/null
+++ b/src/live_effects/lpe-bool.h
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Boolean operation live path effect
+ *
+ * Copyright (C) 2016 Michael Soegtrop
+ *
+ * Released under GNU GPL v2+, read the file 'COPYING' for more information.
+ */
+
+#ifndef INKSCAPE_LPE_BOOL_H
+#define INKSCAPE_LPE_BOOL_H
+
+#include "live_effects/effect.h"
+#include "live_effects/parameter/parameter.h"
+#include "live_effects/parameter/originalpath.h"
+#include "live_effects/parameter/bool.h"
+#include "live_effects/parameter/enum.h"
+#include "livarot/LivarotDefs.h"
+
+namespace Inkscape {
+namespace LivePathEffect {
+
+class LPEBool : public Effect {
+public:
+ LPEBool(LivePathEffectObject *lpeobject);
+ ~LPEBool() override;
+
+ void doEffect(SPCurve *curve) override;
+ void doBeforeEffect(SPLPEItem const *lpeitem) override;
+ void resetDefaults(SPItem const *item) override;
+ void doOnVisibilityToggled(SPLPEItem const * /*lpeitem*/) override;
+ void doOnRemove(SPLPEItem const * /*lpeitem*/) override;
+
+ enum bool_op_ex {
+ bool_op_ex_union = bool_op_union,
+ bool_op_ex_inters = bool_op_inters,
+ bool_op_ex_diff = bool_op_diff,
+ bool_op_ex_symdiff = bool_op_symdiff,
+ bool_op_ex_cut = bool_op_cut,
+ bool_op_ex_slice = bool_op_slice,
+ bool_op_ex_slice_inside, // like bool_op_slice, but leaves only the contour pieces inside of the cut path
+ bool_op_ex_slice_outside, // like bool_op_slice, but leaves only the contour pieces outside of the cut path
+ bool_op_ex_count
+ };
+
+ inline friend bool_op to_bool_op(bool_op_ex val)
+ {
+ assert(val <= bool_op_ex_slice);
+ return (bool_op) val;
+ }
+
+private:
+ LPEBool(const LPEBool &) = delete;
+ LPEBool &operator=(const LPEBool &) = delete;
+
+ OriginalPathParam operand_path;
+ EnumParam<bool_op_ex> bool_operation;
+ EnumParam<fill_typ> fill_type_this;
+ EnumParam<fill_typ> fill_type_operand;
+ BoolParam hide_linked;
+ BoolParam swap_operands;
+ BoolParam rmv_inner;
+ SPItem *operand;
+ size_t contdown;
+};
+
+}; //namespace LivePathEffect
+}; //namespace Inkscape
+
+#endif