0022378: Small patch to fix buffer vulnerability of Draw
[occt.git] / src / Aspect / Aspect_WidthMapEntry.cxx
CommitLineData
7fd59977 1#include <Aspect_WidthMapEntry.ixx>
2#include <Aspect_Units.hxx>
3
4Aspect_WidthMapEntry::Aspect_WidthMapEntry() {
5
6 SetPredefinedStyle(Aspect_WOL_THIN);
7 MyIndexIsDef = Standard_True;
8 MyIndex = 0;
9
10}
11
12Aspect_WidthMapEntry::Aspect_WidthMapEntry (const Standard_Integer index, const Aspect_WidthOfLine style) {
13
14 SetPredefinedStyle(style);
15 MyIndexIsDef = Standard_True;
16 MyIndex = index;
17
18}
19
20Aspect_WidthMapEntry::Aspect_WidthMapEntry (const Standard_Integer index, const Quantity_Length width) {
21
22 if( width < 0. )
23 Aspect_BadAccess::Raise("Bad Line Width") ;
24
25 MyType = Aspect_WOL_USERDEFINED ;
26 MyTypeIsDef = Standard_True;
27 MyIndexIsDef = Standard_True;
28 MyIndex = index;
29 MyWidth = width;
30
31}
32
33Aspect_WidthMapEntry::Aspect_WidthMapEntry (const Aspect_WidthMapEntry& entry) {
34
35 if ( !entry.MyTypeIsDef || !entry.MyIndexIsDef ) {
36 Aspect_BadAccess::Raise("Unallocated WidthMapEntry") ;
37 }
38 else {
39 MyTypeIsDef = Standard_True;
40 MyIndexIsDef = Standard_True;
41 MyIndex = entry.MyIndex;
42 MyType = entry.MyType;
43 MyWidth = entry.MyWidth;
44 }
45}
46
47void Aspect_WidthMapEntry::SetValue (const Standard_Integer index, const Aspect_WidthOfLine style) {
48
49 SetPredefinedStyle(style);
50 MyIndexIsDef = Standard_True;
51 MyIndex = index;
52
53}
54
55void Aspect_WidthMapEntry::SetValue (const Standard_Integer index, const Quantity_Length width) {
56
57 if( width < 0. )
58 Aspect_BadAccess::Raise("Bad Line Width") ;
59
60 MyType = Aspect_WOL_USERDEFINED ;
61 MyTypeIsDef = Standard_True;
62 MyWidth = width ;
63 MyIndexIsDef = Standard_True;
64 MyIndex = index;
65
66}
67
68void Aspect_WidthMapEntry::SetValue (const Aspect_WidthMapEntry& entry) {
69
70 if ( !entry.MyTypeIsDef || !entry.MyIndexIsDef ) {
71 Aspect_BadAccess::Raise("Unallocated WidthMapEntry") ;
72 }
73 else {
74 MyTypeIsDef = Standard_True;
75 MyIndexIsDef = Standard_True;
76 MyIndex = entry.MyIndex;
77 MyType = entry.MyType;
78 MyWidth = entry.MyWidth;
79 }
80
81}
82
83void Aspect_WidthMapEntry::SetType (const Aspect_WidthOfLine style) {
84
85 SetPredefinedStyle(style);
86
87}
88
89void Aspect_WidthMapEntry::SetWidth (const Quantity_Length width) {
90
91 if( width < 0. )
92 Aspect_BadAccess::Raise("Bad Line Width") ;
93
94 MyType = Aspect_WOL_USERDEFINED ;
95 MyTypeIsDef = Standard_True;
96 MyWidth = width ;
97
98}
99
100Aspect_WidthOfLine Aspect_WidthMapEntry::Type () const {
101
102 if ( !MyTypeIsDef || !MyIndexIsDef )
103 Aspect_BadAccess::Raise("Unallocated WidthMapEntry") ;
104
105 return MyType;
106
107}
108
109Standard_Real Aspect_WidthMapEntry::Width () const {
110
111 if ( !MyTypeIsDef || !MyIndexIsDef )
112 Aspect_BadAccess::Raise("Unallocated WidthMapEntry") ;
113
114 return MyWidth;
115
116}
117
118void Aspect_WidthMapEntry::SetIndex (const Standard_Integer index) {
119
120 MyTypeIsDef = Standard_True;
121 MyIndex = index;
122
123}
124
125Standard_Integer Aspect_WidthMapEntry::Index () const {
126
127 if ( !MyTypeIsDef || !MyIndexIsDef )
128 Aspect_BadAccess::Raise("Unallocated WidthMapEntry");
129
130 return MyIndex;
131
132}
133
134Standard_Boolean Aspect_WidthMapEntry::IsAllocated () const {
135
136 return ( MyTypeIsDef && MyIndexIsDef ) ;
137
138}
139
140void Aspect_WidthMapEntry::Free () {
141
142 MyTypeIsDef = Standard_False;
143 MyIndexIsDef = Standard_False;
144
145}
146
147void Aspect_WidthMapEntry::Dump () const {
148
149 cout << " Aspect_WidthMapEntry::Dump ()\n";
150 cout << " MyTypeIsDef : " << (MyTypeIsDef) ? "True\n" : "False\n";
151 cout << " MyIndexIsDef : " << (MyIndexIsDef) ? "True\n" : "False\n";
152 cout << " TypeOfWidth : " << (Standard_Integer) MyType << "\n";//WNT
153 cout << " LineWidth : " << MyWidth << "\n";
154 cout << flush;
155}
156
157void Aspect_WidthMapEntry::SetPredefinedStyle(const Aspect_WidthOfLine Style) {
158
159 MyType = Style ;
160 MyTypeIsDef = Standard_True;
161 switch ( Style ) {
162 case Aspect_WOL_USERDEFINED :
163 Aspect_BadAccess::Raise("Bad Predefined Line Width Style") ;
164 case Aspect_WOL_THIN:
165 MyWidth = 0.25 MILLIMETER ;
166 break ;
167 case Aspect_WOL_MEDIUM :
168 MyWidth = 0.5 MILLIMETER ;
169 break ;
170 case Aspect_WOL_THICK :
171 MyWidth = 0.7 MILLIMETER ;
172 break ;
173 case Aspect_WOL_VERYTHICK :
174 MyWidth = 1.5 MILLIMETER ;
175 break ;
176 }
177}