99cb8d40f28fde42d3b72fdcf28471f7615b329f
[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 "Model.hxx"
20 #include "model/BaseObject.hxx"
21
22 namespace org_scilab_modules_scicos
23 {
24 namespace model
25 {
26
27 class Annotation: public BaseObject
28 {
29     friend class ::org_scilab_modules_scicos::Model;
30
31 private:
32     Annotation(): BaseObject(ANNOTATION), parentDiagram(0),
33         description(std::string("Text")), font(std::string("2")), font_size(std::string("1")), relatedTo(0)
34     {
35         std::vector<double> geom (4, 0);
36         geom[2] = 2;
37         geom[3] = 1;
38         geometry = Geometry(geom);
39     };
40     Annotation(const Annotation& o) : BaseObject(ANNOTATION), parentDiagram(o.parentDiagram), geometry(o.geometry),
41         description(o.description), font(o.font), font_size(o.font_size), relatedTo(o.relatedTo) {};
42     ~Annotation() {};
43
44     void getDescription(std::string& data) const
45     {
46         data = description;
47     }
48
49     update_status_t setDescription(const std::string& data)
50     {
51         if (data == description)
52         {
53             return NO_CHANGES;
54         }
55
56         description = data;
57         return SUCCESS;
58     }
59
60     void getFont(std::string& data) const
61     {
62         data = font;
63     }
64
65     update_status_t setFont(const std::string& data)
66     {
67         if (data == font)
68         {
69             return NO_CHANGES;
70         }
71
72         font = data;
73         return SUCCESS;
74     }
75
76     void getFontSize(std::string& data) const
77     {
78         data = font_size;
79     }
80
81     update_status_t setFontSize(const std::string& data)
82     {
83         if (data == font_size)
84         {
85             return NO_CHANGES;
86         }
87
88         font_size = data;
89         return SUCCESS;
90     }
91
92     void getGeometry(std::vector<double>& v) const
93     {
94         geometry.fill(v);
95     }
96
97     update_status_t setGeometry(const std::vector<double>& v)
98     {
99         if (v.size() != 4)
100         {
101             return FAIL;
102         }
103
104         Geometry g = Geometry(v);
105         if (g == geometry)
106         {
107             return NO_CHANGES;
108         }
109
110         geometry = g;
111         return SUCCESS;
112     }
113
114     ScicosID getParentDiagram() const
115     {
116         return parentDiagram;
117     }
118
119     update_status_t setParentDiagram(ScicosID parentDiagram)
120     {
121         if (this->parentDiagram == parentDiagram)
122         {
123             return NO_CHANGES;
124         }
125
126         this->parentDiagram = parentDiagram;
127         return SUCCESS;
128     }
129
130     ScicosID getRelatedTo() const
131     {
132         return relatedTo;
133     }
134
135     update_status_t setRelatedTo(ScicosID relatedTo)
136     {
137         if (this->relatedTo == relatedTo)
138         {
139             return NO_CHANGES;
140         }
141
142         this->relatedTo = relatedTo;
143         return SUCCESS;
144     }
145
146 private:
147     ScicosID parentDiagram;
148     Geometry geometry;
149     std::string description;
150     std::string font;
151     std::string font_size;
152     ScicosID relatedTo;
153 };
154
155 } /* namespace model */
156 } /* namespace org_scilab_modules_scicos */
157
158 #endif /* ANNOTATION_HXX_ */