Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
Inkscape::DrawingGroup Class Reference

#include <drawing-group.h>

Inheritance diagram for Inkscape::DrawingGroup:
Inkscape::DrawingItem Inkscape::DrawingPattern Inkscape::DrawingText

Public Member Functions

 DrawingGroup (Drawing &drawing)
 
int tag () const override
 Unlink this node and its subtree from the rendering tree and destroy.
 
bool pickChildren ()
 
void setPickChildren (bool)
 Set whether the group returns children from pick calls.
 
void setChildTransform (Geom::Affine const &)
 Set additional transform for the group.
 
- Public Member Functions inherited from Inkscape::DrawingItem
 DrawingItem (Drawing &drawing)
 
 DrawingItem (DrawingItem const &)=delete
 
DrawingItemoperator= (DrawingItem const &)=delete
 
void unlink ()
 
Geom::OptIntRect const & bbox () const
 
Geom::OptIntRect const & drawbox () const
 
Geom::OptRect const & itemBounds () const
 
Geom::Affine const & ctm () const
 
Geom::Affine transform () const
 
Drawingdrawing () const
 
DrawingItemparent () const
 
bool isAncestorOf (DrawingItem const *item) const
 Returns true if item is among the descendants. Will return false if item == this.
 
int getUpdateComplexity () const
 
bool unisolatedBlend () const
 
void appendChild (DrawingItem *item)
 
void prependChild (DrawingItem *item)
 
void clearChildren ()
 
bool visible () const
 
void setVisible (bool visible)
 
bool sensitive () const
 
void setSensitive (bool sensitive)
 
virtual void setStyle (SPStyle const *style, SPStyle const *context_style=nullptr)
 Process information related to the new style.
 
virtual void setChildrenStyle (SPStyle const *context_style)
 Recursively update children style.
 
void setOpacity (float opacity)
 
void setAntialiasing (Antialiasing antialias)
 
void setIsolation (bool isolation)
 
void setBlendMode (SPBlendMode blend_mode)
 
void setTransform (Geom::Affine const &trans)
 
void setClip (DrawingItem *item)
 
void setMask (DrawingItem *item)
 
void setFillPattern (DrawingPattern *pattern)
 
void setStrokePattern (DrawingPattern *pattern)
 
void setZOrder (unsigned zorder)
 Move this item to the given place in the Z order of siblings. Does nothing if the item is not a normal child.
 
void setItemBounds (Geom::OptRect const &bounds)
 
void setFilterRenderer (std::unique_ptr< Filters::Filter > renderer)
 
void setKey (unsigned key)
 
unsigned key () const
 
void setItem (SPItem *item)
 
SPItemgetItem () const
 
void update (Geom::IntRect const &area=Geom::IntRect::infinite(), UpdateContext const &ctx=UpdateContext(), unsigned flags=STATE_ALL, unsigned reset=0)
 Update derived data before operations.
 
unsigned render (DrawingContext &dc, RenderContext &rc, Geom::IntRect const &area, unsigned flags=0, DrawingItem const *stop_at=nullptr) const
 Rasterize items.
 
unsigned render (DrawingContext &dc, Geom::IntRect const &area, unsigned flags=0) const
 A stand alone render, ignoring all other objects in the document.
 
void clip (DrawingContext &dc, RenderContext &rc, Geom::IntRect const &area) const
 Rasterize the clipping path.
 
DrawingItempick (Geom::Point const &p, double delta, unsigned flags=0)
 Get the item under the specified point.
 
Glib::ustring name () const
 
void recursivePrintTree (unsigned level=0) const
 

Protected Member Functions

 ~DrawingGroup () override=default
 
unsigned _updateItem (Geom::IntRect const &area, UpdateContext const &ctx, unsigned flags, unsigned reset) override
 
unsigned _renderItem (DrawingContext &dc, RenderContext &rc, Geom::IntRect const &area, unsigned flags, DrawingItem const *stop_at) const override
 
void _clipItem (DrawingContext &dc, RenderContext &rc, Geom::IntRect const &area) const override
 
DrawingItem_pickItem (Geom::Point const &p, double delta, unsigned flags) override
 
bool _canClip () const override
 
