86311daa7e39ad869dfea8c0a2ed1f005e97a458
[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  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  *
11  */
12
13 #ifndef ANNOTATION_HXX_
14 #define ANNOTATION_HXX_
15
16 #include <string>
17 #include <vector>
18
19 #include "utilities.hxx"
20 #include "Model.hxx"
21 #include "model/BaseObject.hxx"
22
23 namespace org_scilab_modules_scicos
24 {
25 namespace model
26 {
27
28 class Annotation: public BaseObject
29 {
30 public:
31     Annotation(): BaseObject(ANNOTATION), m_parentDiagram(ScicosID()), m_parentBlock(ScicosID()), m_geometry{0, 0, 2, 1},
32         m_description("Text"), m_font("2"), m_font_size("1"), m_style(""), m_relatedTo(ScicosID()) {};
33     Annotation(const Annotation& o) : BaseObject(ANNOTATION), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_geometry(o.m_geometry),
34         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) {};
35     ~Annotation() = default;
36
37 private:
38     friend class ::org_scilab_modules_scicos::Model;
39
40     void getDescription(std::string& data) const
41     {
42         data = m_description;
43     }
44
45     update_status_t setDescription(const std::string& data)
46     {
47         if (data == m_description)
48         {
49             return NO_CHANGES;
50         }
51
52         m_description = data;
53         return SUCCESS;
54     }
55
56     void getFont(std::string& data) const
57     {
58         data = m_font;
59     }
60
61     update_status_t setFont(const std::string& data)
62     {
63         if (data == m_font)
64         {
65             return NO_CHANGES;
66         }
67
68         m_font = data;
69         return SUCCESS;
70     }
71
72     void getFontSize(std::string& data) const
73     {
74         data = m_font_size;
75     }
76
77     update_status_t setFontSize(const std::string& data)
78     {
79         if (data == m_font_size)
80         {
81             return NO_CHANGES;
82         }
83
84         m_font_size = data;
85         return SUCCESS;
86     }
87
88     void getStyle(std::string& data) const
89     {
90         data = m_style;
91     }
92
93     update_status_t setStyle(const std::string& data)
94     {
95         if (data == m_style)
96         {
97             return NO_CHANGES;
98         }
99
100         m_style = data;
101         return SUCCESS;
102     }
103
104     void getGeometry(std::vector<double>& v) const
105     {
106         m_geometry.fill(v);
107     }
108
109     update_status_t setGeometry(const std::vector<double>& v)
110     {
111         if (v.size() != 4)
112         {
113             return FAIL;
114         }
115
116         Geometry g = Geometry(v);
117         if (g == m_geometry)
118         {
119             return NO_CHANGES;
120         }
121
122         m_geometry = g;
123         return SUCCESS;
124     }
125
126     void getParentDiagram(ScicosID& v) const
127     {
128         v = m_parentDiagram;
129     }
130
131     update_status_t setParentDiagram(const ScicosID v)
132     {
133         if (v == m_parentDiagram)
134         {
135             return NO_CHANGES;
136         }
137
138         m_parentDiagram = v;
139         return SUCCESS;
140     }
141
142     void getParentBlock(ScicosID& v) const
143     {
144         v = m_parentBlock;
145     }
146
147     update_status_t setParentBlock(const ScicosID v)
148     {
149         if (v == m_parentBlock)
150         {
151             return NO_CHANGES;
152         }
153
154         m_parentBlock = v;
155         return SUCCESS;
156     }
157
158     ScicosID getRelatedTo() const
159     {
160         return m_relatedTo;
161     }
162
163     update_status_t setRelatedTo(ScicosID relatedTo)
164     {
165         if (this->m_relatedTo == relatedTo)
166         {
167             return NO_CHANGES;
168         }
169
170         this->m_relatedTo = relatedTo;
171         return SUCCESS;
172     }
173
174 private:
175     ScicosID m_parentDiagram;
176     ScicosID m_parentBlock;
177
178     Geometry m_geometry;
179     std::string m_description;
180     std::string m_font;
181     std::string m_font_size;
182     std::string m_style;
183     ScicosID m_relatedTo;
184 };
185
186 } /* namespace model */
187 } /* namespace org_scilab_modules_scicos */
188
189 #endif /* ANNOTATION_HXX_ */