18#include <gtkmm/expander.h>
19#include <pangomm/layout.h>
95namespace LivePathEffect {
103 NC_(
"path effect",
"Bend") ,
106 N_(
"Bend an object along the curvature of another path") ,
117 NC_(
"path effect",
"Gears") ,
120 N_(
"Create interlocking, configurable gears based on the nodes of a path") ,
131 NC_(
"path effect",
"Pattern Along Path") ,
134 N_(
"Place one or more copies of another path along the path") ,
145 NC_(
"path effect",
"Stitch Sub-Paths") ,
148 N_(
"Draw perpendicular lines between subpaths of a path, like rungs of a ladder") ,
160 NC_(
"path effect",
"VonKoch") ,
163 N_(
"Create VonKoch fractal") ,
174 NC_(
"path effect",
"Knot") ,
177 N_(
"Create gaps in self-intersections, as in Celtic knots") ,
188 NC_(
"path effect",
"Construct grid") ,
191 N_(
"Create a (perspective) grid from a 3-node path") ,
202 NC_(
"path effect",
"Spiro spline") ,
205 N_(
"Make the path curl like wire, using Spiro B-Splines. This effect is usually used directly on the canvas with the Spiro mode of the drawing tools.") ,
216 NC_(
"path effect",
"Envelope Deformation") ,
219 N_(
"Adjust the shape of an object by transforming paths on its four sides") ,
230 NC_(
"path effect",
"Interpolate Sub-Paths") ,
233 N_(
"Create a smooth transition between the two subpaths of a path, blending their shapes together in steps.") ,
244 NC_(
"path effect",
"Hatches (rough)") ,
247 N_(
"Fill the object with adjustable hatching") ,
258 NC_(
"path effect",
"Sketch") ,
261 N_(
"Draw multiple short strokes along the path, as in a pencil sketch") ,
272 NC_(
"path effect",
"Ruler") ,
275 N_(
"Add ruler marks to the object in adjustable intervals, using the object's stroke style.") ,
287 NC_(
"path effect",
"Power stroke") ,
290 N_(
"Create calligraphic strokes and control their variable width and curvature. This effect can also be used directly on the canvas with a pressure sensitive stylus and the Pencil tool.") ,
301 NC_(
"path effect",
"Clone original") ,
304 N_(
"Let an object take on the shape, fill, stroke and/or other attributes of another object.") ,
316 NC_(
"path effect",
"Simplify") ,
319 N_(
"Smoothen and simplify a object. This effect is also available in the Pencil tool's tool controls.") ,
330 NC_(
"path effect",
"Lattice Deformation") ,
333 N_(
"Warp an object's shape based on a 5x5 grid") ,
344 NC_(
"path effect",
"Perspective/Envelope") ,
345 "perspective-envelope" ,
346 "perspective-envelope" ,
347 N_(
"Transform the object to fit into a shape with four corners, either by stretching it or creating the illusion of a 3D-perspective") ,
358 NC_(
"path effect",
"Interpolate points") ,
359 "interpolate_points" ,
360 "interpolate-points" ,
361 N_(
"Change the type of all nodes on the path. Useful for smoothing the shape or making it sharp.") ,
372 NC_(
"path effect",
"Transform by 2 points") ,
375 N_(
"Scale, stretch and rotate an object by two handles") ,
386 NC_(
"path effect",
"Show handles") ,
389 N_(
"Draw the handles and nodes of objects (replaces the original styling with a black stroke)") ,
400 NC_(
"path effect",
"Roughen") ,
403 N_(
"Roughen an object by adding and randomly shifting new nodes") ,
414 NC_(
"path effect",
"BSpline") ,
417 N_(
"Create a BSpline that molds into the path's corners. This effect is usually used directly on the canvas with the BSpline mode of the drawing tools.") ,
428 NC_(
"path effect",
"Join type") ,
431 N_(
"Select among various join types for a object's corner nodes (mitre, rounded, extrapolated arc, ...)") ,
442 NC_(
"path effect",
"Taper stroke") ,
445 N_(
"Let the path's ends narrow down to a tip") ,
456 NC_(
"path effect",
"Mirror symmetry") ,
459 N_(
"Mirror an object along a movable axis, or around the page center. The mirrored copy can be styled independently.") ,
470 NC_(
"path effect",
"Rotate copies") ,
473 N_(
"Create multiple rotated copies of an object, as in a kaleidoscope. The copies can be styled independently.") ,
485 NC_(
"path effect",
"Attach path") ,
488 N_(
"Glue the current path's ends to a specific position on one or two other paths") ,
500 NC_(
"path effect",
"Fill between many") ,
501 "fill_between_many" ,
502 "fill-between-many" ,
503 N_(
"Turn the path into a fill between multiple other open paths (e.g. between paths with PowerStroke applied to them)") ,
514 NC_(
"path effect",
"Ellipse by 5 points") ,
517 N_(
"Create an ellipse from 5 nodes on its circumference") ,
528 NC_(
"path effect",
"Bounding Box") ,
531 N_(
"Turn the path into a bounding box that entirely encompasses another path") ,
543 NC_(
"path effect",
"Measure Segments") ,
546 N_(
"Add dimensioning for distances between nodes, optionally with projection and many other configuration options") ,
557 NC_(
"path effect",
"Corners") ,
560 N_(
"Fillet/Chamfer: Adjust the shape of a path's corners, rounding them to a specified radius, or cutting them off") ,
571 NC_(
"path effect",
"Power clip") ,
574 N_(
"Invert, hide or flatten a clip (apply like a Boolean operation)") ,
585 NC_(
"path effect",
"Power mask") ,
588 N_(
"Invert or hide a mask, or use its negative") ,
599 NC_(
"path effect",
"Ellipse from points") ,
602 N_(
"Draw a circle, ellipse, arc or slice based on the nodes of a path") ,
613 NC_(
"path effect",
"Offset") ,
616 N_(
"Offset the path, optionally keeping cusp corners cusp") ,
627 NC_(
"path effect",
"Dashed Stroke") ,
630 N_(
"Add a dashed stroke whose dashes end exactly on a node, optionally with the same number of dashes per path segment") ,
642 NC_(
"path effect",
"Boolean operation") ,
645 N_(
"Cut, union, subtract, intersect and divide a path non-destructively with another path") ,
656 NC_(
"path effect",
"Slice") ,
659 N_(
"Slices the item into parts. It can also be applied multiple times.") ,
671 NC_(
"path effect",
"Tiling") ,
674 N_(
"Create multiple copies of an object following a grid layout. Customize size, rotation, distances, style and tiling symmetry.") ,
686 NC_(
"path effect",
"Angle bisector") ,
689 N_(
"Draw a line that halves the angle between the first three nodes of the path") ,
700 NC_(
"path effect",
"Circle") ,
701 "circle_with_radius" ,
703 N_(
"Draw a circle by center and radius, where the first node of the path is the center, and the last determines its radius") ,
714 NC_(
"path effect",
"Circle by 3 points") ,
717 N_(
"Draw a circle whose circumference passes through the first three nodes of the path") ,
728 NC_(
"path effect",
"Extrude") ,
731 N_(
"Extrude the path, creating a face for each path segment") ,
742 NC_(
"path effect",
"Line Segment") ,
745 N_(
"Draw a straight line that connects the first and last node of a path") ,
756 NC_(
"path effect",
"Parallel") ,
759 N_(
"Create a draggable line that will always be parallel to a two-node path") ,
770 NC_(
"path effect",
"Perpendicular bisector") ,
773 N_(
"Draw a perpendicular line in the middle of the (imaginary) line that connects the start and end nodes") ,
784 NC_(
"path effect",
"Tangent to curve") ,
787 N_(
"Draw a tangent with variable length and additional angle that can be moved along the path") ,
799 NC_(
"path effect",
"Fill between strokes") ,
800 "fill_between_strokes" ,
802 N_(
"Turn the path into a fill between two other open paths (e.g. between two paths with PowerStroke applied to them)") ,
811#ifdef LPE_ENABLE_TEST_EFFECTS
814 NC_(
"path effect",
"doEffect stack test") ,
815 "doeffectstacktest" ,
828 NC_(
"path effect",
"Dynamic stroke") ,
831 N_(
"Create calligraphic strokes with variably shaped ends, making use of a parameter for the brush angle") ,
842 NC_(
"path effect",
"Lattice Deformation Legacy") ,
845 N_(
"Deform an object using a 4x4 grid") ,
856 NC_(
"path effect",
"Path length") ,
859 N_(
"Display the total length of a (curved) path") ,
870 NC_(
"path effect",
"Recursive skeleton") ,
871 "recursive_skeleton" ,
873 N_(
"Draw a path recursively") ,
884 NC_(
"path effect",
"Text label") ,
887 N_(
"Add a label for the object") ,
898 NC_(
"path effect",
"Embroidery stitch") ,
901 N_(
"Embroidery stitch") ,
932 Effect* neweffect =
nullptr;
1106 g_warning(
"LivePathEffect::Effect::New called with invalid patheffect type (%d)", lpenr);
1107 neweffect =
nullptr;
1126 const gchar * repr_id = repr->
attribute(
"id");
1129 gchar *href = g_strdup_printf(
"#%s", repr_id);
1130 cast<SPLPEItem>(
item)->addPathEffect(href,
true);
1141 : apply_to_clippath_and_mask(false),
1142 _provides_knotholder_entities(false),
1144 is_visible(_(
"Is visible?"), _(
"If unchecked, the effect remains applied to the object but is temporarily disabled on canvas"),
"is_visible", &wr, this, true),
1145 lpeversion(_(
"Version"), _(
"LPE version"),
"lpeversion", &wr, this,
"0", true),
1146 show_orig_path(false),
1149 on_remove_all(false),
1151 concatenate_before_pwd2(false),
1152 sp_lpe_item(nullptr),
1154 refresh_widgets(false),
1155 current_shape(nullptr),
1156 provides_own_flash_paths(true),
1157 defaultsopen(false),
1178 return Glib::ustring( _(
"No effect") );
1186std::vector<SPLPEItem *>
1188 std::vector<SPLPEItem *>
result;
1191 for (
auto item : hreflist) {
1192 if (
auto lpeitem = cast<SPLPEItem>(
item)) {
1193 result.push_back(lpeitem);
1229 assert(
"pre: effect is referenced by lpeitem" &&
1231 [lpeitem](
SPObject *obj) { return lpeitem == cast<SPLPEItem>(obj); }));
1253 assert(
lpeobj !=
nullptr);
1266 p2 *= transformCoordinate;
1303 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1308 if (lpesatellites || lpesatellite) {
1312 if (!lpesatellites && !lpesatellite) {
1319 std::vector<std::shared_ptr<SatelliteReference> > satelltelist;
1320 if (lpesatellites) {
1322 satelltelist = lpesatellites->
data();
1325 satelltelist.push_back(lpesatellite->
lperef);
1327 for (
auto &iter : satelltelist) {
1329 if (iter && iter->isAttached() && (elemref = iter->getObject())) {
1330 if (
auto *
item = cast<SPItem>(elemref)) {
1333 Glib::ustring css_str;
1334 switch (lpe_action) {
1338 if (lpesatellites) {
1349 auto defs = cast<SPDefs>(elemref->
parent);
1358 if (lpesatellites) {
1373 css->setAttribute(
"display",
"none");
1375 css->removeAttribute(
"display");
1395 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1400 if (lpesatellites) {
1401 lpesatellites->
clear();
1433 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1435 p->update_satellites();
1513 if (lpeitems.size() == 1 && !
isReady()) {
1523 if (lpeitems.size() == 1) {
1575 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1582 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1590 std::vector<SPObject *> satellites;
1594 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
1596 std::vector<SPObject *> tmp = p->param_get_satellites();
1597 satellites.insert(satellites.begin(), tmp.begin(), tmp.end());
1622 curve->set_pathvector(result_pathv);
1632 for (
const auto & i : path_in) {
1637 for (
const auto & j : path) {
1644 for (
const auto & i : path_in) {
1645 pwd2_in.
concat( i.toPwSb() );
1657 g_warning(
"Effect has no doEffect implementation");
1664 std::vector<Parameter *>::iterator it =
param_vector.begin();
1673 g_warning(
"Effect::readallParameters - '%s' not accepted for %s", value,
key);
1676 Glib::ustring pref_path = (Glib::ustring)
"/live_effects/" +
1678 (Glib::ustring)
"/" +
1700 g_warning(
"Effect::setParameter - '%s' not accepted for %s", new_value,
key);
1728 p->addKnotHolderEntities(knotholder,
item);
1731 auto lpeitem = cast<SPLPEItem>(
item);
1744std::vector<Geom::PathVector>
1747 std::vector<Geom::PathVector> hp_vec;
1754 p->addCanvasIndicators(lpeitem, hp_vec);
1757 for (
auto &path : hp_vec) {
1793 auto const vbox = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL);
1794 vbox->set_margin(5);
1796 std::vector<Parameter *>::iterator it =
param_vector.begin();
1798 if ((*it)->widget_is_visible) {
1804 widg->set_sensitive(
true);
1806 widg->set_sensitive(
false);
1812 widg->set_tooltip_markup(*tip);
1814 widg->set_tooltip_text(
"");
1815 widg->set_has_tooltip(
false);
1833 std::vector<Parameter *>::iterator it =
param_vector.begin();
1834 bool has_params =
false;
1836 if ((*it)->widget_is_visible) {
1840 if (g_strcmp0(
key,
"lpeversion") == 0) {
1846 Glib::ustring pref_path =
"/live_effects/";
1847 pref_path += effectkey;
1864 std::vector<Parameter *>::iterator it =
param_vector.begin();
1869 if (g_strcmp0(
key,
"lpeversion") == 0) {
1873 Glib::ustring pref_path =
"/live_effects/";
1874 pref_path += effectkey;
1893 std::vector<Parameter *>::iterator it =
param_vector.begin();
1894 bool has_params =
false;
1896 if ((*it)->widget_is_visible) {
1900 if (g_strcmp0(
key,
"lpeversion") == 0) {
1906 Glib::ustring pref_path =
"/live_effects/";
1907 pref_path += effectkey;
1930 prefs->
remove(pref_path);
1942 g_message(
"Effect::getSPDoc() returns NULL");
1950 Glib::ustring stringkey(
key);
1953 std::vector<Parameter *>::iterator it =
param_vector.begin();
2001 gchar *message = g_strdup_printf(_(
"Editing parameter <b>%s</b>."), param->
param_label.c_str());
2006 _(
"None of the applied path effect's parameters can be edited on-canvas.") );
2016 std::vector<Inkscape::LivePathEffect::Parameter *>::iterator p;
2018 p->param_set_default();
2033 if (p->providesKnotHolderEntities()) {
3x3 matrix representing an affine transformation.
Adaptor that creates 2D functions from 1D ones.
size_type size() const
Get the number of paths in the vector.
void push_back(Path const &path)
Append a path at the end.
Function defined as discrete pieces.
void concat(const Piecewise< T > &other)
Two-dimensional point that doubles as a vector.
RAII-style mechanism for creating a temporary undo-insensitive context.
static void done(SPDocument *document, Glib::ustring const &event_description, Glib::ustring const &undo_icon, unsigned int object_modified_tag=0)
std::vector< StorageType > const & data() const
void doBeforeEffect_impl(SPLPEItem const *lpeitem)
virtual void doOnVisibilityToggled(SPLPEItem const *lpeitem)
std::vector< Parameter * > param_vector
int acceptsNumClicks() const
void registerParameter(Parameter *param)
virtual void addCanvasIndicators(SPLPEItem const *lpeitem, std::vector< Geom::PathVector > &hp_vec)
Add possible canvas indicators (i.e., helperpaths other than the original path) to hp_vec This functi...
virtual void resetDefaults(SPItem const *item)
Sets all parameters to their default values and writes them to SVG.
virtual Gtk::Widget * newWidget()
This creates a managed widget.
void setReady(bool ready=true)
static void createAndApply(const char *name, SPDocument *doc, SPItem *item)
friend class LPEMeasureSegments
virtual void doOnRemove(SPLPEItem const *)
void setParameter(const gchar *key, const gchar *new_value)
bool hasDefaultParameters()
Get LPE has defaults.
void transform_multiply_impl(Geom::Affine const &postmul, SPLPEItem *)
void editNextParamOncanvas(SPItem *item, SPDesktop *desktop)
std::vector< Geom::PathVector > getCanvasIndicators(SPLPEItem const *lpeitem)
Return a vector of PathVectors which contain all canvas indicators for this effect.
virtual void doOnApply(SPLPEItem const *lpeitem)
Is performed a single time when the effect is freshly applied to a path.
static Effect * New(EffectType lpenr, LivePathEffectObject *lpeobj)
Parameter * getParameter(const char *key)
void setCurrentZoom(double cZ)
LivePathEffectObject * lpeobj
void setDefaultParam(Glib::ustring pref_path, Parameter *param)
Effect(const Effect &)=delete
virtual void processObjects(LPEAction lpe_action)
std::vector< SPObject * > effect_get_satellites(bool force=true)
sigc::connection _before_commit_connection
Inkscape::XML::Node * getRepr()
void addHandles(KnotHolder *knotholder, SPItem *item)
Add all registered LPE knotholder handles to the knotholder.
bool isOnClipboard()
The lpe is on clipboard.
bool _provides_path_adjustment
Parameter * getNextOncanvasEditableParam()
void doAfterEffect_impl(SPLPEItem const *lpeitem, SPCurve *curve)
void unsetDefaultParam(Glib::ustring pref_path, Parameter *param)
bool isNodePointSelected(Geom::Point const &nodePoint) const
std::vector< SPLPEItem * > getCurrrentLPEItems() const
virtual void doOnException(SPLPEItem const *lpeitem)
void setDefaultParameters()
Set this LPE defaults.
Geom::PathVector pathvector_before_effect
Glib::ustring getName() const
void doOnOpen_impl()
Is performed on document open allow things like fix legacy LPE in a undo insensitive way.
void setSelectedNodePoints(std::vector< Geom::Point > sNP)
EffectType effectType() const
void makeUndoDone(Glib::ustring message)
virtual void doBeforeEffect(SPLPEItem const *lpeitem)
Is performed each time before the effect is updated.
LPEItemShapesNumbers _lpenumbers
void update_helperpath()
Call to a method on nodetool to update the helper path from the effect.
Geom::PathVector pathvector_after_effect
virtual void doEffect(SPCurve *curve)
void doOnRemove_impl(SPLPEItem const *lpeitem)
virtual void transform_multiply(Geom::Affine const &postmul, bool set)
Overridden function to apply transforms for example to powerstroke, jointtype or tapperstroke.
virtual void doAfterEffect(SPLPEItem const *lpeitem, SPCurve *curve)
Is performed at the end of the LPE only one time per "lpeitem" in paths/shapes is called in middle of...
std::vector< Geom::Point > selectedNodesPoints
void readallParameters(Inkscape::XML::Node const *repr)
bool _provides_knotholder_entities
bool concatenate_before_pwd2
void doOnApply_impl(SPLPEItem const *lpeitem)
void resetDefaultParameters()
Reset this LPE defaults.
LivePathEffectObject * getLPEObj()
virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in)
virtual bool doOnOpen(SPLPEItem const *lpeitem)
Is performed on load document or revert If the item is fixed legacy return true.
virtual void adjustForNewPath()
virtual void acceptParamPath(SPPath const *param_path)
If the effect expects a path parameter (specified by a number of mouse clicks) before it is applied,...
virtual Geom::Piecewise< Geom::D2< Geom::SBasis > > doEffect_pwd2(Geom::Piecewise< Geom::D2< Geom::SBasis > > const &pwd2_in)
bool satellitestoclipboard
bool providesKnotholder() const
virtual void addKnotHolderEntities(KnotHolder *, SPItem *)
Simplified management of enumerations of LPE items with UI labels.
void param_setValue(Glib::ustring newvalue, bool write=false)
Glib::ustring const * param_getTooltip() const
virtual void param_editOncanvas(SPItem *, SPDesktop *)
virtual bool param_readSVGValue(char const *strvalue)=0
virtual void param_update_default(char const *default_value)=0
void setUpdating(bool updating)
virtual void param_set_default()=0
virtual Gtk::Widget * param_newWidget()=0
virtual Glib::ustring param_getDefaultSVGValue() const =0
Glib::ustring param_label
virtual Glib::ustring param_getSVGValue() const =0
std::shared_ptr< SatelliteReference > lperef
MessageId flash(MessageType type, char const *message)
Temporarily pushes a message onto the stack.
bool isSet() const
Check whether the received entry is set.
Preference storage class.
Glib::ustring getString(Glib::ustring const &pref_path, Glib::ustring const &def="")
Retrieve an UTF-8 string.
static Preferences * get()
Access the singleton Preferences object.
Entry const getEntry(Glib::ustring const &pref_path)
Retrieve a preference entry without specifying its type.
void setString(Glib::ustring const &pref_path, Glib::ustring const &value)
Set an UTF-8 string value.
void remove(Glib::ustring const &pref_path)
Remove a node from prefs.
Interface for refcounted XML nodes.
virtual void addChild(Node *child, Node *after)=0
Insert another node as a child of this node.
void setAttributeOrRemoveIfEmpty(Inkscape::Util::const_char_ptr key, Inkscape::Util::const_char_ptr value)
Change an attribute of this node.
void setAttribute(Util::const_char_ptr key, Util::const_char_ptr value)
Change an attribute of this node.
virtual char const * attribute(char const *key) const =0
Get the string representation of a node's attribute.
void removeAttribute(Inkscape::Util::const_char_ptr key)
Remove an attribute of this node.
bool isOnClipboard() const
Inkscape::LivePathEffect::EffectType effecttype
Wrapper around a Geom::PathVector object.
To do: update description of desktop.
Inkscape::MessageStack * messageStack() const
Inkscape::UI::Tools::ToolBase * getTool() const
Typed SVG document implementation.
sigc::connection connectBeforeCommit(BeforeCommitSignal::slot_type slot)
SPDefs * getDefs()
Return the main defs object for the document.
Inkscape::XML::Document * getReprDoc()
Our Inkscape::XML::Document.
Base class for visual SVG elements.
Geom::Affine i2dt_affine() const
Returns the transformation from item to desktop coords.
void moveTo(SPItem *target, bool intoafter)
Move this SPItem into or after another SPItem in the doc.
Geom::Affine i2doc_affine() const
Returns the accumulated transformation of the item and all its ancestors, including root's viewport.
Inkscape::LivePathEffect::Effect * getCurrentLPE()
SPObject is an abstract base class of all of the document nodes at the SVG document level.
Inkscape::XML::Node * updateRepr(unsigned int flags=SP_OBJECT_WRITE_EXT)
Updates the object's repr based on the object's state.
void deleteObject(bool propagate, bool propagate_descendants)
Deletes an object, unparenting it from its parent.
Inkscape::XML::Node * getRepr()
Returns the XML representation of tree.
std::list< SPObject * > hrefList
SVG <path> implementation.
std::shared_ptr< Css const > css
size_t count_pathvector_curves(Geom::PathVector const &pathv)
Specific geometry functions for Inkscape, not provided my lib2geom.
LPE "Circle through 3 points" implementation.
LPE effect that draws a circle based on two points and a radius.
Implementation of the construct grid LPE, see lpe-constructgrid.cpp.
LPE <copy_rotate> implementation, see lpe-copy_rotate.cpp.
Implementation of the curve stitch effect, see lpe-curvestitch.cpp.
LPE <dynastroke> implementation, see lpe-dynastroke.cpp.
LPE "Ellipse through 5 points" implementation.
LPE effect for extruding paths (making them "3D").
LPE interpolate implementation, see lpe-interpolate.cpp.
LPE interpolate_points implementation, see lpe-interpolate_points.cpp.
LPE knot effect implementation, see lpe-knot.cpp.
LPE <lattice2> implementation, see lpe-lattice2.cpp.
LPE <lattice> implementation, see lpe-lattice.cpp.
LPE <line_segment> implementation.
LPE <mirror_symmetry> implementation: mirrors a path with respect to a given line.
LPE <offset> implementation, see lpe-offset.cpp.
LPE <parallel> implementation.
LPE <path_length> implementation.
LPE <perp_bisector> implementation, see lpe-perp_bisector.cpp.
LPE <perspective-envelope> implementation , see lpe-perspective-envelope.cpp.
PowerStroke LPE effect, see lpe-powerstroke.cpp.
LPE "Points to Ellipse" implementation.
see lpe-recursiveskeleton.cpp.
Fills an area with rough hatches.
Roughen LPE effect, see lpe-roughen.cpp.
LPE <ruler> implementation, see lpe-ruler.cpp.
LPE sketch effect implementation, see lpe-sketch.cpp.
LPE <mirror_symmetry> implementation: mirrors a path with respect to a given line.
LPE <tangent_to_curve> implementation, see lpe-tangent_to_curve.cpp.
Taper Stroke path effect (meant as a replacement for using Power Strokes for tapering)
LPE <text_label> implementation.
LPE <tiling> implementation.
Raw stack of active status messages.
PathVector path_from_piecewise(Piecewise< D2< SBasis > > const &B, double tol, bool only_cubicbeziers=false)
Make a path from a d2 sbasis.
bool are_near(Affine const &a1, Affine const &a2, Coord eps=EPSILON)
static R & release(R &r)
Decrements the reference count of a anchored object.
const EnumEffectData< EffectType > LPETypeData[]
const EnumEffectDataConverter< EffectType > LPETypeConverter
defined in effect.cpp
void pack_start(Gtk::Box &box, Gtk::Widget &child, bool const expand, bool const fill, unsigned const padding)
Adds child to box, packed with reference to the start of box.
Helper class to stream background task notifications as a series of messages.
static cairo_user_data_key_t key
Helpers for using Gtk::Boxes, encapsulating large changes between GTK3 & GTK4.
SPCSSAttr * sp_repr_css_attr_new()
Creates an empty SPCSSAttr (a class for manipulating CSS style properties).
void sp_repr_css_write_string(SPCSSAttr *css, Glib::ustring &str)
Write a style attribute string from a list of properties stored in an SPCSAttr object.
void sp_repr_css_attr_unref(SPCSSAttr *css)
Unreferences an SPCSSAttr (will be garbage collected if no references remain).
void sp_repr_css_attr_add_from_string(SPCSSAttr *css, gchar const *p)
Use libcroco to parse a string for CSS properties and then merge them into an existing SPCSSAttr.
SPCSSAttr - interface for CSS Attributes.
void sp_lpe_item_update_patheffect(SPLPEItem *lpeitem, bool wholetree, bool write, bool with_satellites)
Calls any registered handlers for the update_patheffect action.
void sp_lpe_item_enable_path_effects(SPLPEItem *lpeitem, bool enable)
SPRoot: SVG <svg> implementation.
Interface for XML documents.
virtual Node * createElement(char const *name)=0