- Protected Member Functions inherited from Inkscape::DrawingItem
virtual ~DrawingItem ()
 
void _renderOutline (DrawingContext &dc, RenderContext &rc, Geom::IntRect const &area, unsigned flags) const
 
void _markForUpdate (unsigned state, bool propagate)
 Marks the item as needing a recomputation of internal data.
 
void _markForRendering ()
 Marks the current visual bounding box of the item for redrawing.
 
void _invalidateFilterBackground (Geom::IntRect const &area)
 
double _cacheScore ()
 Compute the caching score.
 
Geom::OptIntRect _cacheRect () const
 
void _setCached (bool cached, bool persistent=false)
 Enable / disable storing the rendering in memory.
 
virtual void _dropPatternCache ()
 
template<typename F >
void defer (F &&f)
 

Protected Attributes

std::unique_ptr< Geom::Affine_child_transform
 
- Protected Attributes inherited from Inkscape::DrawingItem
Drawing_drawing
 
DrawingItem_parent
 
ListHook _child_hook
 
ChildrenList _children
 
unsigned _key
 Auxiliary key used by the object tree for showing clips/masks/patterns.
 
SPItem_item
 Used to associate DrawingItems with SPItems that created them.
 
SPStyle const * _style
 
SPStyle const * _context_style
 
float _opacity
 
std::unique_ptr< Geom::Affine_transform
 Incremental transform from parent to this item's coords.
 
Geom::Affine _ctm
 Total transform from item coords to display coords.
 
Geom::OptIntRect _bbox
 Bounding box in display (pixel) coords including stroke.
 
Geom::OptIntRect _drawbox
 Full visual bounding box - enlarged by filters, shrunk by clips and masks.
 
Geom::OptRect _item_bbox
 Geometric bounding box in item's user space.
 
DrawingItem_clip
 
DrawingItem_mask
 
DrawingPattern_fill_pattern
 
DrawingPattern_stroke_pattern
 
std::unique_ptr< Inkscape::Filters::Filter_filter
 
std::unique_ptr< CacheData > _cache
 
int _update_complexity = 0
 
bool _contains_unisolated_blend: 1
 
CacheList::iterator _cache_iterator
 
bool style_vector_effect_size: 1
 
bool style_vector_effect_rotate: 1
 
bool style_vector_effect_fixed: 1
 
unsigned _state: 8
 
unsigned _propagate_state: 8
 
ChildType _child_type: 3
 
unsigned _background_new: 1
 Whether enable-background: new is set for this element.
 
unsigned _background_accumulate: 1
 Whether this element accumulates background (has any ancestor with enable-background: new)
 
unsigned _visible: 1
 
unsigned _sensitive: 1
 Whether this item responds to events.
 
unsigned _cached_persistent: 1
 If set, will always be cached regardless of score.
 
unsigned _has_cache_iterator: 1
 If set, _cache_iterator is valid.
 
unsigned _pick_children: 1
 For groups: if true, children are returned from pick(), otherwise the group is returned.
 
Antialiasing _antialias: 2
 antialiasing level (default is Good)
 
bool _isolation: 1
 
SPBlendMode _blend_mode
 

Additional Inherited Members

- Public Types inherited from Inkscape::DrawingItem
enum  RenderFlags {
  RENDER_DEFAULT = 0 , RENDER_CACHE_ONLY = 1 << 0 , RENDER_BYPASS_CACHE = 1 << 1 , RENDER_FILTER_BACKGROUND = 1 << 2 ,
  RENDER_OUTLINE = 1 << 3 , RENDER_NO_FILTERS = 1 << 4 , RENDER_VISIBLE_HAIRLINES = 1 << 5
}
 
enum  StateFlags {
  STATE_NONE = 0 , STATE_BBOX = 1 << 0 , STATE_CACHE = 1 << 1 , STATE_PICK = 1 << 2 ,
  STATE_RENDER = 1 << 3 , STATE_BACKGROUND = 1 << 4 , STATE_ALL = (1 << 5) - 1 , STATE_TOTAL_INV = 1 << 5
}
 
enum  PickFlags { PICK_NORMAL = 0 , PICK_STICKY = 1 << 0 , PICK_AS_CLIP = 1 << 1 , PICK_OUTLINE = 1 << 2 }
 
