fixed: stay with old cmake qt link setup (policy CMP0020)
[opensg.git] / Source / System / State / Base / OSGMaterialChunkBase.cpp
blob4d4191be9e29c9b394a9671d1fd382e194c5c038
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 /*****************************************************************************\
40 *****************************************************************************
41 ** **
42 ** This file is automatically generated. **
43 ** **
44 ** Any changes made to this file WILL be lost when it is **
45 ** regenerated, which can become necessary at any time. **
46 ** **
47 ** Do not change this file, changes should be done in the derived **
48 ** class MaterialChunk!
49 ** **
50 *****************************************************************************
51 \*****************************************************************************/
53 #include <cstdlib>
54 #include <cstdio>
56 #include "OSGConfig.h"
59 #include "OSGGL.h" // ColorMaterial default header
60 #include "OSGGL.h" // BackColorMaterial default header
63 #include "OSGMaterialChunkBase.h"
64 #include "OSGMaterialChunk.h"
66 #include <boost/bind.hpp>
68 #ifdef WIN32 // turn off 'this' : used in base member initializer list warning
69 #pragma warning(disable:4355)
70 #endif
72 OSG_BEGIN_NAMESPACE
74 /***************************************************************************\
75 * Description *
76 \***************************************************************************/
78 /*! \class OSG::MaterialChunk
79 See \ref PageSystemMaterialChunk for details.
81 This chunk wraps glMaterial() (OSG::MaterialChunk::_sfDiffuse,
82 OSG::MaterialChunk::_sfSpecular, OSG::MaterialChunk::_sfEmission,
83 OSG::MaterialChunk::_sfShininess, OSG::MaterialChunk::_sfAmbient),
84 glEnable(GL_LIGHTING)(OSG::MaterialChunk::_sfLit) and glColorMaterial()
85 (OSG::MaterialChunk::_sfColorMaterial).
88 /***************************************************************************\
89 * Field Documentation *
90 \***************************************************************************/
92 /*! \var Color4f MaterialChunkBase::_sfDiffuse
96 /*! \var Color4f MaterialChunkBase::_sfAmbient
100 /*! \var Color4f MaterialChunkBase::_sfSpecular
104 /*! \var Color4f MaterialChunkBase::_sfEmission
108 /*! \var Real32 MaterialChunkBase::_sfShininess
112 /*! \var bool MaterialChunkBase::_sfLit
113 Switch for using this material in lighting calculation.
114 If not set the diffuse color is used as is.
117 /*! \var GLenum MaterialChunkBase::_sfColorMaterial
118 The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.
121 /*! \var bool MaterialChunkBase::_sfBackMaterial
122 Switch for using separate material properties for front- and back-facing
123 polygons. If set to false the standard parameters will be used for front- and
124 backfaces.
127 /*! \var Color4f MaterialChunkBase::_sfBackDiffuse
131 /*! \var Color4f MaterialChunkBase::_sfBackAmbient
135 /*! \var Color4f MaterialChunkBase::_sfBackSpecular
139 /*! \var Color4f MaterialChunkBase::_sfBackEmission
143 /*! \var Real32 MaterialChunkBase::_sfBackShininess
147 /*! \var GLenum MaterialChunkBase::_sfBackColorMaterial
148 The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.
152 /***************************************************************************\
153 * FieldType/FieldTrait Instantiation *
154 \***************************************************************************/
156 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
157 PointerType FieldTraits<MaterialChunk *, nsOSG>::_type(
158 "MaterialChunkPtr",
159 "StateChunkPtr",
160 MaterialChunk::getClassType(),
161 nsOSG);
162 #endif
164 OSG_FIELDTRAITS_GETTYPE_NS(MaterialChunk *, nsOSG)
166 OSG_EXPORT_PTR_SFIELD_FULL(PointerSField,
167 MaterialChunk *,
168 nsOSG);
170 OSG_EXPORT_PTR_MFIELD_FULL(PointerMField,
171 MaterialChunk *,
172 nsOSG);
174 /***************************************************************************\
175 * Field Description *
176 \***************************************************************************/
178 void MaterialChunkBase::classDescInserter(TypeObject &oType)
180 FieldDescriptionBase *pDesc = NULL;
183 pDesc = new SFColor4f::Description(
184 SFColor4f::getClassType(),
185 "diffuse",
187 DiffuseFieldId, DiffuseFieldMask,
188 false,
189 (Field::SFDefaultFlags | Field::FStdAccess),
190 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleDiffuse),
191 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleDiffuse));
193 oType.addInitialDesc(pDesc);
195 pDesc = new SFColor4f::Description(
196 SFColor4f::getClassType(),
197 "ambient",
199 AmbientFieldId, AmbientFieldMask,
200 false,
201 (Field::SFDefaultFlags | Field::FStdAccess),
202 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleAmbient),
203 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleAmbient));
205 oType.addInitialDesc(pDesc);
207 pDesc = new SFColor4f::Description(
208 SFColor4f::getClassType(),
209 "specular",
211 SpecularFieldId, SpecularFieldMask,
212 false,
213 (Field::SFDefaultFlags | Field::FStdAccess),
214 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleSpecular),
215 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleSpecular));
217 oType.addInitialDesc(pDesc);
219 pDesc = new SFColor4f::Description(
220 SFColor4f::getClassType(),
221 "emission",
223 EmissionFieldId, EmissionFieldMask,
224 false,
225 (Field::SFDefaultFlags | Field::FStdAccess),
226 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleEmission),
227 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleEmission));
229 oType.addInitialDesc(pDesc);
231 pDesc = new SFReal32::Description(
232 SFReal32::getClassType(),
233 "shininess",
235 ShininessFieldId, ShininessFieldMask,
236 false,
237 (Field::SFDefaultFlags | Field::FStdAccess),
238 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleShininess),
239 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleShininess));
241 oType.addInitialDesc(pDesc);
243 pDesc = new SFBool::Description(
244 SFBool::getClassType(),
245 "lit",
246 "Switch for using this material in lighting calculation. \n"
247 "If not set the diffuse color is used as is.\n",
248 LitFieldId, LitFieldMask,
249 false,
250 (Field::SFDefaultFlags | Field::FStdAccess),
251 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleLit),
252 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleLit));
254 oType.addInitialDesc(pDesc);
256 pDesc = new SFGLenum::Description(
257 SFGLenum::getClassType(),
258 "colorMaterial",
259 "The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.\n",
260 ColorMaterialFieldId, ColorMaterialFieldMask,
261 false,
262 (Field::SFDefaultFlags | Field::FStdAccess),
263 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleColorMaterial),
264 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleColorMaterial));
266 oType.addInitialDesc(pDesc);
268 pDesc = new SFBool::Description(
269 SFBool::getClassType(),
270 "backMaterial",
271 "Switch for using separate material properties for front- and back-facing\n"
272 "polygons. If set to false the standard parameters will be used for front- and \n"
273 "backfaces.\n",
274 BackMaterialFieldId, BackMaterialFieldMask,
275 false,
276 (Field::SFDefaultFlags | Field::FStdAccess),
277 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackMaterial),
278 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackMaterial));
280 oType.addInitialDesc(pDesc);
282 pDesc = new SFColor4f::Description(
283 SFColor4f::getClassType(),
284 "backDiffuse",
286 BackDiffuseFieldId, BackDiffuseFieldMask,
287 false,
288 (Field::SFDefaultFlags | Field::FStdAccess),
289 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackDiffuse),
290 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackDiffuse));
292 oType.addInitialDesc(pDesc);
294 pDesc = new SFColor4f::Description(
295 SFColor4f::getClassType(),
296 "backAmbient",
298 BackAmbientFieldId, BackAmbientFieldMask,
299 false,
300 (Field::SFDefaultFlags | Field::FStdAccess),
301 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackAmbient),
302 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackAmbient));
304 oType.addInitialDesc(pDesc);
306 pDesc = new SFColor4f::Description(
307 SFColor4f::getClassType(),
308 "backSpecular",
310 BackSpecularFieldId, BackSpecularFieldMask,
311 false,
312 (Field::SFDefaultFlags | Field::FStdAccess),
313 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackSpecular),
314 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackSpecular));
316 oType.addInitialDesc(pDesc);
318 pDesc = new SFColor4f::Description(
319 SFColor4f::getClassType(),
320 "backEmission",
322 BackEmissionFieldId, BackEmissionFieldMask,
323 false,
324 (Field::SFDefaultFlags | Field::FStdAccess),
325 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackEmission),
326 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackEmission));
328 oType.addInitialDesc(pDesc);
330 pDesc = new SFReal32::Description(
331 SFReal32::getClassType(),
332 "backShininess",
334 BackShininessFieldId, BackShininessFieldMask,
335 false,
336 (Field::SFDefaultFlags | Field::FStdAccess),
337 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackShininess),
338 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackShininess));
340 oType.addInitialDesc(pDesc);
342 pDesc = new SFGLenum::Description(
343 SFGLenum::getClassType(),
344 "backColorMaterial",
345 "The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.\n",
346 BackColorMaterialFieldId, BackColorMaterialFieldMask,
347 false,
348 (Field::SFDefaultFlags | Field::FStdAccess),
349 static_cast<FieldEditMethodSig>(&MaterialChunk::editHandleBackColorMaterial),
350 static_cast<FieldGetMethodSig >(&MaterialChunk::getHandleBackColorMaterial));
352 oType.addInitialDesc(pDesc);
356 MaterialChunkBase::TypeObject MaterialChunkBase::_type(
357 MaterialChunkBase::getClassname(),
358 Inherited::getClassname(),
359 "NULL",
360 nsOSG, //Namespace
361 reinterpret_cast<PrototypeCreateF>(&MaterialChunkBase::createEmptyLocal),
362 MaterialChunk::initMethod,
363 MaterialChunk::exitMethod,
364 reinterpret_cast<InitalInsertDescFunc>(&MaterialChunk::classDescInserter),
365 false,
367 "<?xml version=\"1.0\" ?>\n"
368 "\n"
369 "<FieldContainer\n"
370 " name=\"MaterialChunk\"\n"
371 " parent=\"StateChunk\"\n"
372 " library=\"System\"\n"
373 " structure=\"concrete\"\n"
374 " pointerfieldtypes=\"both\"\n"
375 " systemcomponent=\"true\"\n"
376 " parentsystemcomponent=\"true\"\n"
377 " docGroupBase=\"GrpSystemState\"\n"
378 ">\n"
379 "See \\ref PageSystemMaterialChunk for details.\n"
380 "\n"
381 "This chunk wraps glMaterial() (OSG::MaterialChunk::_sfDiffuse,\n"
382 "OSG::MaterialChunk::_sfSpecular, OSG::MaterialChunk::_sfEmission,\n"
383 "OSG::MaterialChunk::_sfShininess, OSG::MaterialChunk::_sfAmbient),\n"
384 "glEnable(GL_LIGHTING)(OSG::MaterialChunk::_sfLit) and glColorMaterial()\n"
385 "(OSG::MaterialChunk::_sfColorMaterial).\n"
386 "\t<Field\n"
387 "\t\tname=\"diffuse\"\n"
388 "\t\ttype=\"Color4f\"\n"
389 "\t\tcardinality=\"single\"\n"
390 "\t\tvisibility=\"external\"\n"
391 "\t\tdefaultValue=\"1.f,1.f,1.f,1.f\"\n"
392 "\t>\n"
393 "\t</Field>\n"
394 "\t<Field\n"
395 "\t\tname=\"ambient\"\n"
396 "\t\ttype=\"Color4f\"\n"
397 "\t\tcardinality=\"single\"\n"
398 "\t\tvisibility=\"external\"\n"
399 "\t\tdefaultValue=\".2f,.2f,.2f,1.f\"\n"
400 "\t>\n"
401 "\t</Field>\n"
402 "\t<Field\n"
403 "\t\tname=\"specular\"\n"
404 "\t\ttype=\"Color4f\"\n"
405 "\t\tcardinality=\"single\"\n"
406 "\t\tvisibility=\"external\"\n"
407 "\t\tdefaultValue=\".5f,.5f,.5f,1.f\"\n"
408 "\t>\n"
409 "\t</Field>\n"
410 "\t<Field\n"
411 "\t\tname=\"emission\"\n"
412 "\t\ttype=\"Color4f\"\n"
413 "\t\tcardinality=\"single\"\n"
414 "\t\tvisibility=\"external\"\n"
415 "\t\tdefaultValue=\"0.f,0.f,0.f,1.f\"\n"
416 "\t>\n"
417 "\t</Field>\n"
418 "\t<Field\n"
419 "\t\tname=\"shininess\"\n"
420 "\t\ttype=\"Real32\"\n"
421 "\t\tcardinality=\"single\"\n"
422 "\t\tvisibility=\"external\"\n"
423 "\t\tdefaultValue=\"10.f\"\n"
424 "\t>\n"
425 "\t</Field>\n"
426 "\t<Field\n"
427 "\t\tname=\"lit\"\n"
428 "\t\ttype=\"bool\"\n"
429 "\t\tcardinality=\"single\"\n"
430 "\t\tvisibility=\"external\"\n"
431 "\t\tdefaultValue=\"true\"\n"
432 "\t>\n"
433 " Switch for using this material in lighting calculation. \n"
434 " If not set the diffuse color is used as is.\n"
435 "\t</Field>\n"
436 "\t<Field\n"
437 "\t\tname=\"colorMaterial\"\n"
438 "\t\ttype=\"GLenum\"\n"
439 "\t\tcardinality=\"single\"\n"
440 "\t\tvisibility=\"external\"\n"
441 "\t\tdefaultValue=\"GL_DIFFUSE\"\n"
442 "\t\tdefaultHeader=\"&quot;OSGGL.h&quot;\"\n"
443 "\t>\n"
444 " The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.\n"
445 "\t</Field>\n"
446 "\t<Field\n"
447 "\t\tname=\"backMaterial\"\n"
448 "\t\ttype=\"bool\"\n"
449 "\t\tcardinality=\"single\"\n"
450 "\t\tvisibility=\"external\"\n"
451 "\t\tdefaultValue=\"false\"\n"
452 "\t>\n"
453 " Switch for using separate material properties for front- and back-facing\n"
454 " polygons. If set to false the standard parameters will be used for front- and \n"
455 " backfaces.\n"
456 "\t</Field>\n"
457 "\t<Field\n"
458 "\t\tname=\"backDiffuse\"\n"
459 "\t\ttype=\"Color4f\"\n"
460 "\t\tcardinality=\"single\"\n"
461 "\t\tvisibility=\"external\"\n"
462 "\t\tdefaultValue=\"1.f,1.f,1.f,0.f\"\n"
463 "\t>\n"
464 "\t</Field>\n"
465 "\t<Field\n"
466 "\t\tname=\"backAmbient\"\n"
467 "\t\ttype=\"Color4f\"\n"
468 "\t\tcardinality=\"single\"\n"
469 "\t\tvisibility=\"external\"\n"
470 "\t\tdefaultValue=\".2f,.2f,.2f,0.f\"\n"
471 "\t>\n"
472 "\t</Field>\n"
473 "\t<Field\n"
474 "\t\tname=\"backSpecular\"\n"
475 "\t\ttype=\"Color4f\"\n"
476 "\t\tcardinality=\"single\"\n"
477 "\t\tvisibility=\"external\"\n"
478 "\t\tdefaultValue=\".5f,.5f,.5f,0.f\"\n"
479 "\t>\n"
480 "\t</Field>\n"
481 "\t<Field\n"
482 "\t\tname=\"backEmission\"\n"
483 "\t\ttype=\"Color4f\"\n"
484 "\t\tcardinality=\"single\"\n"
485 "\t\tvisibility=\"external\"\n"
486 "\t\tdefaultValue=\"0.f,0.f,0.f,0.f\"\n"
487 "\t>\n"
488 "\t</Field>\n"
489 "\t<Field\n"
490 "\t\tname=\"backShininess\"\n"
491 "\t\ttype=\"Real32\"\n"
492 "\t\tcardinality=\"single\"\n"
493 "\t\tvisibility=\"external\"\n"
494 "\t\tdefaultValue=\"10.f\"\n"
495 "\t>\n"
496 "\t</Field>\n"
497 "\t<Field\n"
498 "\t\tname=\"backColorMaterial\"\n"
499 "\t\ttype=\"GLenum\"\n"
500 "\t\tcardinality=\"single\"\n"
501 "\t\tvisibility=\"external\"\n"
502 "\t\tdefaultValue=\"GL_DIFFUSE\"\n"
503 "\t\tdefaultHeader=\"&quot;OSGGL.h&quot;\"\n"
504 "\t>\n"
505 " The mode for using Geometry colors in lighting. Defaults to GL_DIFFUSE.\n"
506 "\t</Field> \n"
507 "</FieldContainer>\n",
508 "See \\ref PageSystemMaterialChunk for details.\n"
509 "\n"
510 "This chunk wraps glMaterial() (OSG::MaterialChunk::_sfDiffuse,\n"
511 "OSG::MaterialChunk::_sfSpecular, OSG::MaterialChunk::_sfEmission,\n"
512 "OSG::MaterialChunk::_sfShininess, OSG::MaterialChunk::_sfAmbient),\n"
513 "glEnable(GL_LIGHTING)(OSG::MaterialChunk::_sfLit) and glColorMaterial()\n"
514 "(OSG::MaterialChunk::_sfColorMaterial).\n"
517 /*------------------------------ get -----------------------------------*/
519 FieldContainerType &MaterialChunkBase::getType(void)
521 return _type;
524 const FieldContainerType &MaterialChunkBase::getType(void) const
526 return _type;
529 UInt32 MaterialChunkBase::getContainerSize(void) const
531 return sizeof(MaterialChunk);
534 /*------------------------- decorator get ------------------------------*/
537 SFColor4f *MaterialChunkBase::editSFDiffuse(void)
539 editSField(DiffuseFieldMask);
541 return &_sfDiffuse;
544 const SFColor4f *MaterialChunkBase::getSFDiffuse(void) const
546 return &_sfDiffuse;
550 SFColor4f *MaterialChunkBase::editSFAmbient(void)
552 editSField(AmbientFieldMask);
554 return &_sfAmbient;
557 const SFColor4f *MaterialChunkBase::getSFAmbient(void) const
559 return &_sfAmbient;
563 SFColor4f *MaterialChunkBase::editSFSpecular(void)
565 editSField(SpecularFieldMask);
567 return &_sfSpecular;
570 const SFColor4f *MaterialChunkBase::getSFSpecular(void) const
572 return &_sfSpecular;
576 SFColor4f *MaterialChunkBase::editSFEmission(void)
578 editSField(EmissionFieldMask);
580 return &_sfEmission;
583 const SFColor4f *MaterialChunkBase::getSFEmission(void) const
585 return &_sfEmission;
589 SFReal32 *MaterialChunkBase::editSFShininess(void)
591 editSField(ShininessFieldMask);
593 return &_sfShininess;
596 const SFReal32 *MaterialChunkBase::getSFShininess(void) const
598 return &_sfShininess;
602 SFBool *MaterialChunkBase::editSFLit(void)
604 editSField(LitFieldMask);
606 return &_sfLit;
609 const SFBool *MaterialChunkBase::getSFLit(void) const
611 return &_sfLit;
615 SFGLenum *MaterialChunkBase::editSFColorMaterial(void)
617 editSField(ColorMaterialFieldMask);
619 return &_sfColorMaterial;
622 const SFGLenum *MaterialChunkBase::getSFColorMaterial(void) const
624 return &_sfColorMaterial;
628 SFBool *MaterialChunkBase::editSFBackMaterial(void)
630 editSField(BackMaterialFieldMask);
632 return &_sfBackMaterial;
635 const SFBool *MaterialChunkBase::getSFBackMaterial(void) const
637 return &_sfBackMaterial;
641 SFColor4f *MaterialChunkBase::editSFBackDiffuse(void)
643 editSField(BackDiffuseFieldMask);
645 return &_sfBackDiffuse;
648 const SFColor4f *MaterialChunkBase::getSFBackDiffuse(void) const
650 return &_sfBackDiffuse;
654 SFColor4f *MaterialChunkBase::editSFBackAmbient(void)
656 editSField(BackAmbientFieldMask);
658 return &_sfBackAmbient;
661 const SFColor4f *MaterialChunkBase::getSFBackAmbient(void) const
663 return &_sfBackAmbient;
667 SFColor4f *MaterialChunkBase::editSFBackSpecular(void)
669 editSField(BackSpecularFieldMask);
671 return &_sfBackSpecular;
674 const SFColor4f *MaterialChunkBase::getSFBackSpecular(void) const
676 return &_sfBackSpecular;
680 SFColor4f *MaterialChunkBase::editSFBackEmission(void)
682 editSField(BackEmissionFieldMask);
684 return &_sfBackEmission;
687 const SFColor4f *MaterialChunkBase::getSFBackEmission(void) const
689 return &_sfBackEmission;
693 SFReal32 *MaterialChunkBase::editSFBackShininess(void)
695 editSField(BackShininessFieldMask);
697 return &_sfBackShininess;
700 const SFReal32 *MaterialChunkBase::getSFBackShininess(void) const
702 return &_sfBackShininess;
706 SFGLenum *MaterialChunkBase::editSFBackColorMaterial(void)
708 editSField(BackColorMaterialFieldMask);
710 return &_sfBackColorMaterial;
713 const SFGLenum *MaterialChunkBase::getSFBackColorMaterial(void) const
715 return &_sfBackColorMaterial;
723 /*------------------------------ access -----------------------------------*/
725 SizeT MaterialChunkBase::getBinSize(ConstFieldMaskArg whichField)
727 SizeT returnValue = Inherited::getBinSize(whichField);
729 if(FieldBits::NoField != (DiffuseFieldMask & whichField))
731 returnValue += _sfDiffuse.getBinSize();
733 if(FieldBits::NoField != (AmbientFieldMask & whichField))
735 returnValue += _sfAmbient.getBinSize();
737 if(FieldBits::NoField != (SpecularFieldMask & whichField))
739 returnValue += _sfSpecular.getBinSize();
741 if(FieldBits::NoField != (EmissionFieldMask & whichField))
743 returnValue += _sfEmission.getBinSize();
745 if(FieldBits::NoField != (ShininessFieldMask & whichField))
747 returnValue += _sfShininess.getBinSize();
749 if(FieldBits::NoField != (LitFieldMask & whichField))
751 returnValue += _sfLit.getBinSize();
753 if(FieldBits::NoField != (ColorMaterialFieldMask & whichField))
755 returnValue += _sfColorMaterial.getBinSize();
757 if(FieldBits::NoField != (BackMaterialFieldMask & whichField))
759 returnValue += _sfBackMaterial.getBinSize();
761 if(FieldBits::NoField != (BackDiffuseFieldMask & whichField))
763 returnValue += _sfBackDiffuse.getBinSize();
765 if(FieldBits::NoField != (BackAmbientFieldMask & whichField))
767 returnValue += _sfBackAmbient.getBinSize();
769 if(FieldBits::NoField != (BackSpecularFieldMask & whichField))
771 returnValue += _sfBackSpecular.getBinSize();
773 if(FieldBits::NoField != (BackEmissionFieldMask & whichField))
775 returnValue += _sfBackEmission.getBinSize();
777 if(FieldBits::NoField != (BackShininessFieldMask & whichField))
779 returnValue += _sfBackShininess.getBinSize();
781 if(FieldBits::NoField != (BackColorMaterialFieldMask & whichField))
783 returnValue += _sfBackColorMaterial.getBinSize();
786 return returnValue;
789 void MaterialChunkBase::copyToBin(BinaryDataHandler &pMem,
790 ConstFieldMaskArg whichField)
792 Inherited::copyToBin(pMem, whichField);
794 if(FieldBits::NoField != (DiffuseFieldMask & whichField))
796 _sfDiffuse.copyToBin(pMem);
798 if(FieldBits::NoField != (AmbientFieldMask & whichField))
800 _sfAmbient.copyToBin(pMem);
802 if(FieldBits::NoField != (SpecularFieldMask & whichField))
804 _sfSpecular.copyToBin(pMem);
806 if(FieldBits::NoField != (EmissionFieldMask & whichField))
808 _sfEmission.copyToBin(pMem);
810 if(FieldBits::NoField != (ShininessFieldMask & whichField))
812 _sfShininess.copyToBin(pMem);
814 if(FieldBits::NoField != (LitFieldMask & whichField))
816 _sfLit.copyToBin(pMem);
818 if(FieldBits::NoField != (ColorMaterialFieldMask & whichField))
820 _sfColorMaterial.copyToBin(pMem);
822 if(FieldBits::NoField != (BackMaterialFieldMask & whichField))
824 _sfBackMaterial.copyToBin(pMem);
826 if(FieldBits::NoField != (BackDiffuseFieldMask & whichField))
828 _sfBackDiffuse.copyToBin(pMem);
830 if(FieldBits::NoField != (BackAmbientFieldMask & whichField))
832 _sfBackAmbient.copyToBin(pMem);
834 if(FieldBits::NoField != (BackSpecularFieldMask & whichField))
836 _sfBackSpecular.copyToBin(pMem);
838 if(FieldBits::NoField != (BackEmissionFieldMask & whichField))
840 _sfBackEmission.copyToBin(pMem);
842 if(FieldBits::NoField != (BackShininessFieldMask & whichField))
844 _sfBackShininess.copyToBin(pMem);
846 if(FieldBits::NoField != (BackColorMaterialFieldMask & whichField))
848 _sfBackColorMaterial.copyToBin(pMem);
852 void MaterialChunkBase::copyFromBin(BinaryDataHandler &pMem,
853 ConstFieldMaskArg whichField)
855 Inherited::copyFromBin(pMem, whichField);
857 if(FieldBits::NoField != (DiffuseFieldMask & whichField))
859 editSField(DiffuseFieldMask);
860 _sfDiffuse.copyFromBin(pMem);
862 if(FieldBits::NoField != (AmbientFieldMask & whichField))
864 editSField(AmbientFieldMask);
865 _sfAmbient.copyFromBin(pMem);
867 if(FieldBits::NoField != (SpecularFieldMask & whichField))
869 editSField(SpecularFieldMask);
870 _sfSpecular.copyFromBin(pMem);
872 if(FieldBits::NoField != (EmissionFieldMask & whichField))
874 editSField(EmissionFieldMask);
875 _sfEmission.copyFromBin(pMem);
877 if(FieldBits::NoField != (ShininessFieldMask & whichField))
879 editSField(ShininessFieldMask);
880 _sfShininess.copyFromBin(pMem);
882 if(FieldBits::NoField != (LitFieldMask & whichField))
884 editSField(LitFieldMask);
885 _sfLit.copyFromBin(pMem);
887 if(FieldBits::NoField != (ColorMaterialFieldMask & whichField))
889 editSField(ColorMaterialFieldMask);
890 _sfColorMaterial.copyFromBin(pMem);
892 if(FieldBits::NoField != (BackMaterialFieldMask & whichField))
894 editSField(BackMaterialFieldMask);
895 _sfBackMaterial.copyFromBin(pMem);
897 if(FieldBits::NoField != (BackDiffuseFieldMask & whichField))
899 editSField(BackDiffuseFieldMask);
900 _sfBackDiffuse.copyFromBin(pMem);
902 if(FieldBits::NoField != (BackAmbientFieldMask & whichField))
904 editSField(BackAmbientFieldMask);
905 _sfBackAmbient.copyFromBin(pMem);
907 if(FieldBits::NoField != (BackSpecularFieldMask & whichField))
909 editSField(BackSpecularFieldMask);
910 _sfBackSpecular.copyFromBin(pMem);
912 if(FieldBits::NoField != (BackEmissionFieldMask & whichField))
914 editSField(BackEmissionFieldMask);
915 _sfBackEmission.copyFromBin(pMem);
917 if(FieldBits::NoField != (BackShininessFieldMask & whichField))
919 editSField(BackShininessFieldMask);
920 _sfBackShininess.copyFromBin(pMem);
922 if(FieldBits::NoField != (BackColorMaterialFieldMask & whichField))
924 editSField(BackColorMaterialFieldMask);
925 _sfBackColorMaterial.copyFromBin(pMem);
929 //! create a new instance of the class
930 MaterialChunkTransitPtr MaterialChunkBase::createLocal(BitVector bFlags)
932 MaterialChunkTransitPtr fc;
934 if(getClassType().getPrototype() != NULL)
936 FieldContainerTransitPtr tmpPtr =
937 getClassType().getPrototype()-> shallowCopyLocal(bFlags);
939 fc = dynamic_pointer_cast<MaterialChunk>(tmpPtr);
942 return fc;
945 //! create a new instance of the class, copy the container flags
946 MaterialChunkTransitPtr MaterialChunkBase::createDependent(BitVector bFlags)
948 MaterialChunkTransitPtr fc;
950 if(getClassType().getPrototype() != NULL)
952 FieldContainerTransitPtr tmpPtr =
953 getClassType().getPrototype()-> shallowCopyDependent(bFlags);
955 fc = dynamic_pointer_cast<MaterialChunk>(tmpPtr);
958 return fc;
961 //! create a new instance of the class
962 MaterialChunkTransitPtr MaterialChunkBase::create(void)
964 MaterialChunkTransitPtr fc;
966 if(getClassType().getPrototype() != NULL)
968 FieldContainerTransitPtr tmpPtr =
969 getClassType().getPrototype()-> shallowCopy();
971 fc = dynamic_pointer_cast<MaterialChunk>(tmpPtr);
974 return fc;
977 MaterialChunk *MaterialChunkBase::createEmptyLocal(BitVector bFlags)
979 MaterialChunk *returnValue;
981 newPtr<MaterialChunk>(returnValue, bFlags);
983 returnValue->_pFieldFlags->_bNamespaceMask &= ~bFlags;
985 return returnValue;
988 //! create an empty new instance of the class, do not copy the prototype
989 MaterialChunk *MaterialChunkBase::createEmpty(void)
991 MaterialChunk *returnValue;
993 newPtr<MaterialChunk>(returnValue, Thread::getCurrentLocalFlags());
995 returnValue->_pFieldFlags->_bNamespaceMask &=
996 ~Thread::getCurrentLocalFlags();
998 return returnValue;
1002 FieldContainerTransitPtr MaterialChunkBase::shallowCopyLocal(
1003 BitVector bFlags) const
1005 MaterialChunk *tmpPtr;
1007 newPtr(tmpPtr, dynamic_cast<const MaterialChunk *>(this), bFlags);
1009 FieldContainerTransitPtr returnValue(tmpPtr);
1011 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~bFlags;
1013 return returnValue;
1016 FieldContainerTransitPtr MaterialChunkBase::shallowCopyDependent(
1017 BitVector bFlags) const
1019 MaterialChunk *tmpPtr;
1021 newPtr(tmpPtr, dynamic_cast<const MaterialChunk *>(this), ~bFlags);
1023 FieldContainerTransitPtr returnValue(tmpPtr);
1025 tmpPtr->_pFieldFlags->_bNamespaceMask = bFlags;
1027 return returnValue;
1030 FieldContainerTransitPtr MaterialChunkBase::shallowCopy(void) const
1032 MaterialChunk *tmpPtr;
1034 newPtr(tmpPtr,
1035 dynamic_cast<const MaterialChunk *>(this),
1036 Thread::getCurrentLocalFlags());
1038 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~Thread::getCurrentLocalFlags();
1040 FieldContainerTransitPtr returnValue(tmpPtr);
1042 return returnValue;
1048 /*------------------------- constructors ----------------------------------*/
1050 MaterialChunkBase::MaterialChunkBase(void) :
1051 Inherited(),
1052 _sfDiffuse (Color4f(1.f,1.f,1.f,1.f)),
1053 _sfAmbient (Color4f(.2f,.2f,.2f,1.f)),
1054 _sfSpecular (Color4f(.5f,.5f,.5f,1.f)),
1055 _sfEmission (Color4f(0.f,0.f,0.f,1.f)),
1056 _sfShininess (Real32(10.f)),
1057 _sfLit (bool(true)),
1058 _sfColorMaterial (GLenum(GL_DIFFUSE)),
1059 _sfBackMaterial (bool(false)),
1060 _sfBackDiffuse (Color4f(1.f,1.f,1.f,0.f)),
1061 _sfBackAmbient (Color4f(.2f,.2f,.2f,0.f)),
1062 _sfBackSpecular (Color4f(.5f,.5f,.5f,0.f)),
1063 _sfBackEmission (Color4f(0.f,0.f,0.f,0.f)),
1064 _sfBackShininess (Real32(10.f)),
1065 _sfBackColorMaterial (GLenum(GL_DIFFUSE))
1069 MaterialChunkBase::MaterialChunkBase(const MaterialChunkBase &source) :
1070 Inherited(source),
1071 _sfDiffuse (source._sfDiffuse ),
1072 _sfAmbient (source._sfAmbient ),
1073 _sfSpecular (source._sfSpecular ),
1074 _sfEmission (source._sfEmission ),
1075 _sfShininess (source._sfShininess ),
1076 _sfLit (source._sfLit ),
1077 _sfColorMaterial (source._sfColorMaterial ),
1078 _sfBackMaterial (source._sfBackMaterial ),
1079 _sfBackDiffuse (source._sfBackDiffuse ),
1080 _sfBackAmbient (source._sfBackAmbient ),
1081 _sfBackSpecular (source._sfBackSpecular ),
1082 _sfBackEmission (source._sfBackEmission ),
1083 _sfBackShininess (source._sfBackShininess ),
1084 _sfBackColorMaterial (source._sfBackColorMaterial )
1089 /*-------------------------- destructors ----------------------------------*/
1091 MaterialChunkBase::~MaterialChunkBase(void)
1096 GetFieldHandlePtr MaterialChunkBase::getHandleDiffuse (void) const
1098 SFColor4f::GetHandlePtr returnValue(
1099 new SFColor4f::GetHandle(
1100 &_sfDiffuse,
1101 this->getType().getFieldDesc(DiffuseFieldId),
1102 const_cast<MaterialChunkBase *>(this)));
1104 return returnValue;
1107 EditFieldHandlePtr MaterialChunkBase::editHandleDiffuse (void)
1109 SFColor4f::EditHandlePtr returnValue(
1110 new SFColor4f::EditHandle(
1111 &_sfDiffuse,
1112 this->getType().getFieldDesc(DiffuseFieldId),
1113 this));
1116 editSField(DiffuseFieldMask);
1118 return returnValue;
1121 GetFieldHandlePtr MaterialChunkBase::getHandleAmbient (void) const
1123 SFColor4f::GetHandlePtr returnValue(
1124 new SFColor4f::GetHandle(
1125 &_sfAmbient,
1126 this->getType().getFieldDesc(AmbientFieldId),
1127 const_cast<MaterialChunkBase *>(this)));
1129 return returnValue;
1132 EditFieldHandlePtr MaterialChunkBase::editHandleAmbient (void)
1134 SFColor4f::EditHandlePtr returnValue(
1135 new SFColor4f::EditHandle(
1136 &_sfAmbient,
1137 this->getType().getFieldDesc(AmbientFieldId),
1138 this));
1141 editSField(AmbientFieldMask);
1143 return returnValue;
1146 GetFieldHandlePtr MaterialChunkBase::getHandleSpecular (void) const
1148 SFColor4f::GetHandlePtr returnValue(
1149 new SFColor4f::GetHandle(
1150 &_sfSpecular,
1151 this->getType().getFieldDesc(SpecularFieldId),
1152 const_cast<MaterialChunkBase *>(this)));
1154 return returnValue;
1157 EditFieldHandlePtr MaterialChunkBase::editHandleSpecular (void)
1159 SFColor4f::EditHandlePtr returnValue(
1160 new SFColor4f::EditHandle(
1161 &_sfSpecular,
1162 this->getType().getFieldDesc(SpecularFieldId),
1163 this));
1166 editSField(SpecularFieldMask);
1168 return returnValue;
1171 GetFieldHandlePtr MaterialChunkBase::getHandleEmission (void) const
1173 SFColor4f::GetHandlePtr returnValue(
1174 new SFColor4f::GetHandle(
1175 &_sfEmission,
1176 this->getType().getFieldDesc(EmissionFieldId),
1177 const_cast<MaterialChunkBase *>(this)));
1179 return returnValue;
1182 EditFieldHandlePtr MaterialChunkBase::editHandleEmission (void)
1184 SFColor4f::EditHandlePtr returnValue(
1185 new SFColor4f::EditHandle(
1186 &_sfEmission,
1187 this->getType().getFieldDesc(EmissionFieldId),
1188 this));
1191 editSField(EmissionFieldMask);
1193 return returnValue;
1196 GetFieldHandlePtr MaterialChunkBase::getHandleShininess (void) const
1198 SFReal32::GetHandlePtr returnValue(
1199 new SFReal32::GetHandle(
1200 &_sfShininess,
1201 this->getType().getFieldDesc(ShininessFieldId),
1202 const_cast<MaterialChunkBase *>(this)));
1204 return returnValue;
1207 EditFieldHandlePtr MaterialChunkBase::editHandleShininess (void)
1209 SFReal32::EditHandlePtr returnValue(
1210 new SFReal32::EditHandle(
1211 &_sfShininess,
1212 this->getType().getFieldDesc(ShininessFieldId),
1213 this));
1216 editSField(ShininessFieldMask);
1218 return returnValue;
1221 GetFieldHandlePtr MaterialChunkBase::getHandleLit (void) const
1223 SFBool::GetHandlePtr returnValue(
1224 new SFBool::GetHandle(
1225 &_sfLit,
1226 this->getType().getFieldDesc(LitFieldId),
1227 const_cast<MaterialChunkBase *>(this)));
1229 return returnValue;
1232 EditFieldHandlePtr MaterialChunkBase::editHandleLit (void)
1234 SFBool::EditHandlePtr returnValue(
1235 new SFBool::EditHandle(
1236 &_sfLit,
1237 this->getType().getFieldDesc(LitFieldId),
1238 this));
1241 editSField(LitFieldMask);
1243 return returnValue;
1246 GetFieldHandlePtr MaterialChunkBase::getHandleColorMaterial (void) const
1248 SFGLenum::GetHandlePtr returnValue(
1249 new SFGLenum::GetHandle(
1250 &_sfColorMaterial,
1251 this->getType().getFieldDesc(ColorMaterialFieldId),
1252 const_cast<MaterialChunkBase *>(this)));
1254 return returnValue;
1257 EditFieldHandlePtr MaterialChunkBase::editHandleColorMaterial (void)
1259 SFGLenum::EditHandlePtr returnValue(
1260 new SFGLenum::EditHandle(
1261 &_sfColorMaterial,
1262 this->getType().getFieldDesc(ColorMaterialFieldId),
1263 this));
1266 editSField(ColorMaterialFieldMask);
1268 return returnValue;
1271 GetFieldHandlePtr MaterialChunkBase::getHandleBackMaterial (void) const
1273 SFBool::GetHandlePtr returnValue(
1274 new SFBool::GetHandle(
1275 &_sfBackMaterial,
1276 this->getType().getFieldDesc(BackMaterialFieldId),
1277 const_cast<MaterialChunkBase *>(this)));
1279 return returnValue;
1282 EditFieldHandlePtr MaterialChunkBase::editHandleBackMaterial (void)
1284 SFBool::EditHandlePtr returnValue(
1285 new SFBool::EditHandle(
1286 &_sfBackMaterial,
1287 this->getType().getFieldDesc(BackMaterialFieldId),
1288 this));
1291 editSField(BackMaterialFieldMask);
1293 return returnValue;
1296 GetFieldHandlePtr MaterialChunkBase::getHandleBackDiffuse (void) const
1298 SFColor4f::GetHandlePtr returnValue(
1299 new SFColor4f::GetHandle(
1300 &_sfBackDiffuse,
1301 this->getType().getFieldDesc(BackDiffuseFieldId),
1302 const_cast<MaterialChunkBase *>(this)));
1304 return returnValue;
1307 EditFieldHandlePtr MaterialChunkBase::editHandleBackDiffuse (void)
1309 SFColor4f::EditHandlePtr returnValue(
1310 new SFColor4f::EditHandle(
1311 &_sfBackDiffuse,
1312 this->getType().getFieldDesc(BackDiffuseFieldId),
1313 this));
1316 editSField(BackDiffuseFieldMask);
1318 return returnValue;
1321 GetFieldHandlePtr MaterialChunkBase::getHandleBackAmbient (void) const
1323 SFColor4f::GetHandlePtr returnValue(
1324 new SFColor4f::GetHandle(
1325 &_sfBackAmbient,
1326 this->getType().getFieldDesc(BackAmbientFieldId),
1327 const_cast<MaterialChunkBase *>(this)));
1329 return returnValue;
1332 EditFieldHandlePtr MaterialChunkBase::editHandleBackAmbient (void)
1334 SFColor4f::EditHandlePtr returnValue(
1335 new SFColor4f::EditHandle(
1336 &_sfBackAmbient,
1337 this->getType().getFieldDesc(BackAmbientFieldId),
1338 this));
1341 editSField(BackAmbientFieldMask);
1343 return returnValue;
1346 GetFieldHandlePtr MaterialChunkBase::getHandleBackSpecular (void) const
1348 SFColor4f::GetHandlePtr returnValue(
1349 new SFColor4f::GetHandle(
1350 &_sfBackSpecular,
1351 this->getType().getFieldDesc(BackSpecularFieldId),
1352 const_cast<MaterialChunkBase *>(this)));
1354 return returnValue;
1357 EditFieldHandlePtr MaterialChunkBase::editHandleBackSpecular (void)
1359 SFColor4f::EditHandlePtr returnValue(
1360 new SFColor4f::EditHandle(
1361 &_sfBackSpecular,
1362 this->getType().getFieldDesc(BackSpecularFieldId),
1363 this));
1366 editSField(BackSpecularFieldMask);
1368 return returnValue;
1371 GetFieldHandlePtr MaterialChunkBase::getHandleBackEmission (void) const
1373 SFColor4f::GetHandlePtr returnValue(
1374 new SFColor4f::GetHandle(
1375 &_sfBackEmission,
1376 this->getType().getFieldDesc(BackEmissionFieldId),
1377 const_cast<MaterialChunkBase *>(this)));
1379 return returnValue;
1382 EditFieldHandlePtr MaterialChunkBase::editHandleBackEmission (void)
1384 SFColor4f::EditHandlePtr returnValue(
1385 new SFColor4f::EditHandle(
1386 &_sfBackEmission,
1387 this->getType().getFieldDesc(BackEmissionFieldId),
1388 this));
1391 editSField(BackEmissionFieldMask);
1393 return returnValue;
1396 GetFieldHandlePtr MaterialChunkBase::getHandleBackShininess (void) const
1398 SFReal32::GetHandlePtr returnValue(
1399 new SFReal32::GetHandle(
1400 &_sfBackShininess,
1401 this->getType().getFieldDesc(BackShininessFieldId),
1402 const_cast<MaterialChunkBase *>(this)));
1404 return returnValue;
1407 EditFieldHandlePtr MaterialChunkBase::editHandleBackShininess (void)
1409 SFReal32::EditHandlePtr returnValue(
1410 new SFReal32::EditHandle(
1411 &_sfBackShininess,
1412 this->getType().getFieldDesc(BackShininessFieldId),
1413 this));
1416 editSField(BackShininessFieldMask);
1418 return returnValue;
1421 GetFieldHandlePtr MaterialChunkBase::getHandleBackColorMaterial (void) const
1423 SFGLenum::GetHandlePtr returnValue(
1424 new SFGLenum::GetHandle(
1425 &_sfBackColorMaterial,
1426 this->getType().getFieldDesc(BackColorMaterialFieldId),
1427 const_cast<MaterialChunkBase *>(this)));
1429 return returnValue;
1432 EditFieldHandlePtr MaterialChunkBase::editHandleBackColorMaterial(void)
1434 SFGLenum::EditHandlePtr returnValue(
1435 new SFGLenum::EditHandle(
1436 &_sfBackColorMaterial,
1437 this->getType().getFieldDesc(BackColorMaterialFieldId),
1438 this));
1441 editSField(BackColorMaterialFieldMask);
1443 return returnValue;
1447 #ifdef OSG_MT_CPTR_ASPECT
1448 void MaterialChunkBase::execSyncV( FieldContainer &oFrom,
1449 ConstFieldMaskArg whichField,
1450 AspectOffsetStore &oOffsets,
1451 ConstFieldMaskArg syncMode,
1452 const UInt32 uiSyncInfo)
1454 MaterialChunk *pThis = static_cast<MaterialChunk *>(this);
1456 pThis->execSync(static_cast<MaterialChunk *>(&oFrom),
1457 whichField,
1458 oOffsets,
1459 syncMode,
1460 uiSyncInfo);
1462 #endif
1465 #ifdef OSG_MT_CPTR_ASPECT
1466 FieldContainer *MaterialChunkBase::createAspectCopy(
1467 const FieldContainer *pRefAspect) const
1469 MaterialChunk *returnValue;
1471 newAspectCopy(returnValue,
1472 dynamic_cast<const MaterialChunk *>(pRefAspect),
1473 dynamic_cast<const MaterialChunk *>(this));
1475 return returnValue;
1477 #endif
1479 void MaterialChunkBase::resolveLinks(void)
1481 Inherited::resolveLinks();
1487 OSG_END_NAMESPACE