17d4c115c316bc5afd5d914b4db404292aac5c0e
[scilab.git] / scilab / modules / scicos / src / cpp / model / Annotation.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #ifndef ANNOTATION_HXX_
17 #define ANNOTATION_HXX_
18
19 #include <string>
20 #include <vector>
21
22 #include "utilities.hxx"
23 #include "Model.hxx"
24 #include "model/BaseObject.hxx"
25
26 namespace org_scilab_modules_scicos
27 {
28 namespace model
29 {
30
31 class Annotation: public BaseObject
32 {
33 public:
34     Annotation(): BaseObject(ANNOTATION), m_parentDiagram(ScicosID()), m_parentBlock(ScicosID()),
35         m_description("Text"), m_font("2"), m_font_size("1"), m_style(""), m_relatedTo(ScicosID()), m_uid()
36     {
37         m_geometry = {0, 0, 2, 1};
38     };
39     Annotation(const Annotation& o) : BaseObject(ANNOTATION), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_geometry(o.m_geometry),
40         m_description(o.m_description), m_font(o.m_font), m_font_size(o.m_font_size), m_style(o.m_style), m_relatedTo(o.m_relatedTo), m_uid(o.m_uid) {};
41     ~Annotation() = default;
42
43 private:
44     friend class ::org_scilab_modules_scicos::Model;
45
46     void getDescription(std::string& data) const
47     {
48         data = m_description;
49     }
50
51     update_status_t setDescription(const std::string& data)
52     {
53         if (data == m_description)
54         {
55             return NO_CHANGES;
56         }
57
58         m_description = data;
59         return SUCCESS;
60     }
61
62     void getFont(std::string& data) const
63     {
64         data = m_font;
65     }
66
67     update_status_t setFont(const std::string& data)
68     {
69         if (data == m_font)
70         {
71             return NO_CHANGES;
72         }
73
74         m_font = data;
75         return SUCCESS;
76     }
77
78     void getFontSize(std::string& data) const
79     {
80         data = m_font_size;
81     }
82
83     update_status_t setFontSize(const std::string& data)
84     {
85         if (data == m_font_size)
86         {
87             return NO_CHANGES;
88         }
89
90         m_font_size = data;
91         return SUCCESS;
92     }
93
94     void getStyle(std::string& data) const
95     {
96         data = m_style;
97     }
98
99     update_status_t setStyle(const std::string& data)
100     {
101         if (data == m_style)
102         {
103             return NO_CHANGES;
104         }
105
106         m_style = data;
107         return SUCCESS;
108     }
109
110     void getGeometry(std::vector<double>& v) const
111     {
112         m_geometry.fill(v);
113     }
114
115     update_status_t setGeometry(const std::vector<double>& v)
116     {
117         if (v.size() != 4)
118         {
119             return FAIL;
120         }
121
122         Geometry g = Geometry(v);
123         if (g == m_geometry)
124         {
125             return NO_CHANGES;
126         }
127
128         m_geometry = g;
129         return SUCCESS;
130     }
131
132     void getParentDiagram(ScicosID& v) const
133     {
134         v = m_parentDiagram;
135     }
136
137     update_status_t setParentDiagram(const ScicosID v)
138     {
139         if (v == m_parentDiagram)
140         {
141             return NO_CHANGES;
142         }
143
144         m_parentDiagram = v;
145         return SUCCESS;
146     }
147
148     void getParentBlock(ScicosID& v) const
149     {
150         v = m_parentBlock;
151     }
152
153     update_status_t setParentBlock(const ScicosID v)
154     {
155         if (v == m_parentBlock)
156         {
157             return NO_CHANGES;
158         }
159
160         m_parentBlock = v;
161         return SUCCESS;
162     }
163
164     ScicosID getRelatedTo() const
165     {
166         return m_relatedTo;
167     }
168
169     update_status_t setRelatedTo(ScicosID relatedTo)
170     {
171         if (this->m_relatedTo == relatedTo)
172         {
173             return NO_CHANGES;
174         }
175
176         this->m_relatedTo = relatedTo;
177         return SUCCESS;
178     }
179
180     void getUID(std::string& data) const
181     {
182         data = m_uid;
183     }
184
185     update_status_t setUID(const std::string& data)
186     {
187         if (data == m_uid)
188         {
189             return NO_CHANGES;
190         }
191
192         m_uid = data;
193         return SUCCESS;
194     }
195
196 private:
197     ScicosID m_parentDiagram;
198     ScicosID m_parentBlock;
199
200     Geometry m_geometry;
201     std::string m_description;
202     std::string m_font;
203     std::string m_font_size;
204     std::string m_style;
205     ScicosID m_relatedTo;
206     std::string m_uid;
207 };
208
209 } /* namespace model */
210 } /* namespace org_scilab_modules_scicos */
211
212 #endif /* ANNOTATION_HXX_ */