1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /** @file 3 * TODO: insert short description here 4 *//* 5 * Authors: see git history 6 * 7 * Copyright (C) 2018 Authors 8 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 9 */ 10 #ifndef SEEN_SP_ITEM_FLOWDIV_H 11 #define SEEN_SP_ITEM_FLOWDIV_H 12 13 /* 14 */ 15 16 #include "sp-object.h" 17 #include "sp-item.h" 18 19 #define SP_FLOWDIV(obj) (dynamic_cast<SPFlowdiv*>((SPObject*)obj)) 20 #define SP_IS_FLOWDIV(obj) (dynamic_cast<const SPFlowdiv*>((SPObject*)obj) != NULL) 21 22 #define SP_FLOWTSPAN(obj) (dynamic_cast<SPFlowtspan*>((SPObject*)obj)) 23 #define SP_IS_FLOWTSPAN(obj) (dynamic_cast<const SPFlowtspan*>((SPObject*)obj) != NULL) 24 25 #define SP_FLOWPARA(obj) (dynamic_cast<SPFlowpara*>((SPObject*)obj)) 26 #define SP_IS_FLOWPARA(obj) (dynamic_cast<const SPFlowpara*>((SPObject*)obj) != NULL) 27 28 #define SP_FLOWLINE(obj) (dynamic_cast<SPFlowline*>((SPObject*)obj)) 29 #define SP_IS_FLOWLINE(obj) (dynamic_cast<const SPFlowline*>((SPObject*)obj) != NULL) 30 31 #define SP_FLOWREGIONBREAK(obj) (dynamic_cast<SPFlowregionbreak*>((SPObject*)obj)) 32 #define SP_IS_FLOWREGIONBREAK(obj) (dynamic_cast<const SPFlowregionbreak*>((SPObject*)obj) != NULL) 33 34 // these 3 are derivatives of SPItem to get the automatic style handling 35 class SPFlowdiv : public SPItem { 36 public: 37 SPFlowdiv(); 38 ~SPFlowdiv() override; 39 40 protected: 41 void build(SPDocument *document, Inkscape::XML::Node *repr) override; 42 void release() override; 43 void update(SPCtx* ctx, unsigned int flags) override; 44 void modified(unsigned int flags) override; 45 46 void set(SPAttr key, char const* value) override; 47 Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; 48 }; 49 50 class SPFlowtspan : public SPItem { 51 public: 52 SPFlowtspan(); 53 ~SPFlowtspan() override; 54 55 protected: 56 void build(SPDocument *document, Inkscape::XML::Node *repr) override; 57 void release() override; 58 void update(SPCtx* ctx, unsigned int flags) override; 59 void modified(unsigned int flags) override; 60 61 void set(SPAttr key, char const* value) override; 62 Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; 63 }; 64 65 class SPFlowpara : public SPItem { 66 public: 67 SPFlowpara(); 68 ~SPFlowpara() override; 69 70 protected: 71 void build(SPDocument *document, Inkscape::XML::Node *repr) override; 72 void release() override; 73 void update(SPCtx* ctx, unsigned int flags) override; 74 void modified(unsigned int flags) override; 75 76 void set(SPAttr key, char const* value) override; 77 Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; 78 }; 79 80 // these do not need any style 81 class SPFlowline : public SPObject { 82 public: 83 SPFlowline(); 84 ~SPFlowline() override; 85 86 protected: 87 void release() override; 88 void modified(unsigned int flags) override; 89 90 Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; 91 }; 92 93 class SPFlowregionbreak : public SPObject { 94 public: 95 SPFlowregionbreak(); 96 ~SPFlowregionbreak() override; 97 98 protected: 99 void release() override; 100 void modified(unsigned int flags) override; 101 102 Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; 103 }; 104 105 #endif 106