1 /*******************************************************************************
2  *  Project: libopencad
3  *  Purpose: OpenSource CAD formats support library
4  *  Author: Dmitry Baryshnikov, bishop.dev@gmail.com
5  *  Language: C++
6  *******************************************************************************
7  *  The MIT License (MIT)
8  *
9  *  Copyright (c) 2016 NextGIS, <info@nextgis.com>
10  *
11  *  Permission is hereby granted, free of charge, to any person obtaining a copy
12  *  of this software and associated documentation files (the "Software"), to deal
13  *  in the Software without restriction, including without limitation the rights
14  *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15  *  copies of the Software, and to permit persons to whom the Software is
16  *  furnished to do so, subject to the following conditions:
17  *
18  *  The above copyright notice and this permission notice shall be included in all
19  *  copies or substantial portions of the Software.
20  *
21  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24  *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26  *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27  *  SOFTWARE.
28  *******************************************************************************/
29  #include "cadcolors.h"
30 
31 const RGBColor CADACIColors[]
32 {
33     { 0,   0,   0 },
34     { 255, 0,   0 },
35     { 255, 255, 0 },
36     { 0,   255, 0 },
37     { 0,   255, 255 },
38     { 0,   0,   255 },
39     { 255, 0,   255 },
40     { 255, 255, 255 },
41     { 65,  65,  65 },
42     { 128, 128, 128 },
43     { 255, 0,   0 },
44     { 255, 170, 170 },
45     { 189, 0,   0 },
46     { 189, 126, 126 },
47     { 129, 0,   0 },
48     { 129, 86,  86 },
49     { 104, 0,   0 },
50     { 104, 69,  69 },
51     { 79,  0,   0 },
52     { 79,  53,  53 },
53     { 255, 63,  0 },
54     { 255, 191, 170 },
55     { 189, 46,  0 },
56     { 189, 141, 126 },
57     { 129, 31,  0 },
58     { 129, 96,  86 },
59     { 104, 25,  0 },
60     { 104, 78,  69 },
61     { 79,  19,  0 },
62     { 79,  59,  53 },
63     { 255, 127, 0 },
64     { 255, 212, 170 },
65     { 189, 94,  0 },
66     { 189, 157, 126 },
67     { 129, 64,  0 },
68     { 129, 107, 86 },
69     { 104, 52,  0 },
70     { 104, 86,  69 },
71     { 79,  39,  0 },
72     { 79,  66,  53 },
73     { 255, 191, 0 },
74     { 255, 234, 170 },
75     { 189, 141, 0 },
76     { 189, 173, 126 },
77     { 129, 96,  0 },
78     { 129, 118, 86 },
79     { 104, 78,  0 },
80     { 104, 95,  69 },
81     { 79,  59,  0 },
82     { 79,  73,  53 },
83     { 255, 255, 0 },
84     { 255, 255, 170 },
85     { 189, 189, 0 },
86     { 189, 189, 126 },
87     { 129, 129, 0 },
88     { 129, 129, 86 },
89     { 104, 104, 0 },
90     { 104, 104, 69 },
91     { 79,  79,  0 },
92     { 79,  79,  53 },
93     { 191, 255, 0 },
94     { 234, 255, 170 },
95     { 141, 189, 0 },
96     { 173, 189, 126 },
97     { 96,  129, 0 },
98     { 118, 129, 86 },
99     { 78,  104, 0 },
100     { 95,  104, 69 },
101     { 59,  79,  0 },
102     { 73,  79,  53 },
103     { 127, 255, 0 },
104     { 212, 255, 170 },
105     { 94,  189, 0 },
106     { 157, 189, 126 },
107     { 64,  129, 0 },
108     { 107, 129, 86 },
109     { 52,  104, 0 },
110     { 86,  104, 69 },
111     { 39,  79,  0 },
112     { 66,  79,  53 },
113     { 63,  255, 0 },
114     { 191, 255, 170 },
115     { 46,  189, 0 },
116     { 141, 189, 126 },
117     { 31,  129, 0 },
118     { 96,  129, 86 },
119     { 25,  104, 0 },
120     { 78,  104, 69 },
121     { 19,  79,  0 },
122     { 59,  79,  53 },
123     { 0,   255, 0 },
124     { 170, 255, 170 },
125     { 0,   189, 0 },
126     { 126, 189, 126 },
127     { 0,   129, 0 },
128     { 86,  129, 86 },
129     { 0,   104, 0 },
130     { 69,  104, 69 },
131     { 0,   79,  0 },
132     { 53,  79,  53 },
133     { 0,   255, 63 },
134     { 170, 255, 191 },
135     { 0,   189, 46 },
136     { 126, 189, 141 },
137     { 0,   129, 31 },
138     { 86,  129, 96 },
139     { 0,   104, 25 },
140     { 69,  104, 78 },
141     { 0,   79,  19 },
142     { 53,  79,  59 },
143     { 0,   255, 127 },
144     { 170, 255, 212 },
145     { 0,   189, 94 },
146     { 126, 189, 157 },
147     { 0,   129, 64 },
148     { 86,  129, 107 },
149     { 0,   104, 52 },
150     { 69,  104, 86 },
151     { 0,   79,  39 },
152     { 53,  79,  66 },
153     { 0,   255, 191 },
154     { 170, 255, 234 },
155     { 0,   189, 141 },
156     { 126, 189, 173 },
157     { 0,   129, 96 },
158     { 86,  129, 118 },
159     { 0,   104, 78 },
160     { 69,  104, 95 },
161     { 0,   79,  59 },
162     { 53,  79,  73 },
163     { 0,   255, 255 },
164     { 170, 255, 255 },
165     { 0,   189, 189 },
166     { 126, 189, 189 },
167     { 0,   129, 129 },
168     { 86,  129, 129 },
169     { 0,   104, 104 },
170     { 69,  104, 104 },
171     { 0,   79,  79 },
172     { 53,  79,  79 },
173     { 0,   191, 255 },
174     { 170, 234, 255 },
175     { 0,   141, 189 },
176     { 126, 173, 189 },
177     { 0,   96,  129 },
178     { 86,  118, 129 },
179     { 0,   78,  104 },
180     { 69,  95,  104 },
181     { 0,   59,  79 },
182     { 53,  73,  79 },
183     { 0,   127, 255 },
184     { 170, 212, 255 },
185     { 0,   94,  189 },
186     { 126, 157, 189 },
187     { 0,   64,  129 },
188     { 86,  107, 129 },
189     { 0,   52,  104 },
190     { 69,  86,  104 },
191     { 0,   39,  79 },
192     { 53,  66,  79 },
193     { 0,   63,  255 },
194     { 170, 191, 255 },
195     { 0,   46,  189 },
196     { 126, 141, 189 },
197     { 0,   31,  129 },
198     { 86,  96,  129 },
199     { 0,   25,  104 },
200     { 69,  78,  104 },
201     { 0,   19,  79 },
202     { 53,  59,  79 },
203     { 0,   0,   255 },
204     { 170, 170, 255 },
205     { 0,   0,   189 },
206     { 126, 126, 189 },
207     { 0,   0,   129 },
208     { 86,  86,  129 },
209     { 0,   0,   104 },
210     { 69,  69,  104 },
211     { 0,   0,   79 },
212     { 53,  53,  79 },
213     { 63,  0,   255 },
214     { 191, 170, 255 },
215     { 46,  0,   189 },
216     { 141, 126, 189 },
217     { 31,  0,   129 },
218     { 96,  86,  129 },
219     { 25,  0,   104 },
220     { 78,  69,  104 },
221     { 19,  0,   79 },
222     { 59,  53,  79 },
223     { 127, 0,   255 },
224     { 212, 170, 255 },
225     { 94,  0,   189 },
226     { 157, 126, 189 },
227     { 64,  0,   129 },
228     { 107, 86,  129 },
229     { 52,  0,   104 },
230     { 86,  69,  104 },
231     { 39,  0,   79 },
232     { 66,  53,  79 },
233     { 191, 0,   255 },
234     { 234, 170, 255 },
235     { 141, 0,   189 },
236     { 173, 126, 189 },
237     { 96,  0,   129 },
238     { 118, 86,  129 },
239     { 78,  0,   104 },
240     { 95,  69,  104 },
241     { 59,  0,   79 },
242     { 73,  53,  79 },
243     { 255, 0,   255 },
244     { 255, 170, 255 },
245     { 189, 0,   189 },
246     { 189, 126, 189 },
247     { 129, 0,   129 },
248     { 129, 86,  129 },
249     { 104, 0,   104 },
250     { 104, 69,  104 },
251     { 79,  0,   79 },
252     { 79,  53,  79 },
253     { 255, 0,   191 },
254     { 255, 170, 234 },
255     { 189, 0,   141 },
256     { 189, 126, 173 },
257     { 129, 0,   96 },
258     { 129, 86,  118 },
259     { 104, 0,   78 },
260     { 104, 69,  95 },
261     { 79,  0,   59 },
262     { 79,  53,  73 },
263     { 255, 0,   127 },
264     { 255, 170, 212 },
265     { 189, 0,   94 },
266     { 189, 126, 157 },
267     { 129, 0,   64 },
268     { 129, 86,  107 },
269     { 104, 0,   52 },
270     { 104, 69,  86 },
271     { 79,  0,   39 },
272     { 79,  53,  66 },
273     { 255, 0,   63 },
274     { 255, 170, 191 },
275     { 189, 0,   46 },
276     { 189, 126, 141 },
277     { 129, 0,   31 },
278     { 129, 86,  96 },
279     { 104, 0,   25 },
280     { 104, 69,  78 },
281     { 79,  0,   19 },
282     { 79,  53,  59 },
283     { 51,  51,  51 },
284     { 80,  80,  80 },
285     { 105, 105, 105 },
286     { 130, 130, 130 },
287     { 190, 190, 190 },
288     { 255, 255, 255 }
289 };
290 
getCADACIColor(short index)291 const RGBColor getCADACIColor(short index)
292 {
293     if(index < 0 || index > 255)
294         return {255, 255, 255};
295     return CADACIColors[index];
296 }
297