- Protected Types inherited from Inkscape::DrawingItem
enum class  ChildType : unsigned char {
  ORPHAN = 0 , NORMAL = 1 , CLIP = 2 , MASK = 3 ,
  FILL = 4 , STROKE = 5 , ROOT = 6
}
 
enum  RenderResult { RENDER_OK = 0 , RENDER_STOP = 1 }
 
using ListHook = boost::intrusive::list_member_hook<>
 
using ChildrenList = boost::intrusive::list< DrawingItem, boost::intrusive::member_hook< DrawingItem, ListHook, &DrawingItem::_child_hook > >
 

Detailed Description

Definition at line 20 of file drawing-group.h.

Constructor & Destructor Documentation

◆ DrawingGroup()

Inkscape::DrawingGroup::DrawingGroup ( Drawing drawing)

Definition at line 23 of file drawing-group.cpp.

◆ ~DrawingGroup()

Inkscape::DrawingGroup::~DrawingGroup ( )
overrideprotecteddefault

Member Function Documentation

◆ _canClip()

bool Inkscape::DrawingGroup::_canClip ( ) const
inlineoverrideprotectedvirtual

Reimplemented from Inkscape::DrawingItem.

Reimplemented in Inkscape::DrawingText.

Definition at line 39 of file drawing-group.h.

◆ _clipItem()

void Inkscape::DrawingGroup::_clipItem ( DrawingContext dc,
RenderContext rc,
Geom::IntRect const &  area 
) const
overrideprotectedvirtual

Reimplemented from Inkscape::DrawingItem.

Reimplemented in Inkscape::DrawingText.

Definition at line 102 of file drawing-group.cpp.

References Inkscape::DrawingItem::_children, and rc.

◆ _pickItem()

DrawingItem * Inkscape::DrawingGroup::_pickItem ( Geom::Point const &  p,
double  delta,
unsigned  flags 
)
overrideprotectedvirtual

◆ _renderItem()

unsigned Inkscape::DrawingGroup::_renderItem ( DrawingContext dc,
RenderContext rc,
Geom::IntRect const &  area,
unsigned  flags,
DrawingItem const *  stop_at 
) const
overrideprotectedvirtual

◆ _updateItem()

◆ pickChildren()

bool Inkscape::DrawingGroup::pickChildren ( )
inline

Definition at line 27 of file drawing-group.h.

References Inkscape::DrawingItem::_pick_children.

◆ setChildTransform()

void Inkscape::DrawingGroup::setChildTransform ( Geom::Affine const &  transform)

Set additional transform for the group.

This is applied after the normal transform and mainly useful for markers, clipping paths, etc.

Definition at line 42 of file drawing-group.cpp.

References _child_transform, Inkscape::DrawingItem::_markForRendering(), Inkscape::DrawingItem::_markForUpdate(), Geom::are_near(), current, Inkscape::DrawingItem::defer(), Geom::identity(), Geom::Affine::isIdentity(), Inkscape::DrawingItem::STATE_ALL, and Inkscape::DrawingItem::transform().

Referenced by SPUse::show().

◆ setPickChildren()

void Inkscape::DrawingGroup::setPickChildren ( bool  pick_children)

Set whether the group returns children from pick calls.

Previously this feature was called "transparent groups".

Definition at line 30 of file drawing-group.cpp.

References Inkscape::DrawingItem::_pick_children, and Inkscape::DrawingItem::defer().

Referenced by SPFlowtext::show(), SPGroup::show(), and SPText::show().

◆ tag()

int Inkscape::DrawingGroup::tag ( ) const
inlineoverridevirtual

Unlink this node and its subtree from the rendering tree and destroy.

Reimplemented from Inkscape::DrawingItem.

Reimplemented in Inkscape::DrawingPattern, and Inkscape::DrawingText.

Definition at line 25 of file drawing-group.h.

References tag_of.

Member Data Documentation

◆ _child_transform

std::unique_ptr<Geom::Affine> Inkscape::DrawingGroup::_child_transform
protected

Definition at line 41 of file drawing-group.h.

Referenced by _updateItem(), and setChildTransform().


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