// SPDX-License-Identifier: GPL-2.0-or-later #ifndef INKSCAPE_LPE_PARALLEL_H #define INKSCAPE_LPE_PARALLEL_H /** \file * LPE implementation */ /* * Authors: * Maximilian Albert * * Copyright (C) Johan Engelen 2007 * Copyright (C) Maximilian Albert 2008 * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #include "live_effects/effect.h" #include "live_effects/parameter/point.h" namespace Inkscape { namespace LivePathEffect { namespace Pl { // we need a separate namespace to avoid clashes with LPEPerpBisector class KnotHolderEntityLeftEnd; class KnotHolderEntityRightEnd; } class LPEParallel : public Effect { public: LPEParallel(LivePathEffectObject *lpeobject); ~LPEParallel() override; void doOnApply (SPLPEItem const* lpeitem) override; Geom::Piecewise > doEffect_pwd2 (Geom::Piecewise > const & pwd2_in) override; /* the knotholder entity classes must be declared friends */ friend class Pl::KnotHolderEntityLeftEnd; friend class Pl::KnotHolderEntityRightEnd; void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); private: PointParam offset_pt; ScalarParam length_left; ScalarParam length_right; Geom::Point A; Geom::Point B; Geom::Point C; Geom::Point D; Geom::Point M; Geom::Point N; Geom::Point dir; LPEParallel(const LPEParallel&) = delete; LPEParallel& operator=(const LPEParallel&) = delete; }; } //namespace LivePathEffect } //namespace Inkscape #endif /* Local Variables: mode:c++ c-file-style:"stroustrup" c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) indent-tabs-mode:nil fill-column:99 End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :