/*
5 * Authors: see git history
7 * Copyright (C) 2018 Authors
8 * Released under GNU GPL v2+, read the file
'COPYING' for more information.
31 unsigned childflags = flags;
32 if (flags & SP_OBJECT_MODIFIED_FLAG) {
33 childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
35 childflags &= SP_OBJECT_MODIFIED_CASCADE;
37 std::vector<SPObject *> l;
44 if (childflags || (
child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
45 if (is<SPItem>(
child)) {
49 child->updateDisplay((
SPCtx *)&cctx, childflags);
51 child->updateDisplay(ctx, childflags);
64 if (flags & SP_OBJECT_MODIFIED_FLAG) {
65 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
68 flags &= SP_OBJECT_MODIFIED_CASCADE;
70 std::vector<SPObject *> l;
77 if (flags || (
child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
78 child->emitModified(flags);
97 if ( flags & SP_OBJECT_WRITE_BUILD ) {
98 if (
repr ==
nullptr ) {
102 std::vector<Inkscape::XML::Node *> l;
107 if ( is<SPFlowtspan>(&
child) ) {
108 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
109 }
else if ( is<SPFlowpara>(&
child) ) {
110 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
111 }
else if ( is<SPString>(&
child) ) {
119 for (
auto i=l.rbegin();i!=l.rend();++i) {
125 if ( is<SPFlowtspan>(&
child) ) {
126 child.updateRepr(flags);
127 }
else if ( is<SPFlowpara>(&
child) ) {
128 child.updateRepr(flags);
129 }
else if ( is<SPString>(&
child) ) {
130 child.getRepr()->setContent(cast<SPString>(&
child)->string.c_str());
158 unsigned childflags = flags;
159 if (flags & SP_OBJECT_MODIFIED_FLAG) {
160 childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
162 childflags &= SP_OBJECT_MODIFIED_CASCADE;
163 std::vector<SPObject *> l;
170 if (childflags || (
child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
171 if (is<SPItem>(
child)) {
175 child->updateDisplay((
SPCtx *)&cctx, childflags);
177 child->updateDisplay(ctx, childflags);
190 if (flags & SP_OBJECT_MODIFIED_FLAG) {
191 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
194 flags &= SP_OBJECT_MODIFIED_CASCADE;
195 std::vector<SPObject *> l;
202 if (flags || (
child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
203 child->emitModified(flags);
219 if ( flags&SP_OBJECT_WRITE_BUILD ) {
220 if (
repr ==
nullptr ) {
224 std::vector<Inkscape::XML::Node *> l;
229 if ( is<SPFlowtspan>(&
child) ) {
230 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
231 }
else if ( is<SPFlowpara>(&
child) ) {
232 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
233 }
else if ( is<SPString>(&
child) ) {
241 for (
auto i=l.rbegin();i!=l.rend();++i) {
247 if ( is<SPFlowtspan>(&
child) ) {
248 child.updateRepr(flags);
249 }
else if ( is<SPFlowpara>(&
child) ) {
250 child.updateRepr(flags);
251 }
else if ( is<SPString>(&
child) ) {
252 child.getRepr()->setContent(cast<SPString>(&
child)->string.c_str());
281 if (flags & SP_OBJECT_MODIFIED_FLAG) {
282 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
285 flags &= SP_OBJECT_MODIFIED_CASCADE;
287 std::vector<SPObject *> l;
294 if (flags || (
child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
295 if (is<SPItem>(
child)) {
301 child->updateDisplay(ctx, flags);
311 if (flags & SP_OBJECT_MODIFIED_FLAG) {
312 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
315 flags &= SP_OBJECT_MODIFIED_CASCADE;
317 std::vector<SPObject *> l;
324 if (flags || (
child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
325 child->emitModified(flags);
341 if ( flags&SP_OBJECT_WRITE_BUILD ) {
342 if (
repr ==
nullptr ) {
346 std::vector<Inkscape::XML::Node *> l;
351 if ( is<SPFlowtspan>(&
child) ) {
352 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
353 }
else if ( is<SPFlowpara>(&
child) ) {
354 c_repr =
child.updateRepr(xml_doc,
nullptr, flags);
355 }
else if ( is<SPString>(&
child) ) {
364 for (
auto i=l.rbegin();i!=l.rend();++i) {
370 if ( is<SPFlowtspan>(&
child) ) {
371 child.updateRepr(flags);
372 }
else if ( is<SPFlowpara>(&
child) ) {
373 child.updateRepr(flags);
374 }
else if ( is<SPString>(&
child) ) {
375 child.getRepr()->setContent(cast<SPString>(&
child)->string.c_str());
402 if (flags & SP_OBJECT_MODIFIED_FLAG) {
403 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
406 flags &= SP_OBJECT_MODIFIED_CASCADE;
410 if ( flags & SP_OBJECT_WRITE_BUILD ) {
411 if (
repr ==
nullptr ) {
438 if (flags & SP_OBJECT_MODIFIED_FLAG) {
439 flags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
442 flags &= SP_OBJECT_MODIFIED_CASCADE;
446 if ( flags & SP_OBJECT_WRITE_BUILD ) {
447 if (
repr ==
nullptr ) {
Interface for refcounted XML nodes.
virtual void addChild(Node *child, Node *after)=0
Insert another node as a child of this node.
Typed SVG document implementation.
void set(SPAttr key, char const *value) override
void build(SPDocument *document, Inkscape::XML::Node *repr) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
void modified(unsigned int flags) override
void update(SPCtx *ctx, unsigned int flags) override
void modified(unsigned int flags) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
void update(SPCtx *ctx, unsigned int flags) override
void build(SPDocument *document, Inkscape::XML::Node *repr) override
void modified(unsigned int flags) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
void set(SPAttr key, char const *value) override
void modified(unsigned int flags) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
~SPFlowregionbreak() override
void modified(unsigned int flags) override
void set(SPAttr key, char const *value) override
void update(SPCtx *ctx, unsigned int flags) override
void build(SPDocument *document, Inkscape::XML::Node *repr) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
Base class for visual SVG elements.
void modified(unsigned int flags) override
void update(SPCtx *ctx, unsigned int flags) override
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
void set(SPAttr key, char const *value) override
void build(SPDocument *document, Inkscape::XML::Node *repr) override
SPObject is an abstract base class of all of the document nodes at the SVG document level.
Inkscape::XML::Node * repr
virtual Inkscape::XML::Node * write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, unsigned int flags)
void _requireSVGVersion(unsigned major, unsigned minor)
virtual void modified(unsigned int flags)
static R & release(R &r)
Decrements the reference count of a anchored object.
static cairo_user_data_key_t key
TODO: insert short description here.
SPObject * sp_object_unref(SPObject *object, SPObject *owner)
Decrease reference count of object, with possible debugging and finalization.
SPObject * sp_object_ref(SPObject *object, SPObject *owner)
Increase reference count of object, with possible debugging.
TODO: insert short description here.
Interface for XML documents.
virtual Node * createTextNode(char const *content)=0
virtual Node * createElement(char const *name)=0
Contains transformations to document/viewport and the viewport size.
Geom::Affine i2doc
Item to document transformation.
Geom::Affine i2vp
Item to viewport transformation.
Interface for XML documents.