From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- src/live_effects/lpe-mirror_symmetry.h | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/live_effects/lpe-mirror_symmetry.h (limited to 'src/live_effects/lpe-mirror_symmetry.h') diff --git a/src/live_effects/lpe-mirror_symmetry.h b/src/live_effects/lpe-mirror_symmetry.h new file mode 100644 index 0000000..fb0c39f --- /dev/null +++ b/src/live_effects/lpe-mirror_symmetry.h @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#ifndef INKSCAPE_LPE_MIRROR_SYMMETRY_H +#define INKSCAPE_LPE_MIRROR_SYMMETRY_H + +/** \file + * LPE implementation: mirrors a path with respect to a given line. + */ +/* + * Authors: + * Maximilian Albert + * Johan Engelen + * Jabiertxof + * + * Copyright (C) Johan Engelen 2007 + * Copyright (C) Maximilin Albert 2008 + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "live_effects/effect.h" +#include "live_effects/lpegroupbbox.h" +#include "live_effects/lpeobject-reference.h" +#include "live_effects/lpeobject.h" +#include "live_effects/parameter/enum.h" +#include "live_effects/parameter/parameter.h" +#include "live_effects/parameter/point.h" +#include "live_effects/parameter/satellitearray.h" +#include "live_effects/parameter/text.h" + +namespace Inkscape { +namespace LivePathEffect { + +enum ModeType { + MT_V, + MT_H, + MT_FREE, + MT_X, + MT_Y, + MT_END +}; + +class LPEMirrorSymmetry : public Effect, GroupBBoxEffect { +public: + LPEMirrorSymmetry(LivePathEffectObject *lpeobject); + ~LPEMirrorSymmetry() override; + void doOnApply (SPLPEItem const* lpeitem) override; + void doBeforeEffect (SPLPEItem const* lpeitem) override; + void doAfterEffect (SPLPEItem const* lpeitem, SPCurve *curve) override; + bool doOnOpen(SPLPEItem const * /*lpeitem*/) override; + Geom::PathVector doEffect_path (Geom::PathVector const & path_in) override; + void doOnRemove (SPLPEItem const* /*lpeitem*/) override; + void doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/) override; + Gtk::Widget * newWidget() override; + void cloneStyle(SPObject *orig, SPObject *dest); + void toMirror(Geom::Affine transform); + void cloneD(SPObject *orig, SPObject *dest); + Inkscape::XML::Node * createPathBase(SPObject *elemref); + void centerVert(); + void centerHoriz(); + BoolParam split_items; + +protected: + void addCanvasIndicators(SPLPEItem const *lpeitem, std::vector &hp_vec) override; + +private: + SatelliteArrayParam lpesatellites; + EnumParam mode; + BoolParam discard_orig_path; + BoolParam fuse_paths; + BoolParam oposite_fuse; + BoolParam split_open; + BoolParam link_styles; + PointParam start_point; + PointParam end_point; + PointParam center_point; + Geom::Point previous_center; + SPObject *container; + bool reset; + bool prev_split = false; + bool prev_discard_orig_path = false; + bool center_vert; + bool center_horiz; + LPEMirrorSymmetry(const LPEMirrorSymmetry&) = delete; + LPEMirrorSymmetry& operator=(const LPEMirrorSymmetry&) = delete; +}; + +} //namespace LivePathEffect +} //namespace Inkscape + +#endif -- cgit v1.2.3