Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
SPPattern Class Referencefinal

#include <sp-pattern.h>

Inheritance diagram for SPPattern:
SPPaintServer SPViewBox SPObject Inkscape::XML::NodeObserver

Classes

struct  AttachedView
 Drawing items belonging to other patterns with this pattern at the end of their href chain. More...
 

Public Types

enum  PatternUnits { UNITS_USERSPACEONUSE , UNITS_OBJECTBOUNDINGBOX }
 
- Public Types inherited from SPObject
enum  CollectionPolicy { COLLECT_WITH_PARENT , ALWAYS_COLLECT }
 
enum class  LinkedObjectNature { DEPENDENT = -1 , ANY = 0 , DEPENDENCY = 1 }
 
enum  Action { ActionGeneral , ActionBBox , ActionUpdate , ActionShow }
 
typedef Inkscape::Util::ForwardPointerIterator< SPObject, ParentIteratorStrategyParentIterator
 
typedef Inkscape::Util::ForwardPointerIterator< SPObject const, ParentIteratorStrategyConstParentIterator
 
using ChildrenList = boost::intrusive::list< SPObject, boost::intrusive::member_hook< SPObject, ListHook, &SPObject::_child_hook > >
 

Public Member Functions

 SPPattern ()
 
 ~SPPattern () override
 
int tag () const override
 
double x () const
 
double y () const
 
double width () const
 
double height () const
 
Geom::Rect getBox () const
 
Geom::OptRect viewbox () const
 
SPPattern::PatternUnits patternUnits () const
 
SPPattern::PatternUnits patternContentUnits () const
 
Geom::Affine constgetTransform () const
 
SPPattern constrootPattern () const
 
SPPatternrootPattern ()
 
const Geom::Affineget_this_transform () const
 
SPPatternclone_if_necessary (SPItem *item, char const *property)
 
void transform_multiply (Geom::Affine postmul, bool set)
 
bool isValid () const override
 
bool hasItemChildren () const
 
- Public Member Functions inherited from SPPaintServer
 SPPaintServer ()
 
 ~SPPaintServer () override
 
bool isSwatch () const
 
virtual std::unique_ptr< Inkscape::DrawingPaintServercreate_drawing_paintserver ()
 
- Public Member Functions inherited from SPObject
 SPObject ()
 Constructor, sets all attributes to default values.
 
 SPObject (SPObject const &)=delete
 
SPObjectoperator= (SPObject const &)=delete
 
 ~SPObject () override
 Destructor, frees the used memory and unreferences a potential successor of the object.
 
char const * getId () const
 Returns the objects current ID string.
 
void getIds (std::set< std::string > &ret) const
 Accumulate this id and all it's descendants ids.
 
std::string getUrl () const
 Get the id in a URL format.
 
Inkscape::XML::NodegetRepr ()
 Returns the XML representation of tree.
 
Inkscape::XML::Node const * getRepr () const
 Returns the XML representation of tree.
 
void releaseReferences ()
 Cleans up an SPObject, releasing its references and requesting that references to it be released.
 
sigc::connection connectRelease (sigc::slot< void(SPObject *)> slot)
 Connects to the release request signal.
 
bool isSiblingOf (SPObject const *object) const
 
virtual void getLinked (std::vector< SPObject * > &objects, LinkedObjectNature direction=LinkedObjectNature::ANY) const
 Get objects which are linked to this object as either a source or a target.
 
std::vector< SPObject * > getLinked (LinkedObjectNature direction=LinkedObjectNature::ANY) const
 Get objects which are linked, like above.
 
bool isAncestorOf (SPObject const *object) const
 True if object is non-NULL and this is some in/direct parent of object.
 
SPObject const * nearestCommonAncestor (SPObject const *object) const
 Returns youngest object being parent to this and object.
 
SPObject const * getTopAncestorNonLayer () const
 Returns ancestor non layer.
 
SPObjectgetNext ()
 
SPObjectgetPrev ()
 Returns previous object in sibling list or NULL.
 
bool hasChildren () const
 
SPObjectfirstChild ()
 
SPObject const * firstChild () const
 
SPObjectlastChild ()
 
