OSGTypedGeoVectorProperty.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *                     Copyright 2000-2002 by OpenSG Forum                   *
00006  *                                                                           *
00007  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00008  *                                                                           *
00009 \*---------------------------------------------------------------------------*/
00010 /*---------------------------------------------------------------------------*\
00011  *                                License                                    *
00012  *                                                                           *
00013  * This library is free software; you can redistribute it and/or modify it   *
00014  * under the terms of the GNU Library General Public License as published    *
00015  * by the Free Software Foundation, version 2.                               *
00016  *                                                                           *
00017  * This library is distributed in the hope that it will be useful, but       *
00018  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00020  * Library General Public License for more details.                          *
00021  *                                                                           *
00022  * You should have received a copy of the GNU Library General Public         *
00023  * License along with this library; if not, write to the Free Software       *
00024  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00025  *                                                                           *
00026 \*---------------------------------------------------------------------------*/
00027 /*---------------------------------------------------------------------------*\
00028  *                                Changes                                    *
00029  *                                                                           *
00030  *                                                                           *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035 \*---------------------------------------------------------------------------*/
00036 
00037 #ifndef _OSGTYPEDGEOVECTORPROPERTY_H_
00038 #define _OSGTYPEDGEOVECTORPROPERTY_H_
00039 #ifdef __sgi
00040 #pragma once
00041 #endif
00042 
00043 #include "OSGGL.h"
00044 
00045 #include "OSGDrawableDef.h"
00046 #include "OSGVecMFields.h"
00047 #include "OSGBaseMFields.h"
00048 #include "OSGGeoVectorProperty.h"
00049 
00050 OSG_BEGIN_NAMESPACE
00051 
00059 template <class GeoPropertyDesc>
00060 class TypedGeoVectorProperty : public GeoVectorProperty
00061 {
00062     /*==========================  PRIVATE  ================================*/
00063 
00064   private:
00065 
00066     /*==========================  PUBLIC  =================================*/
00067 
00068   public:
00069 
00070     typedef          GeoVectorProperty                       Inherited;
00071     typedef          GeoVectorProperty                       ParentContainer;
00072 
00073     typedef          GeoPropertyDesc                         PropDesc;
00074 
00075     typedef typename Inherited ::TypeObject                  TypeObject;
00076     typedef typename TypeObject::InitPhase                   InitPhase;
00077 
00078     typedef          TypedGeoVectorProperty<GeoPropertyDesc> Self;
00079 
00080     OSG_GEN_INTERNALPTR(Self);
00081 
00082     typedef typename GeoPropertyDesc::StoredType      StoredType;
00083     typedef typename GeoPropertyDesc::StoredFieldType StoredFieldType;
00084     typedef typename StoredFieldType::EditHandle      StoredEditHandle;
00085     typedef typename StoredFieldType::EditHandlePtr   StoredEditHandlePtr;
00086     typedef typename StoredFieldType::GetHandle       StoredGetHandle;
00087     typedef typename StoredFieldType::GetHandlePtr    StoredGetHandlePtr;
00088     typedef typename GeoPropertyDesc::Converter       Converter;
00089 
00090     typedef typename StoredFieldType::reference       reference;
00091     typedef typename StoredFieldType::const_reference const_reference;
00092 
00093     enum
00094     {
00095         GeoPropDataFieldId = GeoVectorProperty::NextFieldId,
00096 
00097         NextFieldId        = GeoPropDataFieldId + 1
00098     };
00099 
00100     static const BitVector GeoPropDataFieldMask =
00101                            1 << static_cast<Int32>(GeoPropDataFieldId);
00102 
00103 
00104     OSG_FIELD_CONTAINER_TMPL_DECL;
00105 
00106     /*---------------------------------------------------------------------*/
00110 #ifdef OSG_1_GET_COMPAT
00111           StoredFieldType *getFieldPtr (void);
00112           StoredFieldType &getField    (void);
00113 #endif
00114 
00115           StoredFieldType *editFieldPtr(void);
00116     const StoredFieldType *getFieldPtr (void) const;
00117 
00118           StoredFieldType &editField   (void);
00119     const StoredFieldType &getField    (void) const;
00120 
00122     /*---------------------------------------------------------------------*/
00126     inline reference       operator [](UInt32 index);
00127     inline const_reference operator [](UInt32 index) const;
00128 
00130     /*---------------------------------------------------------------------*/
00134     virtual GeoVectorPropertyPtr clone(void);
00135 
00137     /*---------------------------------------------------------------------*/
00141     virtual       UInt32  getFormat    (void) const;
00142     virtual       UInt32  getFormatSize(void) const;
00143     virtual       UInt32  getStride    (void) const;
00144     virtual       UInt32  getDimension (void) const;
00145     virtual       UInt32  size         (void) const;
00146     virtual const UInt8  *getData      (void) const;
00147 
00148             const StoredFieldType &operator->  (       void              ) const;
00149 
00150             StoredType             getValue    (const UInt32      index  ) const;
00151             void                   getValue    (      StoredType &val,
00152                                                 const UInt32      index  ) const;
00153 
00154             void                   setValue    (const StoredType &val,
00155                                                 const UInt32      index  );
00156 
00157             void                   addValue    (const StoredType &val    );
00158 
00159     virtual void                   clear       (      void               );
00160     virtual void                   resize      (      size_t      newsize);
00161     virtual bool                   getNormalize(      void               ) const;
00162     virtual void                   push_back   (const StoredType &val    );
00163 
00164     template <class ExternalType>
00165     ExternalType getValue(const UInt32 index) const
00166     {
00167         FDEBUG(("TypedGeoVectorProperty<>::getValue<>(%d)\n", index));
00168 
00169         ExternalType val;
00170 
00171         if(GeoPropertyDesc::normalize)
00172         {
00173             if(TypeTraits<typename  ExternalType::ValueType>::MathProp ==
00174                IntValue)
00175             {
00176                 GeoConvertNormalize::convertOut(val, _field[index],
00177                     static_cast<Real64>(GeoPropertyDesc::scale) /
00178                     TypeTraits<typename  ExternalType::ValueType>::getMax(), 0);
00179             }
00180             else
00181             {
00182                 GeoConvertNormalize::convertOut(val, _field[index],
00183                     static_cast<Real64>(GeoPropertyDesc::scale), 0);
00184             }
00185         }
00186         else
00187         {
00188             GeoConvert::convertOut(val, _field[index]);
00189         }
00190 
00191         return val;
00192     }
00193 
00194     template <class ExternalType>
00195     void getValue(ExternalType &eval, const UInt32 index) const
00196     {
00197         FDEBUG(("TypedGeoVectorProperty<>::getValue<>(eval, %d)\n", index));
00198 
00199         if(GeoPropertyDesc::normalize)
00200         {
00201             if(TypeTraits<typename ExternalType::ValueType>::MathProp ==
00202                IntValue)
00203             {
00204                 GeoConvertNormalize::convertOut(
00205                     eval,
00206                     _field[index],
00207                     static_cast<Real64>(GeoPropertyDesc::scale) /
00208                         TypeTraits<typename ExternalType::ValueType>::getMax(),
00209                     0);
00210             }
00211             else
00212             {
00213                 GeoConvertNormalize::convertOut(
00214                     eval,
00215                     _field[index],
00216                     static_cast<Real64>(GeoPropertyDesc::scale),
00217                     0);
00218             }
00219         }
00220         else
00221         {
00222             GeoConvert::convertOut(eval, _field[index]);
00223         }
00224     }
00225 
00226     template <class ExternalType>
00227     void setValue (ExternalType val, const UInt32 index)
00228     {
00229         FDEBUG(("TypedGeoVectorProperty<>::setValue<>(val, %d)\n", index));
00230 
00231         StoredType ival;
00232 
00233         if(GeoPropertyDesc::normalize)
00234         {
00235             if(TypeTraits<typename  ExternalType::ValueType>::MathProp ==
00236                IntValue)
00237             {
00238                 GeoConvertNormalize::convertIn(ival, val,
00239                     static_cast<Real64>(GeoPropertyDesc::scale) /
00240                     TypeTraits<typename  ExternalType::ValueType>::getMax(), 0);
00241             }
00242             else
00243             {
00244                 GeoConvertNormalize::convertIn(ival, val,
00245                     static_cast<Real64>(GeoPropertyDesc::scale), 0);
00246             }
00247         }
00248         else
00249         {
00250             GeoConvert::convertIn(ival, val);
00251         }
00252 
00253         setValue(ival, index);
00254     }
00255 
00256     // These are copied from OSGGeoVectorProperty.h
00257     // They need to be replicated as C++ name lookup won't find them
00258 
00259     template <class ExternalType>
00260     void addValue (const ExternalType &val)
00261     {
00262          push_back(val);
00263     }
00264 
00265     template <class ExternalType>
00266     void push_back(const ExternalType &val)
00267     {
00268         resize(size() + 1);
00269         setValue(val, size() - 1);
00270     }
00271 
00273     /*---------------------------------------------------------------------*/
00277     TypedGeoVectorProperty &operator =(const TypedGeoVectorProperty &source);
00278 
00280     /*---------------------------------------------------------------------*/
00284     virtual void dump(      UInt32    uiIndent = 0,
00285                       const BitVector bvFlags  = 0) const;
00286 
00288     /*=========================  PROTECTED  ===============================*/
00289   protected:
00290 
00291     friend class FieldContainer;
00292 
00293     StoredFieldType _field;
00294 
00295     /*---------------------------------------------------------------------*/
00299     TypedGeoVectorProperty(void);
00300     TypedGeoVectorProperty(const TypedGeoVectorProperty &source);
00301 
00303     /*---------------------------------------------------------------------*/
00307     virtual ~TypedGeoVectorProperty(void);
00308 
00310     /*---------------------------------------------------------------------*/
00314     virtual void getGenericValue(      MaxTypeT &val, const UInt32 index) const;
00315     virtual void setGenericValue(const MaxTypeT &val, const UInt32 index);
00316 
00318     /*---------------------------------------------------------------------*/
00322 #ifdef OSG_MT_CPTR_ASPECT
00323     virtual ObjPtr createAspectCopy(void) const;
00324 #endif
00325 
00327     /*---------------------------------------------------------------------*/
00331 #ifdef OSG_MT_CPTR_ASPECT
00332     virtual void execSyncV(      FieldContainer    &oFrom,
00333                                  ConstFieldMaskArg  whichField,
00334                                  AspectOffsetStore &oOffsets,
00335                                  ConstFieldMaskArg  syncMode  ,
00336                            const UInt32             uiSyncInfo);
00337 
00338             void execSync (      Self              *pFrom,
00339                                  ConstFieldMaskArg  whichField,
00340                                  AspectOffsetStore &oOffsets,
00341                                  ConstFieldMaskArg  syncMode  ,
00342                            const UInt32             uiSyncInfo);
00343 
00345     /*---------------------------------------------------------------------*/
00349     virtual void resolveLinks(void);
00350 
00351 #endif
00352 
00354     /*---------------------------------------------------------------------*/
00358     EditFieldHandlePtr editHandleField(void);
00359     GetFieldHandlePtr  getHandleField (void) const;
00360 
00362     /*---------------------------------------------------------------------*/
00366     virtual void changed        (ConstFieldMaskArg whichField,
00367                                  UInt32            origin,
00368                                  BitVector         detail);
00369 
00371     /*---------------------------------------------------------------------*/
00375     virtual UInt32 getBinSize (ConstFieldMaskArg  whichField);
00376     virtual void   copyToBin  (BinaryDataHandler &pMem,
00377                                ConstFieldMaskArg  whichField);
00378     virtual void   copyFromBin(BinaryDataHandler &pMem,
00379                                ConstFieldMaskArg  whichField);
00380 
00382     /*==========================  PRIVATE  ================================*/
00383 
00384   private:
00385 
00386     static void classDescInserter(TypeObject &oType);
00387 
00388     static void initMethod(InitPhase ePhase);
00389 
00390     static const ObjPtr NullPtr;
00391 
00392     static TypeObject  _type;
00393 };
00394 
00395 
00396 struct TypedGeoVectorPropertyDescBase
00397 {
00398     typedef GeoVectorProperty       PropertParent;
00399 
00400     typedef PropertParent::TypeObject TypeObject;
00401     typedef TypeObject::InitPhase     InitPhase;
00402 
00403     static const Char8 *getGroupName (void)
00404     {
00405         return "TypedGeoVectorProperty";
00406     }
00407 
00408     static void initMethod(InitPhase OSG_CHECK_ARG(ePhase)) {}
00409 
00410     static UInt32             getStride    (void) { return 0;               }
00411 
00412     static const Char8 *getTypeName (void) { return "GeoVectorProperty"; }
00413 
00414     /* Don't normalize */
00415     typedef GeoConvert Converter;
00416 
00417     static const bool normalize = false;
00418     static const int  scale     = 1;
00419     static const int  offset    = 0;
00420 };
00421 
00422 
00423 struct TypedNormGeoVectorPropertyDescBase
00424 {
00425     typedef GeoVectorProperty       PropertParent;
00426 
00427     typedef PropertParent::TypeObject TypeObject;
00428     typedef TypeObject::InitPhase     InitPhase;
00429 
00430     static const Char8 *getGroupName (void)
00431     {
00432         return "TypedNormGeoVectorProperty";
00433     }
00434 
00435     static void initMethod(InitPhase OSG_CHECK_ARG(ePhase)) {}
00436 
00437     static UInt32             getStride    (void) { return 0;               }
00438 
00439     static const Char8 *getTypeName (void) { return "GeoVectorProperty"; }
00440 
00441     /* Normalize */
00442     typedef GeoConvertNormalize     Converter;
00443     static const bool normalize = true;
00444     static const int offset = 0;
00445 };
00446 
00447 
00448 // Helper Macro to define Properties
00449 
00450 #undef makeProp
00451 
00452 #if !defined(OSG_DO_DOC)
00453 
00456 #define makeProp(typename, gltypename, gltype)                               \
00457 struct Geo##typename##PropertyDesc :                                      \
00458     public TypedGeoVectorPropertyDescBase                                 \
00459 {                                                                            \
00460     /*---------------------------------------------------------------------*/\
00461 \
00462 \
00463                                                                              \
00464     static const Char8 *getTypeName (void)                                   \
00465     {                                                                        \
00466         return "Geo" #typename "Property";                                \
00467     }                                                                        \
00468                                                                              \
00469     static UInt32             getFormat    (void) { return gltypename;      }\
00470     static UInt32             getFormatSize(void) { return sizeof(gltype);  }\
00471     static UInt32             getDimension (void) { return typename::_uiSize;}\
00472                                                                              \
00473     typedef typename          StoredType;                                    \
00474     typedef MF##typename      StoredFieldType;                               \
00475 \
00476 };                                                                           \
00477                                                                              \
00478 typedef TypedGeoVectorProperty<Geo##typename##PropertyDesc>                 \
00479         Geo##typename##Property;                                          \
00480                                                                             \
00481 typedef Geo##typename##Property::ObjPtr                                     \
00482     Geo##typename##PropertyPtr;                                             \
00483 typedef Geo##typename##Property::ObjPtrConst                                \
00484     Geo##typename##PropertyPtrConst;                                        \
00485 typedef Geo##typename##Property::ObjPtrConstArg                             \
00486     Geo##typename##PropertyPtrConstArg
00487 
00488 
00489 #define makeNormProp(typename, propname, nscale, gltypename, gltype)         \
00490 struct Geo##propname##PropertyDesc :                                      \
00491     public TypedNormGeoVectorPropertyDescBase                             \
00492 {                                                                            \
00493     /*---------------------------------------------------------------------*/\
00494 \
00495 \
00496                                                                              \
00497     static const Char8 *getTypeName (void)                                   \
00498     {                                                                        \
00499         return "Geo" #propname "Property";                                \
00500     }                                                                        \
00501                                                                              \
00502     static UInt32             getFormat    (void) { return gltypename;      }\
00503     static UInt32             getFormatSize(void) { return sizeof(gltype);  }\
00504     static UInt32             getDimension (void) { return typename::_uiSize;}\
00505                                                                              \
00506     typedef typename          StoredType;                                    \
00507     typedef MF##typename      StoredFieldType;                               \
00508                                                                              \
00509     static const int scale = nscale;                                         \
00510 \
00511 };                                                                           \
00512                                                                              \
00513 typedef TypedGeoVectorProperty<Geo##propname##PropertyDesc>            \
00514         Geo##propname##Property;                                          \
00515                                                                             \
00516 typedef Geo##propname##Property::ObjPtr                                     \
00517     Geo##propname##PropertyPtr;                                             \
00518 typedef Geo##propname##Property::ObjPtrConst                                \
00519     Geo##propname##PropertyPtrConst;                                        \
00520 typedef Geo##propname##Property::ObjPtrConstArg                             \
00521     Geo##propname##PropertyPtrConstArg
00522 
00523 #else // !defined(OSG_DO_DOC)
00524 
00525 #define makeProp(typename, gltypename, gltype)                               \
00526 struct Geo##typename##PropertyDesc :                                      \
00527     public TypedGeoVectorPropertyDescBase                                 \
00528 {                                                                            \
00529     /*---------------------------------------------------------------------*/\
00530 \
00531 \
00532                                                                              \
00533     static const Char8 *getTypeName (void)                                   \
00534     {                                                                        \
00535         return "Geo" #typename "Property";                                \
00536     }                                                                        \
00537                                                                              \
00538     static UInt32             getFormat    (void) { return gltypename;      }\
00539     static UInt32             getFormatSize(void) { return sizeof(gltype);  }\
00540     static UInt32             getDimension (void) { return typename::_uiSize;}\
00541                                                                              \
00542     typedef typename          StoredType;                                    \
00543     typedef MF##typename      StoredFieldType;                               \
00544 \
00545 }
00546 
00547 #define makeNormProp(typename, propname, nscale, gltypename, gltype)         \
00548 struct Geo##propname##PropertyDesc :                                      \
00549     public TypedNormGeoVectorPropertyDescBase                             \
00550 {                                                                            \
00551     /*---------------------------------------------------------------------*/\
00552 \
00553 \
00554                                                                              \
00555     static const Char8 *getTypeName (void)                                   \
00556     {                                                                        \
00557         return "Geo" #propname "Property";                                \
00558     }                                                                        \
00559                                                                              \
00560     static UInt32             getFormat    (void) { return gltypename;      }\
00561     static UInt32             getFormatSize(void) { return sizeof(gltype);  }\
00562     static UInt32             getDimension (void) { return typename::_uiSize;}\
00563                                                                              \
00564     typedef typename          StoredType;                                    \
00565     typedef MF##typename      StoredFieldType;                               \
00566                                                                              \
00567     static const int scale = nscale;                                         \
00568 \
00569 }
00570 
00571 #endif
00572 
00573 
00574 // Meta-Macros
00575 
00576 #define make1to4dprop(tbase, ttype, gltypename, gltype)                     \
00577 makeProp(tbase##1##ttype, gltypename, gltype);                              \
00578 makeProp(tbase##2##ttype, gltypename, gltype);                              \
00579 makeProp(tbase##3##ttype, gltypename, gltype);                              \
00580 makeProp(tbase##4##ttype, gltypename, gltype)
00581 
00582 #define maketypesprop(ttype, gltypename, gltype)                            \
00583 make1to4dprop(Vec, ttype, gltypename, gltype);                              \
00584 make1to4dprop(Pnt, ttype, gltypename, gltype);                              \
00585 
00586 #define make1to4dnprop(tbase, ttype, scale, gltypename, gltype)             \
00587 makeNormProp(tbase##1##ttype, tbase##1N##ttype, scale, gltypename, gltype); \
00588 makeNormProp(tbase##2##ttype, tbase##2N##ttype, scale, gltypename, gltype); \
00589 makeNormProp(tbase##3##ttype, tbase##3N##ttype, scale, gltypename, gltype); \
00590 makeNormProp(tbase##4##ttype, tbase##4N##ttype, scale, gltypename, gltype)
00591 
00592 #define maketypesnprop(ttype, scale, gltypename, gltype)                    \
00593 make1to4dnprop(Vec, ttype, scale, gltypename, gltype);                      \
00594 make1to4dnprop(Pnt, ttype, scale, gltypename, gltype);                      \
00595 make1to4dprop(Vec, ttype, gltypename, gltype);                              \
00596 make1to4dprop(Pnt, ttype, gltypename, gltype)
00597 
00598 #define makecolorprop(ttype, scale, gltypename, gltype)                     \
00599 makeProp(Color3##ttype, gltypename, gltype);                                \
00600 makeProp(Color4##ttype, gltypename, gltype);                                \
00601 makeNormProp(Color3##ttype, Color3N##ttype, scale, gltypename, gltype);     \
00602 makeNormProp(Color4##ttype, Color4N##ttype, scale, gltypename, gltype)
00603 
00604 // Now create all the necessary properties
00605 
00606 maketypesnprop(ub,         255, GL_UNSIGNED_BYTE,  GLubyte);
00607 maketypesnprop( b,         127, GL_BYTE,           GLbyte);
00608 maketypesnprop(us,       65535, GL_UNSIGNED_SHORT, GLushort);
00609 maketypesnprop( s,       32767, GL_SHORT,          GLshort);
00610 // Does anybody need those? *DR*
00611 //maketypesnprop(ui, 4294967295U, GL_UNSIGNED_INT,   GLuint);
00612 //maketypesnprop( i, 2147483647U, GL_INT,            GLint);
00613 
00614 #ifndef OSG_WINCE
00615 maketypesprop(f, GL_FLOAT,  GLfloat);
00616 #endif
00617 
00618 #ifdef OSG_WINCE
00619 maketypesprop(fx, GL_FIXED, GLfixed);
00620 #endif
00621 
00622 #ifndef OSG_WINCE
00623 maketypesprop(d, GL_DOUBLE, GLdouble);
00624 #endif
00625 
00626 makecolorprop(ub,         255, GL_UNSIGNED_BYTE,  GLubyte);
00627 makeProp(Color3f, GL_FLOAT,  GLfloat);
00628 makeProp(Color4f, GL_FLOAT,  GLfloat);
00629 
00630 #ifdef OSG_WINCE
00631 makeProp(Color3fx, GL_FIXED,  GLfixed);
00632 makeProp(Color4fx, GL_FIXED,  GLfixed);
00633 #endif
00634 
00635 
00636 #ifdef OSG_DEPRECIATED_PROPS
00637 
00640 // Positions
00641 typedef GeoVectorPropertyPtr         GeoPositionsPtr;
00642 typedef GeoVectorPropertyConstPtr    GeoPositionsConstPtr;
00643 typedef GeoVectorPropertyPtrConst    GeoPositionsPtrConst;
00644 typedef GeoVectorPropertyPtrConstArg GeoPositionsPtrConstArg;
00645 
00646 typedef GeoPnt2sProperty    GeoPositions2s;
00647 typedef GeoPnt3sProperty    GeoPositions3s;
00648 typedef GeoPnt4sProperty    GeoPositions4s;
00649 typedef GeoPnt2sPropertyPtr GeoPositions2sPtr;
00650 typedef GeoPnt3sPropertyPtr GeoPositions3sPtr;
00651 typedef GeoPnt4sPropertyPtr GeoPositions4sPtr;
00652 
00653 #ifndef OSG_WINCE
00654 typedef GeoPnt2fProperty    GeoPositions2f;
00655 typedef GeoPnt3fProperty    GeoPositions3f;
00656 typedef GeoPnt4fProperty    GeoPositions4f;
00657 typedef GeoPnt2fPropertyPtr GeoPositions2fPtr;
00658 typedef GeoPnt3fPropertyPtr GeoPositions3fPtr;
00659 typedef GeoPnt4fPropertyPtr GeoPositions4fPtr;
00660 
00661 typedef GeoPnt2dProperty    GeoPositions2d;
00662 typedef GeoPnt3dProperty    GeoPositions3d;
00663 typedef GeoPnt4dProperty    GeoPositions4d;
00664 typedef GeoPnt2dPropertyPtr GeoPositions2dPtr;
00665 typedef GeoPnt3dPropertyPtr GeoPositions3dPtr;
00666 typedef GeoPnt4dPropertyPtr GeoPositions4dPtr;
00667 #endif
00668 
00669 // Normals
00670 typedef GeoVectorPropertyPtr         GeoNormalsPtr;
00671 typedef GeoVectorPropertyConstPtr    GeoNormalsConstPtr;
00672 typedef GeoVectorPropertyPtrConst    GeoNormalsPtrConst;
00673 typedef GeoVectorPropertyPtrConstArg GeoNormalsPtrConstArg;
00674 
00675 #ifndef OSG_WINCE
00676 typedef GeoVec3fProperty    GeoNormals3f;
00677 #endif
00678 typedef GeoVec3sProperty    GeoNormals3s;
00679 typedef GeoVec3bProperty    GeoNormals3b;
00680 #ifndef OSG_WINCE
00681 typedef GeoVec3fPropertyPtr GeoNormals3fPtr;
00682 #endif
00683 typedef GeoVec3sPropertyPtr GeoNormals3sPtr;
00684 typedef GeoVec3bPropertyPtr GeoNormals3bPtr;
00685 
00686 // Colors
00687 typedef GeoVectorPropertyPtr         GeoColorsPtr;
00688 typedef GeoVectorPropertyConstPtr    GeoColorsConstPtr;
00689 typedef GeoVectorPropertyPtrConst    GeoColorsPtrConst;
00690 typedef GeoVectorPropertyPtrConstArg GeoColorsPtrConstArg;
00691 
00692 #ifndef OSG_WINCE
00693 typedef GeoColor3fProperty     GeoColors3f;
00694 typedef GeoColor4fProperty     GeoColors4f;
00695 #endif
00696 typedef GeoColor3ubProperty    GeoColors3ub;
00697 typedef GeoColor4ubProperty    GeoColors4ub;
00698 #ifndef OSG_WINCE
00699 typedef GeoColor3fPropertyPtr  GeoColors3fPtr;
00700 typedef GeoColor4fPropertyPtr  GeoColors4fPtr;
00701 #endif
00702 typedef GeoColor3ubPropertyPtr GeoColors3ubPtr;
00703 typedef GeoColor4ubPropertyPtr GeoColors4ubPtr;
00704 
00705 // TexCoords
00706 typedef GeoVectorPropertyPtr         GeoTexCoordsPtr;
00707 typedef GeoVectorPropertyConstPtr    GeoTexCoordsConstPtr;
00708 typedef GeoVectorPropertyPtrConst    GeoTexCoordsPtrConst;
00709 typedef GeoVectorPropertyPtrConstArg GeoTexCoordsPtrConstArg;
00710 
00711 #ifndef OSG_WINCE
00712 typedef GeoVec1fProperty     GeoTexCoords1f;
00713 typedef GeoVec2fProperty     GeoTexCoords2f;
00714 typedef GeoVec3fProperty     GeoTexCoords3f;
00715 typedef GeoVec4fProperty     GeoTexCoords4f;
00716 
00717 typedef GeoVec1fPropertyPtr  GeoTexCoords1fPtr;
00718 typedef GeoVec2fPropertyPtr  GeoTexCoords2fPtr;
00719 typedef GeoVec3fPropertyPtr  GeoTexCoords3fPtr;
00720 typedef GeoVec4fPropertyPtr  GeoTexCoords4fPtr;
00721 
00722 typedef GeoVec1dProperty     GeoTexCoords1d;
00723 typedef GeoVec2dProperty     GeoTexCoords2d;
00724 typedef GeoVec3dProperty     GeoTexCoords3d;
00725 typedef GeoVec4dProperty     GeoTexCoords4d;
00726 
00727 typedef GeoVec1dPropertyPtr  GeoTexCoords1dPtr;
00728 typedef GeoVec2dPropertyPtr  GeoTexCoords2dPtr;
00729 typedef GeoVec3dPropertyPtr  GeoTexCoords3dPtr;
00730 typedef GeoVec4dPropertyPtr  GeoTexCoords4dPtr;
00731 #endif
00732 
00733 #endif
00734 
00735 #ifdef OSG_GLES
00736 #ifdef OSG_FLOAT_PROFILE
00737 #else
00738 typedef GeoPnt3fxProperty     GeoPnt3rProperty;
00739 typedef GeoVec2fxProperty     GeoVec2rProperty;
00740 typedef GeoVec3fxProperty     GeoVec3rProperty;
00741 
00742 typedef GeoPnt3fxPropertyPtr  GeoPnt3rPropertyPtr;
00743 typedef GeoVec2fxPropertyPtr  GeoVec2rPropertyPtr;
00744 typedef GeoVec3fxPropertyPtr  GeoVec3rPropertyPtr;
00745 #endif
00746 #else
00747 typedef GeoPnt3fProperty      GeoPnt3rProperty;
00748 typedef GeoVec2fProperty      GeoVec2rProperty;
00749 typedef GeoVec3fProperty      GeoVec3rProperty;
00750 
00751 typedef GeoPnt3fPropertyPtr   GeoPnt3rPropertyPtr;
00752 typedef GeoVec2fPropertyPtr   GeoVec2rPropertyPtr;
00753 typedef GeoVec3fPropertyPtr   GeoVec3rPropertyPtr;
00754 #endif
00755 
00756 
00757 OSG_END_NAMESPACE
00758 
00759 #include "OSGTypedGeoVectorProperty.inl"
00760 
00761 
00762 #endif /* _OSGTYPEDGEOVECTORPROPERTY_H_ */
00763