1 // Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 // File : Material_ResourceMgr.cxx
21 // Author : Margarita KARPUNINA, Open CASCADE S.A.S. (margarita.karpunina@opencascade.com)
23 #include "Material_ResourceMgr.h"
25 //#include "Qtx.h" // used to print colors of global materials
26 //#include <iostream> // used to print colors of global materials
29 \class Material_ResourceMgr
30 \brief Material properties resources manager.
32 This class is used to manage the material properties throughout the application
33 in the similar way as QtxResourceMgr does it with application preferences.
35 Standard material types are stored in the global application settings files
36 (named as SalomeMaterial.xml). User-defined materials are stored in user's home
37 directory - in the file .SalomeMaterialrc.
39 The Material_ResourceMgr class is used by material properties dialog box
40 (GEOMToolsGUI_MaterialPropertiesDlg class).
46 Material_ResourceMgr::Material_ResourceMgr()
47 : QtxResourceMgr( "SalomeMaterial", "%1Config" )
49 if ( dirList().isEmpty() && ::getenv( "GEOM_ROOT_DIR" ) )
50 setDirList( QStringList() << Qtx::addSlash( ::getenv( "GEOM_ROOT_DIR" ) ) + "share/salome/resources/geom" );
51 setCurrentFormat( "xml" );
54 // Get string equivalent for colors of global materials ---->
58 // 1. ============= Plastic
59 std::cout << "---- Plastic:" << std::endl;
61 c.setRgbF(0.2, 0.2, 0.2);
62 s = Qtx::colorToString( c );
63 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
65 c.setRgbF(0.0, 0.0, 0.0);
66 s = Qtx::colorToString( c );
67 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
69 c.setRgbF(1.0, 1.0, 1.0);
70 s = Qtx::colorToString( c );
71 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
73 // 2. ============= Shiny plastic
74 std::cout << "---- Shiny plastic:" << std::endl;
76 c.setRgbF(0.2, 0.2, 0.2);
77 s = Qtx::colorToString( c );
78 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
80 c.setRgbF(0.0, 0.0, 0.0);
81 s = Qtx::colorToString( c );
82 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
84 c.setRgbF(1.0, 1.0, 1.0);
85 s = Qtx::colorToString( c );
86 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
88 // 3. ============= Satin
89 std::cout << "---- Satin:" << std::endl;
91 c.setRgbF(0.2, 0.2, 0.2);
92 s = Qtx::colorToString( c );
93 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
95 c.setRgbF(0.0, 0.0, 0.0);
96 s = Qtx::colorToString( c );
97 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
99 c.setRgbF(1.0, 1.0, 1.0);
100 s = Qtx::colorToString( c );
101 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
103 // 4. ============= Metal
104 std::cout << "---- Metal:" << std::endl;
106 c.setRgbF(0.0, 0.0, 0.0);
107 s = Qtx::colorToString( c );
108 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
110 c.setRgbF(1.0, 1.0, 1.0);
111 s = Qtx::colorToString( c );
112 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
114 // 5. ============= Brass
115 std::cout << "---- Brass:" << std::endl;
117 c.setRgbF(0.329412, 0.223529, 0.027451);
118 s = Qtx::colorToString( c );
119 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
121 c.setRgbF(0.780392, 0.568627, 0.113725);
122 s = Qtx::colorToString( c );
123 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
125 c.setRgbF(0.992157, 0.941176, 0.807843);
126 s = Qtx::colorToString( c );
127 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
129 // 6. ============= Bronze
130 std::cout << "---- Bronze:" << std::endl;
132 c.setRgbF(0.2125, 0.1275, 0.054);
133 s = Qtx::colorToString( c );
134 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
136 c.setRgbF(0.714, 0.4284, 0.18144);
137 s = Qtx::colorToString( c );
138 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
140 c.setRgbF(0.393548, 0.271906, 0.166721);
141 s = Qtx::colorToString( c );
142 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
144 // 7. ============= Copper
145 std::cout << "---- Copper:" << std::endl;
147 c.setRgbF(0.33, 0.26, 0.23);
148 s = Qtx::colorToString( c );
149 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
151 c.setRgbF(0.50, 0.11, 0.0);
152 s = Qtx::colorToString( c );
153 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
155 c.setRgbF(0.95, 0.73, 0.0);
156 s = Qtx::colorToString( c );
157 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
159 // 8. ============= Gold
160 std::cout << "---- Gold:" << std::endl;
162 c.setRgbF(1.0, 0.76862745, 0.31764706);
163 s = Qtx::colorToString( c );
164 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
166 c.setRgbF(1.0, 0.69, 0.0);
167 s = Qtx::colorToString( c );
168 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
170 c.setRgbF(1.0, 0.98, 0.78);
171 s = Qtx::colorToString( c );
172 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
174 // 9. ============= Pewter
175 std::cout << "---- Pewter:" << std::endl;
177 c.setRgbF(0.105882, 0.058824, 0.113725);
178 s = Qtx::colorToString( c );
179 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
181 c.setRgbF(0.427451, 0.470588, 0.541176);
182 s = Qtx::colorToString( c );
183 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
185 c.setRgbF(0.333333, 0.333333, 0.521569);
186 s = Qtx::colorToString( c );
187 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
189 // 10. ============= Plaster
190 std::cout << "---- Plaster:" << std::endl;
192 c.setRgbF(0.19225, 0.19225, 0.19225);
193 s = Qtx::colorToString( c );
194 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
196 c.setRgbF(0.50754, 0.50754, 0.50754);
197 s = Qtx::colorToString( c );
198 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
200 c.setRgbF(0.508273, 0.508273, 0.508273);
201 s = Qtx::colorToString( c );
202 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
204 // 11. ============= Silver
205 std::cout << "---- Silver:" << std::endl;
207 c.setRgbF(0.19225, 0.19225, 0.19225);
208 s = Qtx::colorToString( c );
209 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
211 c.setRgbF(0.50754, 0.50754, 0.50754);
212 s = Qtx::colorToString( c );
213 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
215 c.setRgbF(0.508273, 0.508273, 0.508273);
216 s = Qtx::colorToString( c );
217 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
219 // 12. ============= Steel
220 std::cout << "---- Steel:" << std::endl;
222 c.setRgbF(0.2, 0.2, 0.2);
223 s = Qtx::colorToString( c );
224 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
226 c.setRgbF(0.0, 0.0, 0.0);
227 s = Qtx::colorToString( c );
228 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
230 c.setRgbF(1.0, 1.0, 1.0);
231 s = Qtx::colorToString( c );
232 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
234 // 13. ============= Stone
235 std::cout << "---- Stone:" << std::endl;
237 c.setRgbF(1.0, 0.8, 0.62);
238 s = Qtx::colorToString( c );
239 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
241 c.setRgbF(1.0, 0.8, 0.62);
242 s = Qtx::colorToString( c );
243 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
245 c.setRgbF(0.98, 1.0, 0.60);
246 s = Qtx::colorToString( c );
247 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
249 // 14. ============= Chrome
250 std::cout << "---- Chrome:" << std::endl;
252 c.setRgbF(0.35, 0.35, 0.35);
253 s = Qtx::colorToString( c );
254 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
256 c.setRgbF(0.4, 0.4, 0.4);
257 s = Qtx::colorToString( c );
258 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
260 c.setRgbF(0.974597, 0.974597, 0.974597);
261 s = Qtx::colorToString( c );
262 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
264 // 15. ============= Neon
265 std::cout << "---- Neon:" << std::endl;
267 c.setRgbF(1.0, 1.0, 1.0);
268 s = Qtx::colorToString( c );
269 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
271 c.setRgbF(1.0, 1.0, 1.0);
272 s = Qtx::colorToString( c );
273 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
275 c.setRgbF(1.0, 1.0, 1.0);
276 s = Qtx::colorToString( c );
277 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
279 c.setRgbF(0.0, 1.0, 0.46);
280 s = Qtx::colorToString( c );
281 std::cout << " emissive color: " << s.toStdString().c_str() << std::endl;
283 // 16. ============= Aluminium
284 std::cout << "---- Aluminium:" << std::endl;
286 c.setRgbF(0.30, 0.30, 0.30);
287 s = Qtx::colorToString( c );
288 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
290 c.setRgbF(0.30, 0.30, 0.30);
291 s = Qtx::colorToString( c );
292 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
294 c.setRgbF(0.70, 0.70, 0.80);
295 s = Qtx::colorToString( c );
296 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
298 // 17. ============= Obsidian
299 std::cout << "---- Obsidian:" << std::endl;
301 c.setRgbF(0.05375, 0.05, 0.06625);
302 s = Qtx::colorToString( c );
303 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
305 c.setRgbF(0.18275, 0.17, 0.22525);
306 s = Qtx::colorToString( c );
307 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
309 c.setRgbF(0.332741, 0.328634, 0.346435);
310 s = Qtx::colorToString( c );
311 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
313 // 18. ============= Jade
314 std::cout << "---- Jade:" << std::endl;
316 c.setRgbF(0.135, 0.2225, 0.1575);
317 s = Qtx::colorToString( c );
318 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
320 c.setRgbF(0.54, 0.89, 0.63);
321 s = Qtx::colorToString( c );
322 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
324 c.setRgbF(0.316228, 0.316228, 0.316228);
325 s = Qtx::colorToString( c );
326 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
328 // 19. ============= Default material
329 std::cout << "---- Default material:" << std::endl;
331 c.setRgbF(0.2, 0.2, 0.2);
332 s = Qtx::colorToString( c );
333 std::cout << " ambient color: " << s.toStdString().c_str() << std::endl;
335 c.setRgbF(0.0, 0.0, 0.0);
336 s = Qtx::colorToString( c );
337 std::cout << " diffuse color: " << s.toStdString().c_str() << std::endl;
339 c.setRgbF(1.0, 1.0, 1.0);
340 s = Qtx::colorToString( c );
341 std::cout << " specular color: " << s.toStdString().c_str() << std::endl;
343 // Get string equivalent for colors of global materials <----
350 Material_ResourceMgr::~Material_ResourceMgr()
355 \brief Get list of avaiable materials
356 \param theType material type
357 \param theSort if \c true (default), returns a list of materials sorted by name
358 \return list of avaiable materials names
360 QStringList Material_ResourceMgr::materials( MaterialType theType, bool theSort )
364 WorkingMode m = workingMode();
368 setWorkingMode( IgnoreUserValues );
373 setWorkingMode( AllowUserValues );
375 setWorkingMode( IgnoreUserValues );
376 QMutableListIterator<QString> it( sl );
377 while ( it.hasNext() ) {
378 QString s = it.next();
379 if ( hasSection( s ) ) it.remove();
384 setWorkingMode( AllowUserValues );
400 \brief Get list of materials names for preferences dialog
401 \return list of materials names
403 QStringList Material_ResourceMgr::getPreferenceMaterialsNames()
405 QStringList aMaterialsList = materials( Material_ResourceMgr::All );
406 return aMaterialsList;