00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #ifndef _OSGIMAGEFOREGROUNDBASE_H_
00055 #define _OSGIMAGEFOREGROUNDBASE_H_
00056 #ifdef __sgi
00057 #pragma once
00058 #endif
00059
00060
00061 #include <OSGConfig.h>
00062 #include <OSGSystemDef.h>
00063
00064 #include <OSGBaseTypes.h>
00065 #include <OSGRefPtr.h>
00066 #include <OSGCoredNodePtr.h>
00067
00068 #include <OSGForeground.h>
00069
00070 #include <OSGImageFields.h>
00071 #include <OSGPnt2fFields.h>
00072
00073 #include <OSGImageForegroundFields.h>
00074
00075 OSG_BEGIN_NAMESPACE
00076
00077 class ImageForeground;
00078 class BinaryDataHandler;
00079
00081
00082 class OSG_SYSTEMLIB_DLLMAPPING ImageForegroundBase : public Foreground
00083 {
00084 private:
00085
00086 typedef Foreground Inherited;
00087
00088
00089 public:
00090
00091 typedef ImageForegroundPtr Ptr;
00092
00093 enum
00094 {
00095 ImagesFieldId = Inherited::NextFieldId,
00096 PositionsFieldId = ImagesFieldId + 1,
00097 NextFieldId = PositionsFieldId + 1
00098 };
00099
00100 static const OSG::BitVector ImagesFieldMask;
00101 static const OSG::BitVector PositionsFieldMask;
00102
00103
00104 static const OSG::BitVector MTInfluenceMask;
00105
00106
00110 static FieldContainerType &getClassType (void);
00111 static UInt32 getClassTypeId (void);
00112
00114
00118 virtual FieldContainerType &getType (void);
00119 virtual const FieldContainerType &getType (void) const;
00120
00121 virtual UInt32 getContainerSize(void) const;
00122
00124
00128 MFImagePtr *getMFImages (void);
00129 MFPnt2f *getMFPositions (void);
00130
00131 ImagePtr &getImages (const UInt32 index);
00132 MFImagePtr &getImages (void);
00133 const MFImagePtr &getImages (void) const;
00134 Pnt2f &getPositions (const UInt32 index);
00135 MFPnt2f &getPositions (void);
00136 const MFPnt2f &getPositions (void) const;
00137
00139
00145
00150
00154 virtual UInt32 getBinSize (const BitVector &whichField);
00155 virtual void copyToBin ( BinaryDataHandler &pMem,
00156 const BitVector &whichField);
00157 virtual void copyFromBin( BinaryDataHandler &pMem,
00158 const BitVector &whichField);
00159
00160
00162
00166 static ImageForegroundPtr create (void);
00167 static ImageForegroundPtr createEmpty (void);
00168
00171
00175 virtual FieldContainerPtr shallowCopy (void) const;
00176
00178
00179 protected:
00180
00181
00185 MFImagePtr _mfImages;
00186 MFPnt2f _mfPositions;
00187
00189
00193 ImageForegroundBase(void);
00194 ImageForegroundBase(const ImageForegroundBase &source);
00195
00197
00201 virtual ~ImageForegroundBase(void);
00202
00204
00208 #if !defined(OSG_FIXED_MFIELDSYNC)
00209 void executeSyncImpl( ImageForegroundBase *pOther,
00210 const BitVector &whichField);
00211
00212 virtual void executeSync( FieldContainer &other,
00213 const BitVector &whichField);
00214 #else
00215 void executeSyncImpl( ImageForegroundBase *pOther,
00216 const BitVector &whichField,
00217 const SyncInfo &sInfo );
00218
00219 virtual void executeSync( FieldContainer &other,
00220 const BitVector &whichField,
00221 const SyncInfo &sInfo);
00222
00223 virtual void execBeginEdit (const BitVector &whichField,
00224 UInt32 uiAspect,
00225 UInt32 uiContainerSize);
00226
00227 void execBeginEditImpl (const BitVector &whichField,
00228 UInt32 uiAspect,
00229 UInt32 uiContainerSize);
00230
00231 virtual void onDestroyAspect(UInt32 uiId, UInt32 uiAspect);
00232 #endif
00233
00235
00236 private:
00237
00238 friend class FieldContainer;
00239
00240 static FieldDescription *_desc[];
00241 static FieldContainerType _type;
00242
00243
00244
00245 void operator =(const ImageForegroundBase &source);
00246 };
00247
00248
00249
00250
00251
00252
00253 typedef ImageForegroundBase *ImageForegroundBaseP;
00254
00255 typedef osgIF<ImageForegroundBase::isNodeCore,
00256 CoredNodePtr<ImageForeground>,
00257 FieldContainer::attempt_to_create_CoredNodePtr_on_non_NodeCore_FC
00258 >::_IRet ImageForegroundNodePtr;
00259
00260 typedef RefPtr<ImageForegroundPtr> ImageForegroundRefPtr;
00261
00262 OSG_END_NAMESPACE
00263
00264 #define OSGIMAGEFOREGROUNDBASE_HEADER_CVSID "@(#)$Id: FCBaseTemplate_h.h,v 1.40 2005/07/20 00:10:14 vossg Exp $"
00265
00266 #endif