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