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-perp_bisector.h | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/live_effects/lpe-perp_bisector.h (limited to 'src/live_effects/lpe-perp_bisector.h') diff --git a/src/live_effects/lpe-perp_bisector.h b/src/live_effects/lpe-perp_bisector.h new file mode 100644 index 0000000..4d09f88 --- /dev/null +++ b/src/live_effects/lpe-perp_bisector.h @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#ifndef INKSCAPE_LPE_PERP_BISECTOR_H +#define INKSCAPE_LPE_PERP_BISECTOR_H + +/** \file + * LPE implementation, see lpe-perp_bisector.cpp. + */ +/* + * Authors: + * Maximilian Albert + * Johan Engelen + * + * 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/parameter/parameter.h" +#include "live_effects/parameter/point.h" + +namespace Inkscape { +namespace LivePathEffect { + +namespace PB { + // we need a separate namespace to avoid clashes with LPETangentToCurve + class KnotHolderEntityEnd; + class KnotHolderEntityLeftEnd; + class KnotHolderEntityRightEnd; + void bisector_end_set(SPItem *item, Geom::Point const &p, guint state, bool left = true); +} + +class LPEPerpBisector : public Effect { +public: + LPEPerpBisector(LivePathEffectObject *lpeobject); + ~LPEPerpBisector() override; + + virtual EffectType effectType () { return PERP_BISECTOR; } + + void doOnApply (SPLPEItem const* lpeitem) override; + + Geom::Piecewise > + doEffect_pwd2 (Geom::Piecewise > const & pwd2_in) override; + + /* the knotholder entity functions must be declared friends */ + friend class PB::KnotHolderEntityEnd; + friend class PB::KnotHolderEntityLeftEnd; + friend class PB::KnotHolderEntityRightEnd; + friend void PB::bisector_end_set(SPItem *item, Geom::Point const &p, guint state, bool left); + void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); + +private: + ScalarParam length_left; + ScalarParam length_right; + + Geom::Point A; // start of path + Geom::Point B; // end of path + Geom::Point M; // midpoint + Geom::Point C; // left end of bisector + Geom::Point D; // right end of bisector + Geom::Point perp_dir; + + LPEPerpBisector(const LPEPerpBisector&) = delete; + LPEPerpBisector& operator=(const LPEPerpBisector&) = delete; +}; + +} //namespace LivePathEffect +} //namespace Inkscape + +#endif -- cgit v1.2.3