SPObject const * lastChild () const
 
SPObjectnthChild (unsigned index)
 
SPObject const * nthChild (unsigned index) const
 
std::vector< SPObject * > childList (bool add_ref, Action action=ActionGeneral)
 Retrieves the children as a std vector object, optionally ref'ing the children in the process, if add_ref is specified.
 
std::vector< SPObject * > ancestorList (bool root_to_tip)
 Retrieves a list of ancestors of the object, as an easy to use vector.
 
SPObjectappendChildRepr (Inkscape::XML::Node *repr)
 Append repr as child of this object.
 
char const * label () const
 Gets the author-visible label property for the object or a default if no label is defined.
 
char const * defaultLabel () const
 Returns a default label property for this object.
 
void setLabel (char const *label)
 Sets the author-visible label for this object.
 
char * title () const
 Returns the title of this object, or NULL if there is none.
 
bool setTitle (char const *title, bool verbatim=false)
 Sets the title of this object.
 
char * desc () const
 Returns the description of this object, or NULL if there is none.
 
bool setDesc (char const *desc, bool verbatim=false)
 Sets the description of this object.
 
Glib::ustring getExportFilename () const
 Get and set the exportable filename on this object.
 
void setExportFilename (Glib::ustring filename)
 
Geom::Point getExportDpi () const
 Get and set the exported DPI for this objet, if available.
 
void setExportDpi (Geom::Point dpi)
 
CollectionPolicy collectionPolicy () const
 Set the policy under which this object will be orphan-collected.
 
void setCollectionPolicy (CollectionPolicy policy)
 Sets the orphan-collection policy in effect for this object.
 
void requestOrphanCollection ()
 Requests a later automatic call to collectOrphan().
 
void collectOrphan ()
 Unconditionally delete the object if it is not referenced.
 
void hrefObject (SPObject *owner=nullptr)
 Increase weak refcount.
 
void unhrefObject (SPObject *owner=nullptr)
 Decrease weak refcount.
 
bool isReferenced ()
 Check if object is referenced by any other object.
 
void deleteObject (bool propagate, bool propagate_descendants)
 Deletes an object, unparenting it from its parent.
 
void deleteObject (bool propagate=true)
 Deletes on object.
 
void cropToObject (SPObject *except)
 Removes all children except for the given object, it's children and it's ancesstors.
 
void cropToObjects (std::vector< SPObject * > except_objects)
 Removes objects which are not related to given list of objects.
 
void getObjectsExcept (std::vector< SPObject * > &objects, const std::vector< SPObject * > &except)
 Get all child objects except for any in the list.
 
void getLinkedRecursive (std::vector< SPObject * > &objects, LinkedObjectNature direction=LinkedObjectNature::ANY) const
 Grows the input list with all linked items recursively in both child nodes and links of links.
 
sigc::connection connectDelete (sigc::slot< void(SPObject *)> slot)
 Connects a slot to be called when an object is deleted.
 
sigc::connection connectPositionChanged (sigc::slot< void(SPObject *)> slot)
 
SPObjectsuccessor ()
 Returns the object which supercedes this one (if any).
 
void setSuccessor (SPObject *successor)
 Indicates that another object supercedes this one.
 
void setTmpSuccessor (SPObject *tmpsuccessor)
 Indicates that another object supercedes temporaty this one.
 
void unsetTmpSuccessor ()
 Unset object supercedes.
 
void fixTmpSuccessors ()
 Fix temporary successors in duple stamp.
 
Inkscape::XML::NodeupdateRepr (unsigned int flags=SP_OBJECT_WRITE_EXT)
 Updates the object's repr based on the object's state.
 
Inkscape::XML::NodeupdateRepr (Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, unsigned int flags)
 Updates the given repr based on the object's state.
 
void requestDisplayUpdate (unsigned int flags)
 Queues an deferred update of this object's display.
 
void updateDisplay (SPCtx *ctx, unsigned int flags)
 Updates the object's display immediately.
 
void requestModified (unsigned int flags)
 Requests that a modification notification signal be emitted later (e.g.
 
void emitModified (unsigned int flags)
 Emits the MODIFIED signal with the object's flags.
 
sigc::connection connectModified (sigc::slot< void(SPObject *, unsigned int)> slot)
 Connects to the modification notification signal.
 
void _sendDeleteSignalRecursive ()
 Sends the delete signal to all children of this object recursively.
 
void _updateTotalHRefCount (int increment)
 Adds increment to _total_hrefcount of object and its parents.
 
void _requireSVGVersion (unsigned major, unsigned minor)
 
void _requireSVGVersion (Inkscape::Version version)
 Lifts SVG version of all root objects to version.
 
void attach (SPObject *object, SPObject *prev)
 Put object into object tree, under parent, and behind prev; also update object's XML space.
 
void reorder (SPObject *obj, SPObject *prev)
 In list of object's children, move object behind prev.
 
void detach (SPObject *object)
 Remove object from parent's children, release and unref it.
 
SPObjectget_child_by_repr (Inkscape::XML::Node *repr)
 Return object's child whose node pointer equals repr.
 
void invoke_build (SPDocument *document, Inkscape::XML::Node *repr, unsigned int cloned)
 
int getIntAttribute (char const *key, int def)
 
unsigned getPosition ()
 
char const * getAttribute (char const *name) const
 
void appendChild (Inkscape::XML::Node *child)
 
void addChild (Inkscape::XML::Node *child, Inkscape::XML::Node *prev=nullptr)
 
void setKeyValue (SPAttr key, char const *value)
 Call virtual set() function of object.
 
void setAttribute (Inkscape::Util::const_char_ptr key, Inkscape::Util::const_char_ptr value)
 
void setAttributeDouble (Inkscape::Util::const_char_ptr key, double value)
 
void setAttributeOrRemoveIfEmpty (Inkscape::Util::const_char_ptr key, Inkscape::Util::const_char_ptr value)
 
void readAttr (char const *key)
 Read value of key attribute from XML node into object.
 
void readAttr (SPAttr keyid)
 
char const * getTagName () const
 
void removeAttribute (char const *key)
 
void setCSS (SPCSSAttr *css, char const *attr)
 
void changeCSS (SPCSSAttr *css, char const *attr)
 
bool storeAsDouble (char const *key, double *val) const
 
virtual void read_content ()
 
void recursivePrintTree (unsigned level=0)
 
void objectTrace (std::string const &, bool in=true, unsigned flags=0)
 
std::string generate_unique_id (char const *default_id=nullptr) const
 Generate a document-wide unique id for this object.
 
- Public Member Functions inherited from SPViewBox
 SPViewBox ()
 
void set_viewBox (const gchar *value)
 
void set_preserveAspectRatio (const gchar *value)
 
void write_viewBox (Inkscape::XML::Node *repr) const
 Write viewBox attribute to XML, if set.
 
void write_preserveAspectRatio (Inkscape::XML::Node *repr) const
 Write preserveAspectRatio attribute to XML, if set.
 
void apply_viewbox (const Geom::Rect &in, double scale_none=1.0)
 
SPItemCtx get_rctx (const SPItemCtx *ictx, double scale_none=1.0)
 
Geom::OptRect get_paintbox (double width, double height, Geom::OptRect const &size) const
 

Static Public Member Functions

static char constproduce (std::vector< Inkscape::XML::Node * > const &reprs, Geom::Rect const &bounds, SPDocument *document, Geom::Affine const &transform, Geom::Affine const &move)
 create a new pattern in XML tree
 

Public Attributes

Glib::ustring href
 
SPPatternReference ref
 
- Public Attributes inherited from SPObject
unsigned int cloned: 1
 
SPObjectclone_original {nullptr}
 
unsigned int uflags: 16
 
unsigned int mflags: 16
 
SPIXmlSpace xml_space
 
Glib::ustring lang
 
unsigned int hrefcount {0}
 
unsigned int _total_hrefcount {0}
 
SPDocumentdocument {nullptr}
 
SPObjectparent {nullptr}
 
int refCount {1}
 
std::list< SPObject * > hrefList
 
SPStylestyle
 Represents the style properties, whether from presentation attributes, the style attribute, or inherited.
 
SPStylecontext_style
 Represents the style that should be used to resolve 'context-fill' and 'context-stroke'.
 
sigc::signal< void(SPObject *)> _release_signal
 
sigc::signal< void(SPObject *)> _delete_signal
 
sigc::signal< void(SPObject *)> _position_changed_signal
 
sigc::signal< void(SPObject *, unsigned int)> _modified_signal
 
SPObject_successor {nullptr}
 
SPObject_tmpsuccessor {nullptr}
 
CollectionPolicy _collection_policy {SPObject::COLLECT_WITH_PARENT}
 
char * _label {nullptr}
 
char * _default_label {nullptr}
 
ChildrenList children
 
- Public Attributes inherited from SPViewBox
bool viewBox_set
 
Geom::Rect viewBox
 
bool aspect_set
 
unsigned int aspect_align
 
unsigned int aspect_clip
 
Geom::Affine c2p
 

Protected Member Functions

void build (SPDocument *doc, Inkscape::XML::Node *repr) override
 
void release () override
 
void set (SPAttr key, char const *value) override
 
void update (SPCtx *ctx, unsigned flags) override
 
void modified (unsigned flags) override
 
void child_added (Inkscape::XML::Node *child, Inkscape::XML::Node *ref) override
 
void remove_child (Inkscape::XML::Node *child) override
 
void order_changed (Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) override
 
Inkscape::DrawingPatternshow (Inkscape::Drawing &drawing, unsigned key, Geom::OptRect const &bbox) override
 
void hide (unsigned key) override
 
void setBBox (unsigned key, Geom::OptRect const &bbox) override
 
- Protected Member Functions inherited from SPObject
virtual void tag_name_changed (gchar const *oldname, gchar const *newname)
 
virtual void update (SPCtx *ctx, unsigned int flags)
 
virtual void modified (unsigned int flags)
 
virtual Inkscape::XML::Nodewrite (Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, unsigned int flags)
 

Private Types

using View = ObjectView< Inkscape::DrawingPattern >
 

Private Member Functions

SPPattern_chain () const
 
unsigned _countHrefs (SPObject *o) const
 Count how many times pattern is used by the styles of o and its descendants.
 
void _onRefChanged (SPObject *old_ref, SPObject *ref)
 Gets called when the pattern is reattached to another <pattern>
 
void _onRefModified (SPObject *ref, unsigned flags)
 Gets called when the referenced <pattern> is changed.
 
void set_shown (SPPattern *new_shown)
 
void attach_view (Inkscape::DrawingPattern *di, unsigned key)
 
void unattach_view (Inkscape::DrawingPattern *di)
 
void update_view (View &v)
 

Private Attributes

PatternUnits _pattern_units: 1
 
bool _pattern_units_set: 1
 
PatternUnits _pattern_content_units: 1
 
bool _pattern_content_units_set: 1
 
Geom::Affine _pattern_transform
 
bool _pattern_transform_set: 1
 
SVGLength _x
 
SVGLength _y
 
SVGLength _width
 
SVGLength _height
 
sigc::connection _modified_connection
 
SPPatternshown
 The pattern at the end of the href chain, currently tasked with keeping our DrawingPattern up to date.
 
sigc::connection shown_released_connection
 
std::vector< AttachedViewattached_views
 
std::vector< Viewviews
 

Additional Inherited Members

- Protected Types inherited from SPObject
typedef boost::intrusive::list_member_hook ListHook
 
- Protected Attributes inherited from SPPaintServer
bool swatch = false
 
- Protected Attributes inherited from SPObject
ListHook _child_hook
 

Detailed Description

Definition at line 49 of file sp-pattern.h.

Member Typedef Documentation

◆ View

Definition at line 169 of file sp-pattern.h.

Member Enumeration Documentation

◆ PatternUnits

Enumerator
UNITS_USERSPACEONUSE 
UNITS_OBJECTBOUNDINGBOX 

Definition at line 54 of file sp-pattern.h.

Constructor & Destructor Documentation

◆ SPPattern()

SPPattern::SPPattern ( )

Definition at line 62 of file sp-pattern.cpp.

References _onRefChanged(), Inkscape::URIReference::changedSignal(), and ref.

◆ ~SPPattern()

SPPattern::~SPPattern ( )
overridedefault

Member Function Documentation

◆ _chain()

◆ _countHrefs()

unsigned SPPattern::_countHrefs ( SPObject o) const
private

Count how many times pattern is used by the styles of o and its descendants.

Definition at line 429 of file sp-pattern.cpp.

References _countHrefs(), child, SPObject::children, SPStyle::fill, SPStyle::stroke, SPObject::style, and x().

Referenced by _countHrefs(), and clone_if_necessary().

◆ _onRefChanged()

void SPPattern::_onRefChanged ( SPObject old_ref,
SPObject ref 
)
private

Gets called when the pattern is reattached to another <pattern>

Definition at line 356 of file sp-pattern.cpp.

References _modified_connection, _onRefModified(), ref, and x().

Referenced by SPPattern().

◆ _onRefModified()

void SPPattern::_onRefModified ( SPObject ref,
unsigned  flags 
)
private

Gets called when the referenced <pattern> is changed.

Definition at line 369 of file sp-pattern.cpp.

References SPObject::requestDisplayUpdate(), and x().

Referenced by _onRefChanged().

◆ attach_view()

void SPPattern::attach_view ( Inkscape::DrawingPattern di,
unsigned  key 
)
private

◆ build()

void SPPattern::build ( SPDocument doc,
Inkscape::XML::Node repr 
)
overrideprotectedvirtual

◆ child_added()

void SPPattern::child_added ( Inkscape::XML::Node child,
Inkscape::XML::Node ref 
)
overrideprotectedvirtual

◆ clone_if_necessary()

◆ get_this_transform()

const Geom::Affine & SPPattern::get_this_transform ( ) const

Definition at line 617 of file sp-pattern.cpp.

References _pattern_transform.

◆ getBox()

Geom::Rect SPPattern::getBox ( ) const
inline

◆ getTransform()

◆ hasItemChildren()

bool SPPattern::hasItemChildren ( ) const

Definition at line 669 of file sp-pattern.cpp.

References child, and SPObject::children.

◆ height()

◆ hide()

void SPPattern::hide ( unsigned  key)
overrideprotectedvirtual

Reimplemented from SPPaintServer.

Definition at line 697 of file sp-pattern.cpp.

References shown, unattach_view(), views, and x().

◆ isValid()

bool SPPattern::isValid ( ) const
overridevirtual

Reimplemented from SPPaintServer.

Definition at line 675 of file sp-pattern.cpp.

References height(), and width().

◆ modified()

void SPPattern::modified ( unsigned  flags)
overrideprotected

◆ order_changed()

void SPPattern::order_changed ( Inkscape::XML::Node child,
Inkscape::XML::Node old_ref,
Inkscape::XML::Node new_ref 
)
overrideprotectedvirtual

◆ patternContentUnits()

SPPattern::PatternUnits SPPattern::patternContentUnits ( ) const

◆ patternUnits()

SPPattern::PatternUnits SPPattern::patternUnits ( ) const

◆ produce()

◆ release()

void SPPattern::release ( )
overrideprotectedvirtual

◆ remove_child()

void SPPattern::remove_child ( Inkscape::XML::Node child)
overrideprotectedvirtual

Reimplemented from SPObject.

Definition at line 334 of file sp-pattern.cpp.

References child, SPObject::remove_child(), SPObject::requestModified(), and x().

◆ rootPattern() [1/2]

SPPattern * SPPattern::rootPattern ( )

Definition at line 583 of file sp-pattern.cpp.

◆ rootPattern() [2/2]

◆ set()

◆ set_shown()

void SPPattern::set_shown ( SPPattern new_shown)
private

◆ setBBox()

void SPPattern::setBBox ( unsigned  key,
Geom::OptRect const bbox 
)
overrideprotectedvirtual

Reimplemented from SPPaintServer.

Definition at line 714 of file sp-pattern.cpp.

References update_view(), views, and x().

◆ show()

Inkscape::DrawingPattern * SPPattern::show ( Inkscape::Drawing drawing,
unsigned  key,
Geom::OptRect const bbox 
)
overrideprotectedvirtual

Reimplemented from SPPaintServer.

Definition at line 680 of file sp-pattern.cpp.

References attach_view(), key, root, shown, SPObject::style, update_view(), views, and x().

◆ tag()

int SPPattern::tag ( ) const
inlineoverridevirtual

Reimplemented from SPPaintServer.

Definition at line 62 of file sp-pattern.h.

References tag_of.

◆ transform_multiply()

void SPPattern::transform_multiply ( Geom::Affine  postmul,
bool  set 
)

◆ unattach_view()

void SPPattern::unattach_view ( Inkscape::DrawingPattern di)
private

Definition at line 413 of file sp-pattern.cpp.

References attached_views, c, child, SPObject::children, and x().

Referenced by hide(), and set_shown().

◆ update()

void SPPattern::update ( SPCtx ctx,
unsigned  flags 
)
overrideprotected

◆ update_view()

◆ viewbox()

Geom::OptRect SPPattern::viewbox ( ) const

◆ width()

◆ x()

◆ y()

double SPPattern::y ( ) const

Member Data Documentation

◆ _height

SVGLength SPPattern::_height
private

Definition at line 142 of file sp-pattern.h.

Referenced by set().

◆ _modified_connection

sigc::connection SPPattern::_modified_connection
private

Definition at line 144 of file sp-pattern.h.

Referenced by _onRefChanged(), and release().

◆ _pattern_content_units

PatternUnits SPPattern::_pattern_content_units
private

Definition at line 133 of file sp-pattern.h.

Referenced by patternContentUnits(), and set().

◆ _pattern_content_units_set

bool SPPattern::_pattern_content_units_set
private

Definition at line 134 of file sp-pattern.h.

Referenced by set().

◆ _pattern_transform

Geom::Affine SPPattern::_pattern_transform
private

Definition at line 136 of file sp-pattern.h.

Referenced by get_this_transform(), getTransform(), set(), and transform_multiply().

◆ _pattern_transform_set

bool SPPattern::_pattern_transform_set
private

Definition at line 137 of file sp-pattern.h.

Referenced by set(), and transform_multiply().

◆ _pattern_units

PatternUnits SPPattern::_pattern_units
private

Definition at line 131 of file sp-pattern.h.

Referenced by patternUnits(), and set().

◆ _pattern_units_set

bool SPPattern::_pattern_units_set
private

Definition at line 132 of file sp-pattern.h.

Referenced by set().

◆ _width

SVGLength SPPattern::_width
private

Definition at line 141 of file sp-pattern.h.

Referenced by set().

◆ _x

SVGLength SPPattern::_x
private

Definition at line 139 of file sp-pattern.h.

Referenced by set().

◆ _y

SVGLength SPPattern::_y
private

Definition at line 140 of file sp-pattern.h.

Referenced by set().

◆ attached_views

std::vector<AttachedView> SPPattern::attached_views
private

Definition at line 165 of file sp-pattern.h.

Referenced by attach_view(), child_added(), order_changed(), release(), and unattach_view().

◆ href

Glib::ustring SPPattern::href

Definition at line 65 of file sp-pattern.h.

Referenced by clone_if_necessary(), and set().

◆ ref

◆ shown

SPPattern* SPPattern::shown
private

The pattern at the end of the href chain, currently tasked with keeping our DrawingPattern up to date.

When 'shown' is deleted, our DrawingPattern will be unattached from it and 'shown' will be nulled. Later (asynchronously), 'shown' will be re-resolved to another Pattern and our DrawingPattern will be re-attached to that.

Definition at line 152 of file sp-pattern.h.

Referenced by hide(), set_shown(), and show().

◆ shown_released_connection

sigc::connection SPPattern::shown_released_connection
private

Definition at line 153 of file sp-pattern.h.

Referenced by set_shown().

◆ views

std::vector<View> SPPattern::views
private

Definition at line 170 of file sp-pattern.h.

Referenced by hide(), release(), set_shown(), setBBox(), show(), and update().


The documentation for this class was generated from the following files: