osg::SortFirstWindow Class Reference
[Cluster]

*put brief class description here* More...

#include <OSGSortFirstWindow.h>

Inheritance diagram for osg::SortFirstWindow:

osg::SortFirstWindowBase osg::ClusterWindow osg::ClusterWindowBase osg::Window osg::WindowBase osg::AttachmentContainer osg::FieldContainer

List of all members.

asynchronous initialization



bool initAsync (connectioncbfp fp)
void setConnectionCB (connectioncbfp fp)
typedef bool(* connectioncbfp )(std::string server, Real32 progress)

Extension handling



UInt32 getGLVersion (void)
bool hasExtension (UInt32 id)
bool hasExtension (const Char8 *s)
void * getFunction (UInt32 id)
void * getFunctionNoCheck (UInt32 id)
void dumpExtensions (void)
Real32 getConstantValue (GLenum val)
const Vec2fgetConstantValuev (GLenum val)
const std::vector< std::string > & getRegisteredFunctions (void)
const std::vector< std::string > & getExtensions (void)
const std::vector< std::string > & getIgnoredExtensions (void)
static void setGLLibraryName (const Char8 *s)
static Int32 getExtensionId (const Char8 *s)
static bool hasCommonExtension (UInt32 id)
static const std::vector
< std::string > & 
getRegisteredExtensions (void)

GL object handling



void validateGLObject (UInt32 id)
void validateAllGLObjects (void)
void setGLObjectId (UInt32 id, UInt32 id2)
UInt32 getGLObjectId (UInt32 id)
static UInt32 getGLObjectsSize (void)
static void refreshGLObject (UInt32 id)
static void refreshAllGLObjects (void)
static void reinitializeGLObject (UInt32 id)
static void reinitializeAllGLObjects (void)
static void destroyGLObject (UInt32 id, UInt32 num=1)
static void unpackIdStatus (UInt32 idstatus, UInt32 &id, GLObjectStatusE &status)

GL object handling



void doInitRegisterGLObject (UInt32 id, UInt32 num)
static void initRegisterGLObject (UInt32 id, UInt32 num)
static UInt32 packIdStatus (UInt32 id, GLObjectStatusE status)

Public Types

enum  {
  CompressionFieldId = Inherited::NextFieldId, SubtileSizeFieldId = CompressionFieldId + 1, ComposeFieldId = SubtileSizeFieldId + 1, RegionFieldId = ComposeFieldId + 1,
  UseFaceDistributionFieldId = RegionFieldId + 1, NextFieldId = UseFaceDistributionFieldId + 1
}
typedef SortFirstWindowPtr Ptr
enum  {
  ServersFieldId = Inherited::NextFieldId, ConnectionTypeFieldId = ServersFieldId + 1, ConnectionInterfaceFieldId = ConnectionTypeFieldId + 1, ConnectionDestinationFieldId = ConnectionInterfaceFieldId + 1,
  ConnectionParamsFieldId = ConnectionDestinationFieldId + 1, ServicePortFieldId = ConnectionParamsFieldId + 1, ServiceAddressFieldId = ServicePortFieldId + 1, ServiceInterfaceFieldId = ServiceAddressFieldId + 1,
  ClientWindowFieldId = ServiceInterfaceFieldId + 1, InterleaveFieldId = ClientWindowFieldId + 1, FrameCountFieldId = InterleaveFieldId + 1, ComposerFieldId = FrameCountFieldId + 1,
  AutostartFieldId = ComposerFieldId + 1, CalibrationFieldId = AutostartFieldId + 1, FilterFieldId = CalibrationFieldId + 1, DirtyFieldId = FilterFieldId + 1,
  NextFieldId = DirtyFieldId + 1
}
enum  GLObjectStatusE {
  notused = 1, initialize, reinitialize, initialized,
  needrefresh, destroy, finaldestroy
}
enum  { invalidExtensionID = 0x7fffffff, invalidFunctionID = 0x7fffffff }
enum  { statusShift = 3, statusMask = 7 }
typedef ArgsCollector< UInt32GLObjectFunctorArgs
typedef TypedVoidFunctor2Base
< PtrCallArg< Window >
, GLObjectFunctorArgs
GLObjectFunctor
typedef void(* GLExtensionFunction )(void)
enum  {
  WidthFieldId = Inherited::NextFieldId, HeightFieldId = WidthFieldId + 1, PortFieldId = HeightFieldId + 1, ResizePendingFieldId = PortFieldId + 1,
  GlObjectEventCounterFieldId = ResizePendingFieldId + 1, GlObjectLastRefreshFieldId = GlObjectEventCounterFieldId + 1, GlObjectLastReinitializeFieldId = GlObjectLastRefreshFieldId + 1, NextFieldId = GlObjectLastReinitializeFieldId + 1
}
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Sync


virtual void changed (BitVector whichField, UInt32 origin)
 react to field changes
Output


virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
 output the instance for debug purposes
FieldContainer Get


virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get


SFStringgetSFCompression (void)
 Get the SortFirstWindow::_sfCompression field.
SFUInt32getSFSubtileSize (void)
 Get the SortFirstWindow::_sfSubtileSize field.
SFBoolgetSFCompose (void)
 Get the SortFirstWindow::_sfCompose field.
MFUInt32getMFRegion (void)
 Get the SortFirstWindow::_mfRegion field.
SFBoolgetSFUseFaceDistribution (void)
 Get the SortFirstWindow::_sfUseFaceDistribution field.
std::string & getCompression (void)
 Get the value of the SortFirstWindow::_sfCompression field.
const std::string & getCompression (void) const
 Get the value of the SortFirstWindow::_sfCompression field.
UInt32getSubtileSize (void)
 Get the value of the SortFirstWindow::_sfSubtileSize field.
const UInt32getSubtileSize (void) const
 Get the value of the SortFirstWindow::_sfSubtileSize field.
bool & getCompose (void)
 Get the value of the SortFirstWindow::_sfCompose field.
const bool & getCompose (void) const
 Get the value of the SortFirstWindow::_sfCompose field.
bool & getUseFaceDistribution (void)
 Get the value of the SortFirstWindow::_sfUseFaceDistribution field.
const bool & getUseFaceDistribution (void) const
 Get the value of the SortFirstWindow::_sfUseFaceDistribution field.
UInt32getRegion (const UInt32 index)
 Get the value of the index element the SortFirstWindow::_mfRegion field.
MFUInt32getRegion (void)
 Get the SortFirstWindow::_mfRegion field.
const MFUInt32getRegion (void) const
 Get the SortFirstWindow::_mfRegion field.
Field Set


void setCompression (const std::string &value)
 Set the value of the SortFirstWindow::_sfCompression field.
void setSubtileSize (const UInt32 &value)
 Set the value of the SortFirstWindow::_sfSubtileSize field.
void setCompose (const bool &value)
 Set the value of the SortFirstWindow::_sfCompose field.
void setUseFaceDistribution (const bool &value)
 Set the value of the SortFirstWindow::_sfUseFaceDistribution field.
Binary Access
virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Copy


virtual FieldContainerPtr shallowCopy (void) const
GL implementation functions


virtual void(* getFunctionByName (const Char8 *s))()
Window system implementation functions


virtual void activate (void)
virtual void deactivate (void)
virtual void swap (void)
virtual void init (void)
virtual void render (RenderActionBase *action=NULL)
virtual void renderAllViewports (RenderActionBase *action=NULL)
virtual void frameInit (void)
virtual void frameExit (void)
connection pool


ClusterNetworkgetNetwork (void)
Statistics


StatCollectorgetStatistics (void) const
void setStatistics (StatCollector *stat)
Calibration


bool loadCalibration (std::istream &in)
bool saveCalibration (std::ostream &out)
bool loadFilter (std::istream &in)
bool updateFilter (WindowPtr window, UInt32 id, RenderActionBase *action)
Field Get


MFStringgetMFServers (void)
 Get the ClusterWindow::_mfServers field.
SFStringgetSFConnectionType (void)
 Get the ClusterWindow::_sfConnectionType field.
SFStringgetSFConnectionInterface (void)
 Get the ClusterWindow::_sfConnectionInterface field.
SFStringgetSFConnectionDestination (void)
 Get the ClusterWindow::_sfConnectionDestination field.
SFStringgetSFConnectionParams (void)
 Get the ClusterWindow::_sfConnectionParams field.
SFUInt32getSFServicePort (void)
 Get the ClusterWindow::_sfServicePort field.
SFStringgetSFServiceAddress (void)
 Get the ClusterWindow::_sfServiceAddress field.
SFStringgetSFServiceInterface (void)
 Get the ClusterWindow::_sfServiceInterface field.
SFWindowPtrgetSFClientWindow (void)
 Get the ClusterWindow::_sfClientWindow field.
SFUInt32getSFInterleave (void)
 Get the ClusterWindow::_sfInterleave field.
SFUInt32getSFFrameCount (void)
 Get the ClusterWindow::_sfFrameCount field.
SFImageComposerPtrgetSFComposer (void)
 Get the ClusterWindow::_sfComposer field.
MFStringgetMFAutostart (void)
 Get the ClusterWindow::_mfAutostart field.
MFDisplayCalibrationPtrgetMFCalibration (void)
 Get the ClusterWindow::_mfCalibration field.
MFDisplayFilterForegroundPtrgetMFFilter (void)
 Get the ClusterWindow::_mfFilter field.
std::string & getConnectionType (void)
 Get the value of the ClusterWindow::_sfConnectionType field.
const std::string & getConnectionType (void) const
 Get the value of the ClusterWindow::_sfConnectionType field.
std::string & getConnectionInterface (void)
 Get the value of the ClusterWindow::_sfConnectionInterface field.
const std::string & getConnectionInterface (void) const
 Get the value of the ClusterWindow::_sfConnectionInterface field.
std::string & getConnectionDestination (void)
 Get the value of the ClusterWindow::_sfConnectionDestination field.
const std::string & getConnectionDestination (void) const
 Get the value of the ClusterWindow::_sfConnectionDestination field.
std::string & getConnectionParams (void)
 Get the value of the ClusterWindow::_sfConnectionParams field.
const std::string & getConnectionParams (void) const
 Get the value of the ClusterWindow::_sfConnectionParams field.
UInt32getServicePort (void)
 Get the value of the ClusterWindow::_sfServicePort field.
const UInt32getServicePort (void) const
 Get the value of the ClusterWindow::_sfServicePort field.
std::string & getServiceAddress (void)
 Get the value of the ClusterWindow::_sfServiceAddress field.
const std::string & getServiceAddress (void) const
 Get the value of the ClusterWindow::_sfServiceAddress field.
std::string & getServiceInterface (void)
 Get the value of the ClusterWindow::_sfServiceInterface field.
const std::string & getServiceInterface (void) const
 Get the value of the ClusterWindow::_sfServiceInterface field.
WindowPtrgetClientWindow (void)
 Get the value of the ClusterWindow::_sfClientWindow field.
const WindowPtrgetClientWindow (void) const
 Get the value of the ClusterWindow::_sfClientWindow field.
UInt32getInterleave (void)
 Get the value of the ClusterWindow::_sfInterleave field.
const UInt32getInterleave (void) const
 Get the value of the ClusterWindow::_sfInterleave field.
UInt32getFrameCount (void)
 Get the value of the ClusterWindow::_sfFrameCount field.
const UInt32getFrameCount (void) const
 Get the value of the ClusterWindow::_sfFrameCount field.
ImageComposerPtrgetComposer (void)
 Get the value of the ClusterWindow::_sfComposer field.
const ImageComposerPtrgetComposer (void) const
 Get the value of the ClusterWindow::_sfComposer field.
std::string & getServers (const UInt32 index)
 Get the value of the index element the ClusterWindow::_mfServers field.
MFStringgetServers (void)
 Get the ClusterWindow::_mfServers field.
const MFStringgetServers (void) const
 Get the ClusterWindow::_mfServers field.
std::string & getAutostart (const UInt32 index)
 Get the value of the index element the ClusterWindow::_mfAutostart field.
MFStringgetAutostart (void)
 Get the ClusterWindow::_mfAutostart field.
const MFStringgetAutostart (void) const
 Get the ClusterWindow::_mfAutostart field.
DisplayCalibrationPtrgetCalibration (const UInt32 index)
 Get the value of the index element the ClusterWindow::_mfCalibration field.
MFDisplayCalibrationPtrgetCalibration (void)
 Get the ClusterWindow::_mfCalibration field.
const MFDisplayCalibrationPtrgetCalibration (void) const
 Get the ClusterWindow::_mfCalibration field.
DisplayFilterForegroundPtrgetFilter (const UInt32 index)
 Get the value of the index element the ClusterWindow::_mfFilter field.
MFDisplayFilterForegroundPtrgetFilter (void)
 Get the ClusterWindow::_mfFilter field.
const
MFDisplayFilterForegroundPtr
getFilter (void) const
 Get the ClusterWindow::_mfFilter field.
Field Set


void setConnectionType (const std::string &value)
 Set the value of the ClusterWindow::_sfConnectionType field.
void setConnectionInterface (const std::string &value)
 Set the value of the ClusterWindow::_sfConnectionInterface field.
void setConnectionDestination (const std::string &value)
 Set the value of the ClusterWindow::_sfConnectionDestination field.
void setConnectionParams (const std::string &value)
 Set the value of the ClusterWindow::_sfConnectionParams field.
void setServicePort (const UInt32 &value)
 Set the value of the ClusterWindow::_sfServicePort field.
void setServiceAddress (const std::string &value)
 Set the value of the ClusterWindow::_sfServiceAddress field.
void setServiceInterface (const std::string &value)
 Set the value of the ClusterWindow::_sfServiceInterface field.
void setClientWindow (const WindowPtr &value)
 Set the value of the ClusterWindow::_sfClientWindow field.
void setInterleave (const UInt32 &value)
 Set the value of the ClusterWindow::_sfInterleave field.
void setFrameCount (const UInt32 &value)
 Set the value of the ClusterWindow::_sfFrameCount field.
void setComposer (const ImageComposerPtr &value)
 Set the value of the ClusterWindow::_sfComposer field.
Viewport handling


void addPort (const ViewportPtr &portP)
void insertPort (UInt32 portIndex, const ViewportPtr &portP)
void replacePort (UInt32 portIndex, const ViewportPtr &portP)
void replacePortBy (const ViewportPtr &portP, const ViewportPtr &newPortP)
void subPort (const ViewportPtr &portP)
void subPort (UInt32 portIndex)
void clearPorts (void)
Size handling


bool isResizePending (void)
virtual void resize (int width, int height)
virtual void resizeGL (void)
void setSize (UInt16 width, UInt16 height)
Drawing


virtual void draw (DrawAction *action=NULL)
virtual void drawAllViewports (DrawAction *action=NULL)
Field Get


SFUInt16getSFWidth (void)
 Get the Window::_sfWidth field.
SFUInt16getSFHeight (void)
 Get the Window::_sfHeight field.
MFViewportPtrgetMFPort (void)
 Get the Window::_mfPort field.
SFBoolgetSFResizePending (void)
 Get the Window::_sfResizePending field.
UInt16getWidth (void)
 Get the value of the Window::_sfWidth field.
const UInt16getWidth (void) const
 Get the value of the Window::_sfWidth field.
UInt16getHeight (void)
 Get the value of the Window::_sfHeight field.
const UInt16getHeight (void) const
 Get the value of the Window::_sfHeight field.
bool & getResizePending (void)
 Get the value of the Window::_sfResizePending field.
const bool & getResizePending (void) const
 Get the value of the Window::_sfResizePending field.
ViewportPtrgetPort (const UInt32 index)
 Get the value of the index element the Window::_mfPort field.
MFViewportPtrgetPort (void)
 Get the Window::_mfPort field.
const MFViewportPtrgetPort (void) const
 Get the Window::_mfPort field.
Field Set


void setWidth (const UInt16 &value)
 Set the value of the Window::_sfWidth field.
void setHeight (const UInt16 &value)
 Set the value of the Window::_sfHeight field.
void setResizePending (const bool &value)
 Set the value of the Window::_sfResizePending field.
Handle Attachments


void addAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
void subAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
AttachmentPtr findAttachment (UInt32 groupId, UInt16 binding=0)
AttachmentPtr findAttachment (const FieldContainerType &type, UInt16 binding=0)


SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information


UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const


FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)

Static Public Member Functions

Class Get


static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction


static SortFirstWindowPtr create (void)
 create a new instance of the class
static SortFirstWindowPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype
Class Get


static const char * getClassname (void)
Extension registration


static UInt32 registerExtension (const Char8 *s)
static void ignoreExtensions (const Char8 *s)
static UInt32 registerFunction (const Char8 *s, Int32 ext=-1, UInt32 version=0xffff)
static void registerConstant (GLenum val)
GL object registration


static UInt32 registerGLObject (GLObjectFunctor functor, UInt32 num=1)
Get Class Type Information


static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector CompressionFieldMask
static const osg::BitVector SubtileSizeFieldMask
static const osg::BitVector ComposeFieldMask
static const osg::BitVector RegionFieldMask
static const osg::BitVector UseFaceDistributionFieldMask
static const osg::BitVector MTInfluenceMask
static const osg::BitVector ServersFieldMask
static const osg::BitVector ConnectionTypeFieldMask
static const osg::BitVector ConnectionInterfaceFieldMask
static const osg::BitVector ConnectionDestinationFieldMask
static const osg::BitVector ConnectionParamsFieldMask
static const osg::BitVector ServicePortFieldMask
static const osg::BitVector ServiceAddressFieldMask
static const osg::BitVector ServiceInterfaceFieldMask
static const osg::BitVector ClientWindowFieldMask
static const osg::BitVector InterleaveFieldMask
static const osg::BitVector FrameCountFieldMask
static const osg::BitVector ComposerFieldMask
static const osg::BitVector AutostartFieldMask
static const osg::BitVector CalibrationFieldMask
static const osg::BitVector FilterFieldMask
static const osg::BitVector DirtyFieldMask
static const Real32 unknownConstant = -1e100
static const osg::BitVector WidthFieldMask
static const osg::BitVector HeightFieldMask
static const osg::BitVector PortFieldMask
static const osg::BitVector ResizePendingFieldMask
static const osg::BitVector GlObjectEventCounterFieldMask
static const osg::BitVector GlObjectLastRefreshFieldMask
static const osg::BitVector GlObjectLastReinitializeFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper


static const bool isNodeCore = false

Protected Types

Map for GL cvonstant handling


typedef std::map< GLenum, Vec2fConstHash

Protected Member Functions

client window funcitons


virtual void clientInit (void)
virtual void clientPreSync (void)
virtual void clientRender (RenderActionBase *action)
virtual void clientSwap (void)
server window funcitons


virtual void serverInit (WindowPtr window, UInt32 id)
virtual void serverRender (WindowPtr window, UInt32 id, RenderActionBase *action)
virtual void serverSwap (WindowPtr window, UInt32 id)
Constructors


 SortFirstWindow (void)
 Constructor.
 SortFirstWindow (const SortFirstWindow &source)
 Copy Constructor.
Destructors


virtual ~SortFirstWindow (void)
 Destructor.
Sync


void executeSyncImpl (SortFirstWindowBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync


void executeSyncImpl (ClusterWindowBase *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (WindowBase *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
Field Get


SFBoolgetSFDirty (void)
 Get the ClusterWindow::_sfDirty field.
bool & getDirty (void)
 Get the value of the ClusterWindow::_sfDirty field.
const bool & getDirty (void) const
 Get the value of the ClusterWindow::_sfDirty field.
Field Set


void setDirty (const bool &value)
 Set the value of the ClusterWindow::_sfDirty field.
GL setup handling


virtual void setupGL (void)
MT Construction


void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
Field Get


SFUInt32getSFGlObjectEventCounter (void)
 Get the Window::_sfGlObjectEventCounter field.
MFUInt32getMFGlObjectLastRefresh (void)
 Get the Window::_mfGlObjectLastRefresh field.
MFUInt32getMFGlObjectLastReinitialize (void)
 Get the Window::_mfGlObjectLastReinitialize field.
UInt32getGlObjectEventCounter (void)
 Get the value of the Window::_sfGlObjectEventCounter field.
const UInt32getGlObjectEventCounter (void) const
 Get the value of the Window::_sfGlObjectEventCounter field.
UInt32getGlObjectLastRefresh (UInt32 index)
 Get the value of the index element the Window::_mfGlObjectLastRefresh field.
MFUInt32getGlObjectLastRefresh (void)
 Get the Window::_mfGlObjectLastRefresh field.
const MFUInt32getGlObjectLastRefresh (void) const
 Get the Window::_mfGlObjectLastRefresh field.
UInt32getGlObjectLastReinitialize (UInt32 index)
 Get the value of the index element the Window::_mfGlObjectLastReinitialize field.
MFUInt32getGlObjectLastReinitialize (void)
 Get the Window::_mfGlObjectLastReinitialize field.
const MFUInt32getGlObjectLastReinitialize (void) const
 Get the Window::_mfGlObjectLastReinitialize field.
Field Set


void setGlObjectEventCounter (const UInt32 &value)
 Set the value of the Window::_sfGlObjectEventCounter field.
Pointer


AttachmentContainerPtr getPtr (void)
MT Edit


template<class FieldTypeT>
void beginEditX (const BitVector &whichField, FieldTypeT &field)
template<class FieldTypeT>
void endEditX (const BitVector &whichField, FieldTypeT &field)

Static Protected Member Functions

Create Fieldcontainer


template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)

Protected Attributes

Fields


SFString _sfCompression
SFUInt32 _sfSubtileSize
SFBool _sfCompose
MFUInt32 _mfRegion
SFBool _sfUseFaceDistribution
unsynced thread variables


bool _firstFrame
StatCollector_statistics
Fields


MFString _mfServers
SFString _sfConnectionType
SFString _sfConnectionInterface
SFString _sfConnectionDestination
SFString _sfConnectionParams
SFUInt32 _sfServicePort
SFString _sfServiceAddress
SFString _sfServiceInterface
SFWindowPtr _sfClientWindow
SFUInt32 _sfInterleave
SFUInt32 _sfFrameCount
SFImageComposerPtr _sfComposer
MFString _mfAutostart
MFDisplayCalibrationPtr _mfCalibration
MFDisplayFilterForegroundPtr _mfFilter
SFBool _sfDirty
Fields


SFUInt16 _sfWidth
SFUInt16 _sfHeight
MFViewportPtr _mfPort
SFBool _sfResizePending
SFUInt32 _sfGlObjectEventCounter
MFUInt32 _mfGlObjectLastRefresh
MFUInt32 _mfGlObjectLastReinitialize
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Private Types

typedef SortFirstWindowBase Inherited

Private Member Functions

void operator= (const SortFirstWindow &source)

Static Private Member Functions

static void initMethod (void)
 initialize the static features of the class, e.g. action callbacks

Private Attributes

TileLoadBalancer_tileLoadBalancer
RenderNode_renderNode

Static Private Attributes

static ClusterViewBuffer _bufferHandler

Friends

class FieldContainer
class SortFirstWindowBase
GL object handling helper class


class GLObject


Detailed Description

Cluster rendering configuration for sort first image composition

Definition at line 57 of file OSGSortFirstWindow.h.


Member Typedef Documentation

Reimplemented from osg::SortFirstWindowBase.

Definition at line 61 of file OSGSortFirstWindow.h.

Reimplemented from osg::ClusterWindowBase.

Definition at line 94 of file OSGSortFirstWindowBase.h.

typedef bool(* osg::ClusterWindow::connectioncbfp)(std::string server, Real32 progress) [inherited]

Definition at line 96 of file OSGWindow.h.

Definition at line 99 of file OSGWindow.h.

typedef void(* osg::Window::GLExtensionFunction)(void) [inherited]

typedef std::map< GLenum, Vec2f > osg::Window::ConstHash [protected, inherited]

Definition at line 331 of file OSGWindow.h.


Member Enumeration Documentation

anonymous enum [inherited]

Enumerator:
CompressionFieldId 
SubtileSizeFieldId 
ComposeFieldId 
RegionFieldId 
UseFaceDistributionFieldId 
NextFieldId 

Definition at line 96 of file OSGSortFirstWindowBase.h.

00097     {
00098         CompressionFieldId         = Inherited::NextFieldId,
00099         SubtileSizeFieldId         = CompressionFieldId         + 1,
00100         ComposeFieldId             = SubtileSizeFieldId         + 1,
00101         RegionFieldId              = ComposeFieldId             + 1,
00102         UseFaceDistributionFieldId = RegionFieldId              + 1,
00103         NextFieldId                = UseFaceDistributionFieldId + 1
00104     };

anonymous enum [inherited]

Enumerator:
ServersFieldId 
ConnectionTypeFieldId 
ConnectionInterfaceFieldId 
ConnectionDestinationFieldId 
ConnectionParamsFieldId 
ServicePortFieldId 
ServiceAddressFieldId 
ServiceInterfaceFieldId 
ClientWindowFieldId 
InterleaveFieldId 
FrameCountFieldId 
ComposerFieldId 
AutostartFieldId 
CalibrationFieldId 
FilterFieldId 
DirtyFieldId 
NextFieldId 

Definition at line 107 of file OSGClusterWindowBase.h.

00108     {
00109         ServersFieldId               = Inherited::NextFieldId,
00110         ConnectionTypeFieldId        = ServersFieldId               + 1,
00111         ConnectionInterfaceFieldId   = ConnectionTypeFieldId        + 1,
00112         ConnectionDestinationFieldId = ConnectionInterfaceFieldId   + 1,
00113         ConnectionParamsFieldId      = ConnectionDestinationFieldId + 1,
00114         ServicePortFieldId           = ConnectionParamsFieldId      + 1,
00115         ServiceAddressFieldId        = ServicePortFieldId           + 1,
00116         ServiceInterfaceFieldId      = ServiceAddressFieldId        + 1,
00117         ClientWindowFieldId          = ServiceInterfaceFieldId      + 1,
00118         InterleaveFieldId            = ClientWindowFieldId          + 1,
00119         FrameCountFieldId            = InterleaveFieldId            + 1,
00120         ComposerFieldId              = FrameCountFieldId            + 1,
00121         AutostartFieldId             = ComposerFieldId              + 1,
00122         CalibrationFieldId           = AutostartFieldId             + 1,
00123         FilterFieldId                = CalibrationFieldId           + 1,
00124         DirtyFieldId                 = FilterFieldId                + 1,
00125         NextFieldId                  = DirtyFieldId                 + 1
00126     };

enum osg::Window::GLObjectStatusE [inherited]

Enumerator:
notused 
initialize 
reinitialize 
initialized 
needrefresh 
destroy 
finaldestroy 

Definition at line 78 of file OSGWindow.h.

00079     {
00080         notused      = 1, 
00081         initialize, 
00082         reinitialize, 
00083         initialized,
00084         needrefresh, 
00085         destroy, 
00086         finaldestroy 
00087     };

anonymous enum [inherited]

Enumerator:
invalidExtensionID 
invalidFunctionID 

Definition at line 89 of file OSGWindow.h.

00089 { invalidExtensionID = 0x7fffffff, invalidFunctionID = 0x7fffffff };

anonymous enum [inherited]

Enumerator:
statusShift 
statusMask 

Definition at line 92 of file OSGWindow.h.

00092 { statusShift = 3, statusMask = 7 }; 

anonymous enum [inherited]

Enumerator:
WidthFieldId 
HeightFieldId 
PortFieldId 
ResizePendingFieldId 
GlObjectEventCounterFieldId 
GlObjectLastRefreshFieldId 
GlObjectLastReinitializeFieldId 
NextFieldId 

Definition at line 98 of file OSGWindowBase.h.

00099     {
00100         WidthFieldId                    = Inherited::NextFieldId,
00101         HeightFieldId                   = WidthFieldId                    + 1,
00102         PortFieldId                     = HeightFieldId                   + 1,
00103         ResizePendingFieldId            = PortFieldId                     + 1,
00104         GlObjectEventCounterFieldId     = ResizePendingFieldId            + 1,
00105         GlObjectLastRefreshFieldId      = GlObjectEventCounterFieldId     + 1,
00106         GlObjectLastReinitializeFieldId = GlObjectLastRefreshFieldId      + 1,
00107         NextFieldId                     = GlObjectLastReinitializeFieldId + 1
00108     };

anonymous enum [inherited]

Enumerator:
AttachmentsFieldId 
NextFieldId 

Definition at line 78 of file OSGAttachmentContainerImpl.h.

anonymous enum [inherited]

Enumerator:
NextFieldId 

Definition at line 73 of file OSGFieldContainerImpl.h.

00073 { NextFieldId = 1 };


Constructor & Destructor Documentation

SortFirstWindow::SortFirstWindow ( void   )  [protected]

Definition at line 74 of file OSGSortFirstWindow.cpp.

00074                                      :
00075     Inherited(),
00076     _tileLoadBalancer(NULL),
00077     _renderNode(NULL)
00078 {
00079 }

SortFirstWindow::SortFirstWindow ( const SortFirstWindow source  )  [protected]

Definition at line 83 of file OSGSortFirstWindow.cpp.

00083                                                               :
00084     Inherited(source),
00085     _tileLoadBalancer(NULL),
00086     _renderNode(NULL)
00087 {
00088 }

SortFirstWindow::~SortFirstWindow ( void   )  [protected, virtual]

Definition at line 92 of file OSGSortFirstWindow.cpp.

References _renderNode, and _tileLoadBalancer.

00093 {
00094     if(_tileLoadBalancer)
00095         delete _tileLoadBalancer;
00096     if(_renderNode)
00097         delete _renderNode;
00098 }


Member Function Documentation

void SortFirstWindow::changed ( BitVector  whichField,
UInt32  origin 
) [virtual]

Reimplemented from osg::ClusterWindow.

Definition at line 110 of file OSGSortFirstWindow.cpp.

References osg::ClusterWindow::changed().

00111 {
00112     Inherited::changed(whichField, origin);
00113 }

void SortFirstWindow::dump ( UInt32  uiIndent = 0,
const BitVector  bvFlags = 0 
) const [virtual]

Reimplemented from osg::ClusterWindow.

Definition at line 117 of file OSGSortFirstWindow.cpp.

References SLOG.

00119 {
00120     SLOG << "Dump SortFirstWindow NI" << std::endl;
00121 }

void SortFirstWindow::clientInit ( void   )  [protected, virtual]

read server cababilities

Reimplemented from osg::ClusterWindow.

Definition at line 314 of file OSGSortFirstWindow.cpp.

References _tileLoadBalancer, osg::TileLoadBalancer::addRenderNode(), osg::ClusterWindow::clientInit(), osg::RenderNode::copyFromBin(), osg::RenderNode::dump(), osg::BinaryDataHandler::flush(), osg::GroupConnection::getChannelCount(), osg::ClusterNetwork::getMainGroupConnection(), osg::ClusterWindow::getNetwork(), osg::SortFirstWindowBase::getUseFaceDistribution(), osg::BinaryDataHandler::getValue(), osg::BinaryDataHandler::putValue(), osg::GroupConnection::resetSelection(), osg::Connection::selectChannel(), and osg::GroupConnection::subSelection().

00315 {
00316 #if USE_VPORT_SLICES
00317 
00318 #else
00319     UInt32               id;
00320     RenderNode           renderNode;
00321     GroupConnection     *connection = getNetwork()->getMainGroupConnection();
00322     Connection::Channel  channel;
00323 
00324     _tileLoadBalancer=new TileLoadBalancer(getUseFaceDistribution());
00325     // read all node infos
00326     for(UInt32 i=0;i<connection->getChannelCount();++i)
00327     {
00328         printf("%d\n",i);
00329         channel = connection->selectChannel();
00330         connection->subSelection(channel);
00331         connection->getValue(id);
00332         renderNode.copyFromBin(*connection);
00333         renderNode.dump();
00334         _tileLoadBalancer->addRenderNode(renderNode,id);    
00335     }
00336     connection->resetSelection();
00337     printf("end\n");
00338     // sync servers
00339     connection->putValue(id);
00340     connection->flush();
00341 #endif
00342 
00343     Inherited::clientInit();
00344 }

void SortFirstWindow::clientPreSync ( void   )  [protected, virtual]

client frame init

Reimplemented from osg::ClusterWindow.

Definition at line 349 of file OSGSortFirstWindow.cpp.

References _tileLoadBalancer, osg::TileLoadBalancer::balance(), osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::ClusterWindow::clientPreSync(), osg::endEditCP(), osg::ClusterWindowBase::getClientWindow(), osg::SortFirstWindowBase::getCompose(), osg::WindowBase::getHeight(), osg::WindowBase::getPort(), osg::SortFirstWindowBase::getRegion(), osg::ClusterWindowBase::getServers(), osg::WindowBase::getWidth(), osg::WindowBase::HeightFieldMask, osg::NullFC, osg::MField< FieldTypeT, fieldNameSpace >::push_back(), osg::SortFirstWindowBase::RegionFieldMask, osg::Window::setSize(), osg::MField< FieldTypeT, fieldNameSpace >::size(), osg::TileLoadBalancer::update(), and osg::WindowBase::WidthFieldMask.

00350 {
00351     SortFirstWindowPtr ptr=SortFirstWindowPtr(this);
00352     if(getCompose())
00353     {
00354         // get window size from client window
00355         if(getClientWindow() != NullFC)
00356         {
00357             if(getWidth()  != getClientWindow()->getWidth() ||
00358                getHeight() != getClientWindow()->getHeight())
00359             {
00360                 beginEditCP(ptr,
00361                             Window::WidthFieldMask|
00362                             Window::HeightFieldMask);
00363                 {
00364                     setSize(getClientWindow()->getWidth(),
00365                             getClientWindow()->getHeight());
00366                 }
00367                 endEditCP(ptr,
00368                           Window::WidthFieldMask|
00369                           Window::HeightFieldMask);
00370             }
00371         }
00372     }
00373 #if 0
00374     else
00375     {
00376         beginEditCP(ptr,
00377                     Window::WidthFieldMask|
00378                     Window::HeightFieldMask);
00379         {
00380             setSize(1280,
00381                     1024);
00382         }
00383         endEditCP(ptr,
00384                   Window::WidthFieldMask|
00385                   Window::HeightFieldMask);
00386     }
00387 #endif
00388     UInt32 i;
00389     UInt32 cv;
00390     TileLoadBalancer::ResultT region;
00391     
00392     beginEditCP(ptr,SortFirstWindow::RegionFieldMask);
00393     getRegion().clear();
00394 #if USE_VPORT_SLICES
00395     for(cv=0;cv<getPort().size();cv++)
00396     {
00397         int s=getServers().size();
00398         for(i=0;i<s;i++)
00399         {
00400             getRegion().push_back(i/float(s)*getWidth());
00401             getRegion().push_back(0);
00402             getRegion().push_back((i+1)/float(s)*getWidth());
00403             getRegion().push_back(1*getHeight());
00404         }
00405     }
00406 #else
00407     for(cv=0;cv<getPort().size();cv++)
00408     {
00409         _tileLoadBalancer->update( getPort()[cv]->getRoot() );
00410         _tileLoadBalancer->balance(getPort()[cv],
00411                               false,
00412                               region);
00413         for(i=0;i<getServers().size();i++)
00414         {
00415             getRegion().push_back(region[i].x1);
00416             getRegion().push_back(region[i].y1);
00417             getRegion().push_back(region[i].x2);
00418             getRegion().push_back(region[i].y2);
00419         }
00420     }
00421 #endif
00422 
00423     endEditCP(ptr,SortFirstWindow::RegionFieldMask);
00424 
00425     Inherited::clientPreSync();
00426 }

void SortFirstWindow::clientRender ( RenderActionBase action  )  [protected, virtual]

client rendering

one tile is rendered by the client

Reimplemented from osg::ClusterWindow.

Definition at line 433 of file OSGSortFirstWindow.cpp.

00434 {
00435 //    Inherited::clientRender(action);
00436 }

void SortFirstWindow::clientSwap ( void   )  [protected, virtual]

show data

Reimplemented from osg::ClusterWindow.

Definition at line 441 of file OSGSortFirstWindow.cpp.

References _bufferHandler, osg::ClusterWindow::clientSwap(), osg::ClusterWindowBase::getClientWindow(), osg::SortFirstWindowBase::getCompose(), osg::ClusterNetwork::getMainGroupConnection(), osg::ClusterWindow::getNetwork(), osg::WindowBase::getPort(), osg::NullFC, osg::ClusterViewBuffer::recv(), osg::Connection::signal(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and osg::Connection::wait().

00442 {
00443     UInt32 cv;
00444     GroupConnection *connection=getNetwork()->getMainGroupConnection();
00445     if(getCompose())
00446     {
00447         if(getClientWindow()!=NullFC)
00448         {
00449             // receive all viewports
00450             for(cv=0;cv<getPort().size();++cv)
00451             {
00452                 ViewportPtr vp=getPort()[cv];
00453 
00454                 // activate the appropriate viewport to receive image
00455                 vp->activate();
00456 
00457                 // receive image
00458                 _bufferHandler.recv(*connection);
00459 
00460                 // deactivate the viewport
00461                 vp->deactivate();
00462             }
00463             Inherited::clientSwap();
00464         }
00465     }
00466     else
00467     {
00468         connection->wait();
00469         connection->signal();
00470     }
00471 }

void SortFirstWindow::serverInit ( WindowPtr  serverWindow,
UInt32  id 
) [protected, virtual]

transfer server cababilities to the client

Reimplemented from osg::ClusterWindow.

Definition at line 128 of file OSGSortFirstWindow.cpp.

References osg::RenderNode::copyToBin(), osg::RenderNode::determinePerformance(), osg::RenderNode::dump(), osg::BinaryDataHandler::flush(), osg::ClusterNetwork::getMainConnection(), osg::ClusterWindow::getNetwork(), osg::BinaryDataHandler::getValue(), osg::BinaryDataHandler::putValue(), and osg::Connection::selectChannel().

00130 {
00131 #if USE_VPORT_SLICES
00132 
00133 #else
00134     UInt32 sync;
00135     RenderNode renderNode;
00136     Connection *connection=getNetwork()->getMainConnection();
00137 
00138     // create cluster node information
00139     // get performance
00140     renderNode.determinePerformance(serverWindow);
00141     renderNode.dump();
00142     // transfer to client for load balancing
00143     connection->putValue(id);
00144     renderNode.copyToBin(*connection);
00145     connection->flush();
00146     connection->selectChannel();
00147     connection->getValue(sync);
00148 #endif
00149 }

void SortFirstWindow::serverRender ( WindowPtr  serverWindow,
UInt32  id,
RenderActionBase action 
) [protected, virtual]

update server window

todo: enamble frustum culling if error is removed

Reimplemented from osg::ClusterWindow.

Definition at line 155 of file OSGSortFirstWindow.cpp.

References _bufferHandler, osg::beginEditCP(), osg::TileCameraDecoratorBase::create(), osg::AttachmentContainerPtr::dcast(), osg::endEditCP(), osg::SortFirstWindowBase::getCompose(), osg::SortFirstWindowBase::getCompression(), osg::AttachmentContainerPtr::getCPtr(), osg::ClusterWindow::getNetwork(), osg::WindowBase::getPort(), osg::SortFirstWindowBase::getRegion(), osg::ClusterWindowBase::getServers(), osg::SortFirstWindowBase::getSubtileSize(), osg::ClusterViewBuffer::RGB, osg::ClusterViewBuffer::send(), osg::ClusterWindow::serverRender(), osg::ClusterViewBuffer::setImgTransType(), osg::ClusterViewBuffer::setSubtileSize(), osg::DrawActionBase::setWindow(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and osg::subRefCP().

00158 {
00159     TileCameraDecoratorPtr deco;
00160     ViewportPtr serverPort;
00161     ViewportPtr clientPort;
00162     UInt32 sv,cv,regionStart;
00163     UInt32 vpWidth;
00164     UInt32 vpHeight;
00165 
00166     // duplicate viewports
00167     for(cv=0,sv=0;cv<getPort().size();cv++)
00168     {
00169         clientPort = getPort()[cv];
00170         if(serverWindow->getPort().size() <= sv)
00171         {
00172             // create new port
00173             //serverPort = StereoBufferViewport::create();
00174             serverPort = ViewportPtr::dcast(clientPort->shallowCopy());
00175             deco=TileCameraDecorator::create();
00176             beginEditCP(serverWindow);
00177             serverWindow->addPort(serverPort);
00178             serverPort->setCamera(deco);
00179             endEditCP(serverWindow);
00180         }
00181         else
00182         {
00183             serverPort = serverWindow->getPort()[sv];
00184             deco=TileCameraDecoratorPtr::dcast(serverPort->getCamera());
00185             if(serverWindow->getPort()[sv]->getType() != 
00186                clientPort->getType())
00187             {
00188                 // there is a viewport with the wrong type
00189                 subRefCP(serverWindow->getPort()[sv]);
00190                 serverPort = ViewportPtr::dcast(clientPort->shallowCopy());
00191                 beginEditCP(serverWindow);
00192                 serverWindow->getPort()[sv] = serverPort;
00193                 serverPort->setCamera(deco);
00194                 endEditCP(serverWindow);
00195             }
00196             else
00197             {
00198                 deco=TileCameraDecoratorPtr::dcast(serverPort->getCamera());
00199             }
00200             //serverPort = serverWindow->getPort()[sv];
00201             //deco=TileCameraDecoratorPtr::dcast(serverPort->getCamera());
00202         }
00203 
00204         // duplicate values
00205         beginEditCP(serverPort);
00206         regionStart=cv * getServers().size() * 4 + id * 4;
00207         serverPort->setSize( 
00208             Real32(getRegion()[regionStart+0] + clientPort->getPixelLeft()),
00209             Real32(getRegion()[regionStart+1] + clientPort->getPixelBottom()),
00210             Real32(getRegion()[regionStart+2] + clientPort->getPixelLeft()),
00211             Real32(getRegion()[regionStart+3] + clientPort->getPixelBottom()));
00212 
00213         serverPort->setRoot      ( clientPort->getRoot()       );
00214         serverPort->setBackground( clientPort->getBackground() );
00215         serverPort->getMFForegrounds()->setValues( clientPort->getForegrounds() );
00216         serverPort->setTravMask  ( clientPort->getTravMask()   );
00217         endEditCP(serverPort);
00218 
00219         // calculate tile parameters
00220         vpWidth =clientPort->getPixelWidth();
00221         vpHeight=clientPort->getPixelHeight();
00222         beginEditCP(deco);
00223         deco->setFullWidth ( vpWidth );
00224         deco->setFullHeight( vpHeight );
00225         deco->setSize( getRegion()[ regionStart+0 ]/(float)vpWidth,
00226                        getRegion()[ regionStart+1 ]/(float)vpHeight,
00227                        getRegion()[ regionStart+2 ]/(float)vpWidth,
00228                        getRegion()[ regionStart+3 ]/(float)vpHeight );
00229         deco->setDecoratee( clientPort->getCamera() );
00230         endEditCP(deco);
00231         sv++;
00232     }
00233     // remove unused ports
00234     while(serverWindow->getPort().size()>sv)
00235     {
00236         serverWindow->subPort(sv);
00237     }
00238 
00239     Inherited::serverRender(serverWindow,id,action);
00240 
00241     // compression type
00242     if(getCompose())
00243     {
00244         if(getCompression().empty())
00245         {
00246             _bufferHandler.setImgTransType(NULL);
00247         }
00248         else
00249         {
00250             _bufferHandler.setImgTransType(getCompression().c_str());
00251         }
00252         if(getSubtileSize())
00253         {
00254             _bufferHandler.setSubtileSize(getSubtileSize());
00255         }
00256     }
00257 
00258 #if 1
00259     glDisable(GL_SCISSOR_TEST);
00260     glClearColor(0,0,0,0);
00261     glClear(GL_COLOR_BUFFER_BIT);
00262 #endif
00263 
00264     // render the viewports
00265     serverWindow->activate();
00266     serverWindow->frameInit();
00267     action->setWindow( serverWindow.getCPtr() );
00268     for(sv=0;sv<serverWindow->getPort().size();++sv)
00269     {
00270         ViewportPtr vp=serverWindow->getPort()[sv];
00271         vp->render( action );
00272 
00273         // send resulting image
00274         if(getCompose())
00275         {
00276             // activate the appropriate viewport to retrieve image
00277             vp->activate();
00278 
00279             // send image
00280             _bufferHandler.send(
00281                 *getNetwork()->getMainPointConnection(),
00282                 ClusterViewBuffer::RGB,
00283                 vp->getPixelLeft(),
00284                 vp->getPixelBottom(),
00285                 vp->getPixelRight(),
00286                 vp->getPixelTop(),
00287                 0,0);
00288 
00289             // deactivate the viewport
00290             vp->deactivate();
00291         }
00292     }
00293 }

void SortFirstWindow::serverSwap ( WindowPtr  window,
UInt32  id 
) [protected, virtual]

send image to client

Reimplemented from osg::ClusterWindow.

Definition at line 297 of file OSGSortFirstWindow.cpp.

References osg::SortFirstWindowBase::getCompose(), osg::ClusterNetwork::getMainConnection(), osg::ClusterWindow::getNetwork(), osg::Connection::signal(), and osg::Connection::wait().

00299 {
00300     if(!getCompose())
00301     {
00302         Connection *connection=getNetwork()->getMainConnection();
00303         connection->signal();
00304         connection->wait();
00305     }
00306     window->swap();
00307 }

void SortFirstWindow::initMethod ( void   )  [static, private]

Reimplemented from osg::ClusterWindow.

Definition at line 104 of file OSGSortFirstWindow.cpp.

00105 {
00106 }

void osg::SortFirstWindow::operator= ( const SortFirstWindow source  )  [private]

osg::FieldContainerType & osg::SortFirstWindowBase::getClassType ( void   )  [inline, static, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 58 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_type.

Referenced by osg::SortFirstWindowBase::create().

00059 {
00060     return _type; 
00061 } 

osg::UInt32 osg::SortFirstWindowBase::getClassTypeId ( void   )  [inline, static, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 65 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_type, and osg::TypeBase::getId().

00066 {
00067     return _type.getId(); 
00068 } 

FieldContainerType & SortFirstWindowBase::getType ( void   )  [virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 150 of file OSGSortFirstWindowBase.cpp.

References osg::SortFirstWindowBase::_type.

00151 {
00152     return _type; 
00153 } 

const FieldContainerType & SortFirstWindowBase::getType ( void   )  const [virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 155 of file OSGSortFirstWindowBase.cpp.

References osg::SortFirstWindowBase::_type.

00156 {
00157     return _type;
00158 } 

UInt32 SortFirstWindowBase::getContainerSize ( void   )  const [virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 170 of file OSGSortFirstWindowBase.cpp.

00171 { 
00172     return sizeof(SortFirstWindow); 
00173 }

SFString * osg::SortFirstWindowBase::getSFCompression ( void   )  [inline, inherited]

Definition at line 101 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfCompression.

00102 {
00103     return &_sfCompression;
00104 }

SFUInt32 * osg::SortFirstWindowBase::getSFSubtileSize ( void   )  [inline, inherited]

Definition at line 108 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfSubtileSize.

00109 {
00110     return &_sfSubtileSize;
00111 }

SFBool * osg::SortFirstWindowBase::getSFCompose ( void   )  [inline, inherited]

Definition at line 115 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfCompose.

00116 {
00117     return &_sfCompose;
00118 }

MFUInt32 * osg::SortFirstWindowBase::getMFRegion ( void   )  [inline, inherited]

Definition at line 122 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_mfRegion.

00123 {
00124     return &_mfRegion;
00125 }

SFBool * osg::SortFirstWindowBase::getSFUseFaceDistribution ( void   )  [inline, inherited]

Definition at line 129 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfUseFaceDistribution.

00130 {
00131     return &_sfUseFaceDistribution;
00132 }

std::string & osg::SortFirstWindowBase::getCompression ( void   )  [inline, inherited]

Definition at line 137 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfCompression, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by serverRender().

00138 {
00139     return _sfCompression.getValue();
00140 }

const std::string & osg::SortFirstWindowBase::getCompression ( void   )  const [inline, inherited]

Definition at line 144 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfCompression, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00145 {
00146     return _sfCompression.getValue();
00147 }

UInt32 & osg::SortFirstWindowBase::getSubtileSize ( void   )  [inline, inherited]

Definition at line 158 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfSubtileSize, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by serverRender().

00159 {
00160     return _sfSubtileSize.getValue();
00161 }

const UInt32 & osg::SortFirstWindowBase::getSubtileSize ( void   )  const [inline, inherited]

Definition at line 165 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfSubtileSize, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00166 {
00167     return _sfSubtileSize.getValue();
00168 }

bool & osg::SortFirstWindowBase::getCompose ( void   )  [inline, inherited]

const bool & osg::SortFirstWindowBase::getCompose ( void   )  const [inline, inherited]

Definition at line 186 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_sfCompose, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00187 {
00188     return _sfCompose.getValue();
00189 }

bool & osg::SortFirstWindowBase::getUseFaceDistribution ( void   )  [inline, inherited]

const bool & osg::SortFirstWindowBase::getUseFaceDistribution ( void   )  const [inline, inherited]

UInt32 & osg::SortFirstWindowBase::getRegion ( const UInt32  index  )  [inline, inherited]

Definition at line 222 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_mfRegion.

00223 {
00224     return _mfRegion[index];
00225 }

MFUInt32 & osg::SortFirstWindowBase::getRegion ( void   )  [inline, inherited]

Definition at line 229 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_mfRegion.

Referenced by clientPreSync(), and serverRender().

00230 {
00231     return _mfRegion;
00232 }

const MFUInt32 & osg::SortFirstWindowBase::getRegion ( void   )  const [inline, inherited]

Definition at line 236 of file OSGSortFirstWindowBase.inl.

References osg::SortFirstWindowBase::_mfRegion.

00237 {
00238     return _mfRegion;
00239 }

void osg::SortFirstWindowBase::setCompression ( const std::string &  value  )  [inline, inherited]

void osg::SortFirstWindowBase::setSubtileSize ( const UInt32 value  )  [inline, inherited]

void osg::SortFirstWindowBase::setCompose ( const bool &  value  )  [inline, inherited]

void osg::SortFirstWindowBase::setUseFaceDistribution ( const bool &  value  )  [inline, inherited]

UInt32 SortFirstWindowBase::getBinSize ( const BitVector whichField  )  [virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 241 of file OSGSortFirstWindowBase.cpp.

References osg::SortFirstWindowBase::_mfRegion, osg::SortFirstWindowBase::_sfCompose, osg::SortFirstWindowBase::_sfCompression, osg::SortFirstWindowBase::_sfSubtileSize, osg::SortFirstWindowBase::_sfUseFaceDistribution, osg::SortFirstWindowBase::ComposeFieldMask, osg::SortFirstWindowBase::CompressionFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::ClusterWindowBase::getBinSize(), osg::FieldBits::NoField, osg::SortFirstWindowBase::RegionFieldMask, osg::SortFirstWindowBase::SubtileSizeFieldMask, and osg::SortFirstWindowBase::UseFaceDistributionFieldMask.

00242 {
00243     UInt32 returnValue = Inherited::getBinSize(whichField);
00244 
00245     if(FieldBits::NoField != (CompressionFieldMask & whichField))
00246     {
00247         returnValue += _sfCompression.getBinSize();
00248     }
00249 
00250     if(FieldBits::NoField != (SubtileSizeFieldMask & whichField))
00251     {
00252         returnValue += _sfSubtileSize.getBinSize();
00253     }
00254 
00255     if(FieldBits::NoField != (ComposeFieldMask & whichField))
00256     {
00257         returnValue += _sfCompose.getBinSize();
00258     }
00259 
00260     if(FieldBits::NoField != (RegionFieldMask & whichField))
00261     {
00262         returnValue += _mfRegion.getBinSize();
00263     }
00264 
00265     if(FieldBits::NoField != (UseFaceDistributionFieldMask & whichField))
00266     {
00267         returnValue += _sfUseFaceDistribution.getBinSize();
00268     }
00269 
00270 
00271     return returnValue;
00272 }

void SortFirstWindowBase::copyToBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

void SortFirstWindowBase::copyFromBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

SortFirstWindowPtr osg::SortFirstWindowBase::create ( void   )  [inline, static, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 72 of file OSGSortFirstWindowBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::SortFirstWindowBase::getClassType(), osg::NullFC, and osg::SortFirstWindowBase::shallowCopy().

00073 {
00074     SortFirstWindowPtr fc; 
00075 
00076     if(getClassType().getPrototype() != OSG::NullFC) 
00077     {
00078         fc = SortFirstWindowPtr::dcast(
00079             getClassType().getPrototype()-> shallowCopy()); 
00080     }
00081     
00082     return fc; 
00083 }

SortFirstWindowPtr osg::SortFirstWindowBase::createEmpty ( void   )  [inline, static, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 87 of file OSGSortFirstWindowBase.inl.

References osg::FieldContainer::newPtr().

00088 { 
00089     SortFirstWindowPtr returnValue; 
00090     
00091     newPtr(returnValue); 
00092 
00093     return returnValue; 
00094 }

FieldContainerPtr SortFirstWindowBase::shallowCopy ( void   )  const [virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 161 of file OSGSortFirstWindowBase.cpp.

References osg::FieldContainer::newPtr().

Referenced by osg::SortFirstWindowBase::create().

00162 { 
00163     SortFirstWindowPtr returnValue; 
00164 
00165     newPtr(returnValue, dynamic_cast<const SortFirstWindow *>(this)); 
00166 
00167     return returnValue; 
00168 }

void SortFirstWindowBase::executeSyncImpl ( SortFirstWindowBase pOther,
const BitVector whichField 
) [protected, inherited]

void osg::ClusterWindowBase::executeSyncImpl ( ClusterWindowBase pOther,
const BitVector whichField 
) [protected, inherited]

Definition at line 652 of file OSGClusterWindowBase.cpp.

References osg::ClusterWindowBase::_mfAutostart, osg::ClusterWindowBase::_mfCalibration, osg::ClusterWindowBase::_mfFilter, osg::ClusterWindowBase::_mfServers, osg::ClusterWindowBase::_sfClientWindow, osg::ClusterWindowBase::_sfComposer, osg::ClusterWindowBase::_sfConnectionDestination, osg::ClusterWindowBase::_sfConnectionInterface, osg::ClusterWindowBase::_sfConnectionParams, osg::ClusterWindowBase::_sfConnectionType, osg::ClusterWindowBase::_sfDirty, osg::ClusterWindowBase::_sfFrameCount, osg::ClusterWindowBase::_sfInterleave, osg::ClusterWindowBase::_sfServiceAddress, osg::ClusterWindowBase::_sfServiceInterface, osg::ClusterWindowBase::_sfServicePort, osg::ClusterWindowBase::AutostartFieldMask, osg::ClusterWindowBase::CalibrationFieldMask, osg::ClusterWindowBase::ClientWindowFieldMask, osg::ClusterWindowBase::ComposerFieldMask, osg::ClusterWindowBase::ConnectionDestinationFieldMask, osg::ClusterWindowBase::ConnectionInterfaceFieldMask, osg::ClusterWindowBase::ConnectionParamsFieldMask, osg::ClusterWindowBase::ConnectionTypeFieldMask, osg::ClusterWindowBase::DirtyFieldMask, osg::WindowBase::executeSyncImpl(), osg::ClusterWindowBase::FilterFieldMask, osg::ClusterWindowBase::FrameCountFieldMask, osg::ClusterWindowBase::InterleaveFieldMask, osg::FieldBits::NoField, osg::ClusterWindowBase::ServersFieldMask, osg::ClusterWindowBase::ServiceAddressFieldMask, osg::ClusterWindowBase::ServiceInterfaceFieldMask, osg::ClusterWindowBase::ServicePortFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::syncWith(), and osg::MField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::ClusterWindowBase::executeSync(), osg::SortFirstWindowBase::executeSyncImpl(), and osg::MultiDisplayWindowBase::executeSyncImpl().

00654 {
00655 
00656     Inherited::executeSyncImpl(pOther, whichField);
00657 
00658     if(FieldBits::NoField != (ServersFieldMask & whichField))
00659         _mfServers.syncWith(pOther->_mfServers);
00660 
00661     if(FieldBits::NoField != (ConnectionTypeFieldMask & whichField))
00662         _sfConnectionType.syncWith(pOther->_sfConnectionType);
00663 
00664     if(FieldBits::NoField != (ConnectionInterfaceFieldMask & whichField))
00665         _sfConnectionInterface.syncWith(pOther->_sfConnectionInterface);
00666 
00667     if(FieldBits::NoField != (ConnectionDestinationFieldMask & whichField))
00668         _sfConnectionDestination.syncWith(pOther->_sfConnectionDestination);
00669 
00670     if(FieldBits::NoField != (ConnectionParamsFieldMask & whichField))
00671         _sfConnectionParams.syncWith(pOther->_sfConnectionParams);
00672 
00673     if(FieldBits::NoField != (ServicePortFieldMask & whichField))
00674         _sfServicePort.syncWith(pOther->_sfServicePort);
00675 
00676     if(FieldBits::NoField != (ServiceAddressFieldMask & whichField))
00677         _sfServiceAddress.syncWith(pOther->_sfServiceAddress);
00678 
00679     if(FieldBits::NoField != (ServiceInterfaceFieldMask & whichField))
00680         _sfServiceInterface.syncWith(pOther->_sfServiceInterface);
00681 
00682     if(FieldBits::NoField != (ClientWindowFieldMask & whichField))
00683         _sfClientWindow.syncWith(pOther->_sfClientWindow);
00684 
00685     if(FieldBits::NoField != (InterleaveFieldMask & whichField))
00686         _sfInterleave.syncWith(pOther->_sfInterleave);
00687 
00688     if(FieldBits::NoField != (FrameCountFieldMask & whichField))
00689         _sfFrameCount.syncWith(pOther->_sfFrameCount);
00690 
00691     if(FieldBits::NoField != (ComposerFieldMask & whichField))
00692         _sfComposer.syncWith(pOther->_sfComposer);
00693 
00694     if(FieldBits::NoField != (AutostartFieldMask & whichField))
00695         _mfAutostart.syncWith(pOther->_mfAutostart);
00696 
00697     if(FieldBits::NoField != (CalibrationFieldMask & whichField))
00698         _mfCalibration.syncWith(pOther->_mfCalibration);
00699 
00700     if(FieldBits::NoField != (FilterFieldMask & whichField))
00701         _mfFilter.syncWith(pOther->_mfFilter);
00702 
00703     if(FieldBits::NoField != (DirtyFieldMask & whichField))
00704         _sfDirty.syncWith(pOther->_sfDirty);
00705 
00706 
00707 }

void WindowBase::executeSyncImpl ( WindowBase pOther,
const BitVector whichField 
) [protected, inherited]

Definition at line 390 of file OSGWindowBase.cpp.

References osg::WindowBase::_mfGlObjectLastRefresh, osg::WindowBase::_mfGlObjectLastReinitialize, osg::WindowBase::_mfPort, osg::WindowBase::_sfGlObjectEventCounter, osg::WindowBase::_sfHeight, osg::WindowBase::_sfResizePending, osg::WindowBase::_sfWidth, osg::AttachmentContainer::executeSyncImpl(), osg::WindowBase::GlObjectEventCounterFieldMask, osg::WindowBase::GlObjectLastRefreshFieldMask, osg::WindowBase::GlObjectLastReinitializeFieldMask, osg::WindowBase::HeightFieldMask, osg::FieldBits::NoField, osg::WindowBase::PortFieldMask, osg::WindowBase::ResizePendingFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), osg::SField< FieldTypeT, fieldNameSpace >::syncWith(), and osg::WindowBase::WidthFieldMask.

Referenced by osg::WindowBase::executeSync(), osg::XWindowBase::executeSyncImpl(), osg::WIN32WindowBase::executeSyncImpl(), osg::PassiveWindowBase::executeSyncImpl(), osg::GLUTWindowBase::executeSyncImpl(), and osg::ClusterWindowBase::executeSyncImpl().

00392 {
00393 
00394     Inherited::executeSyncImpl(pOther, whichField);
00395 
00396     if(FieldBits::NoField != (WidthFieldMask & whichField))
00397         _sfWidth.syncWith(pOther->_sfWidth);
00398 
00399     if(FieldBits::NoField != (HeightFieldMask & whichField))
00400         _sfHeight.syncWith(pOther->_sfHeight);
00401 
00402     if(FieldBits::NoField != (PortFieldMask & whichField))
00403         _mfPort.syncWith(pOther->_mfPort);
00404 
00405     if(FieldBits::NoField != (ResizePendingFieldMask & whichField))
00406         _sfResizePending.syncWith(pOther->_sfResizePending);
00407 
00408     if(FieldBits::NoField != (GlObjectEventCounterFieldMask & whichField))
00409         _sfGlObjectEventCounter.syncWith(pOther->_sfGlObjectEventCounter);
00410 
00411     if(FieldBits::NoField != (GlObjectLastRefreshFieldMask & whichField))
00412         _mfGlObjectLastRefresh.syncWith(pOther->_mfGlObjectLastRefresh);
00413 
00414     if(FieldBits::NoField != (GlObjectLastReinitializeFieldMask & whichField))
00415         _mfGlObjectLastReinitialize.syncWith(pOther->_mfGlObjectLastReinitialize);
00416 
00417 
00418 }

void AttachmentContainer::executeSyncImpl ( AttachmentContainer pOther,
const BitVector whichField 
) [protected, inherited]

void osg::FieldContainer::executeSyncImpl ( FieldContainer pOther,
const BitVector whichField 
) [inline, protected, inherited]

void SortFirstWindowBase::executeSync ( FieldContainer other,
const BitVector whichField 
) [protected, virtual, inherited]

Reimplemented from osg::ClusterWindowBase.

Definition at line 177 of file OSGSortFirstWindowBase.cpp.

References osg::SortFirstWindowBase::executeSyncImpl().

00179 {
00180     this->executeSyncImpl((SortFirstWindowBase *) &other, whichField);
00181 }

virtual void(* osg::ClusterWindow::getFunctionByName ( const Char8 s  )  [virtual, inherited]

Reimplemented from osg::Window.

void ClusterWindow::activate ( void   )  [virtual, inherited]

Implements osg::Window.

Definition at line 453 of file OSGClusterWindow.cpp.

Referenced by osg::ClusterWindow::render().

00454 {
00455 }

void ClusterWindow::deactivate ( void   )  [virtual, inherited]

Implements osg::Window.

Definition at line 457 of file OSGClusterWindow.cpp.

00458 {
00459 }

void ClusterWindow::swap ( void   )  [virtual, inherited]

Implements osg::Window.

Definition at line 461 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::clientSwap(), and osg::ClusterWindow::getNetwork().

Referenced by osg::ClusterWindow::render().

00462 {
00463     if(getNetwork()->getMainConnection() && getNetwork()->getAspect())
00464     {
00465         clientSwap();
00466     }
00467 }

void ClusterWindow::init ( void   )  [virtual, inherited]

init cluster window. connect to all servers

Implements osg::Window.

Definition at line 110 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::_connectionFP, osg::ClusterWindowBase::_sfServiceAddress, osg::ClusterWindow::_statistics, osg::SocketAddress::BROADCAST, osg::BinaryMessage::clear(), osg::DgramSocket::close(), osg::Connection::connectPoint(), osg::ConnectionFactory::createGroup(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::MField< FieldTypeT, fieldNameSpace >::find(), osg::BinaryDataHandler::flush(), osg::ClusterWindowBase::getAutostart(), osg::ClusterWindowBase::getConnectionDestination(), osg::ClusterWindowBase::getConnectionInterface(), osg::ClusterWindowBase::getConnectionParams(), osg::ClusterWindowBase::getConnectionType(), osg::SocketAddress::getHost(), osg::ClusterWindow::getNetwork(), osg::ClusterWindowBase::getServers(), osg::ClusterWindowBase::getServiceInterface(), osg::ClusterWindowBase::getServicePort(), osg::BinaryMessage::getString(), osg::BinaryDataHandler::getValue(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::DgramSocket::open(), osg::BinaryMessage::putString(), osg::BinaryDataHandler::putValue(), osg::DgramSocket::recvFrom(), osg::GroupConnection::resetSelection(), osg::Connection::selectChannel(), osg::DgramSocket::sendTo(), osg::ClusterNetwork::setAspect(), osg::ClusterWindowBase::setConnectionType(), osg::GroupConnection::setDestination(), osg::Connection::setInterface(), osg::ClusterNetwork::setMainConnection(), osg::DgramSocket::setMCastInterface(), osg::BinaryDataHandler::setNetworkOrder(), osg::Connection::setParams(), osg::RemoteAspect::setStatistics(), osg::DgramSocket::setTTL(), SFATAL, SINFO, osg::MField< FieldTypeT, fieldNameSpace >::size(), osg::GroupConnection::subSelection(), SWARNING, osg::ConnectionFactory::the(), and osg::Socket::waitReadable().

Referenced by osg::ClusterWindow::initAsync().

00111 {
00112     GroupConnection    *connection;
00113     RemoteAspect       *remoteAspect;
00114     int                 c,i,id;
00115     MFString::iterator  s;
00116     Connection::Channel channel;
00117     bool                directConnect=false;
00118 
00119     if(getNetwork()->getMainConnection())
00120     {
00121         SWARNING << "init called twice" << std::endl;
00122         return;
00123     }
00124     // create connection
00125     if(getConnectionType().empty())
00126     {
00127         setConnectionType("StreamSock");
00128     }
00129 
00130     connection = ConnectionFactory::the().createGroup(getConnectionType());
00131     if(connection == NULL)
00132     {
00133         SFATAL << "Unknown connection type " 
00134                << getConnectionType() 
00135                << std::endl;
00136         return;
00137     }
00138 
00139     connection->setDestination(getConnectionDestination());
00140     connection->setInterface(getConnectionInterface());
00141     connection->setParams(getConnectionParams());
00142 
00143     getNetwork()->setMainConnection(connection);
00144     // create remote aspect
00145     remoteAspect = new RemoteAspect();
00146     getNetwork()->setAspect(remoteAspect);
00147     if(_statistics)
00148         remoteAspect->setStatistics(_statistics);
00149 
00150     // autostart servers
00151     std::string server;
00152     std::string autostart;
00153     std::string env;
00154 
00155     Real32 progress = 0.0f;
00156     Real32 progressStep = 1.0f / Real32(getServers().size());
00157 
00158     if(getAutostart().size())
00159     {
00160         progressStep /= 2;
00161         std::vector<FILE*>           pipes;
00162 
00163         for(id=0 ; id<getServers().size() ; ++id)
00164         {
00165             std::ostringstream command;
00166 
00167             server    = getServers()[id];
00168             int pos=server.find(":");
00169             if(pos>=0)
00170                 server.erase(pos);
00171 
00172             autostart = getAutostart()[id % getAutostart().size()];
00173 
00174             for(c = 0 ; c < autostart.length() ; ++c)
00175             {
00176                 if(autostart[c] == '%' && c+1 < autostart.length())  
00177                     switch(autostart[++c])
00178                     {
00179                         case 's': 
00180                             command << server;
00181                             break;
00182                         case 'n': 
00183                             command << getServers()[id];
00184                             break;
00185                         case 'i':
00186                             command << id;
00187                             break;
00188                         case '{':
00189                             env = "" ;
00190                             while(++c < autostart.length() &&
00191                                   autostart[c] != '}')
00192                                 env += autostart[c];
00193                             if(getenv(env.c_str()))
00194                                 command << getenv(env.c_str());
00195                             break;
00196                         case '%':
00197                             command << '%';
00198                             break;
00199                         default:
00200                             command << '%' << autostart[c];
00201                     }
00202                 else
00203                     command << autostart[c];
00204             } 
00205             SINFO << command.str() << std::endl;
00206 #ifdef WIN32
00207             FILE *pipe = _popen(command.str().c_str(),"r");
00208 #else
00209             FILE *pipe = popen(command.str().c_str(),"r");
00210 #endif
00211             if(!pipe)
00212                 SFATAL << "Error starting: " << command << std::endl;
00213             pipes.push_back(pipe);
00214         }
00215         for(id=0 ; id<getServers().size() ; ++id)
00216         {
00217             if(pipes[id]) 
00218             {
00219                 // update progress
00220                 if(_connectionFP != NULL)
00221                 {
00222                     std::string message;
00223                     message += "Starting:" + getServers()[id]; 
00224                     if(!_connectionFP(message, progress))
00225                     {
00226                         // abort, cleanup remaining pipes
00227                         for( ; id<getServers().size() ; ++id)
00228                         {
00229                             if(pipes[id]) 
00230                             {
00231 #ifdef WIN32
00232                                 _pclose(pipes[id]);
00233 #else
00234                                 pclose(pipes[id]);
00235 #endif
00236                             }
00237                             throw AsyncCancel();
00238                         }
00239                     }
00240                 }
00241                 SINFO << "Waiting for " << getServers()[id] << " to start." << std::endl;
00242                 char result;
00243                 std::string line="";
00244                 while((result=fgetc(pipes[id])) != EOF)
00245                 {
00246                     line += result;
00247                     if(result == '\n')
00248                     {
00249                         SINFO << line;
00250                         line = "";
00251                     }
00252                 }
00253                 if(!line.empty())
00254                     SINFO << line << std::endl;
00255 #ifdef WIN32
00256                 _pclose(pipes[id]);
00257 #else
00258                 pclose(pipes[id]);
00259 #endif
00260                 SINFO << getServers()[id] << " started." << std::endl;
00261                 progress += progressStep;
00262             }
00263         }
00264     }
00265 
00266     // connect to all servers
00267     for(s =getServers().begin();
00268         s!=getServers().end();
00269         s++)
00270     {
00271         DgramSocket      serviceSock;
00272         BinaryMessage    msg;
00273         std::string      respServer;
00274         std::string      respAddress;
00275         bool             retry=true;
00276 
00277         if(strstr((*s).c_str(),":"))
00278             directConnect = true;
00279         else
00280             directConnect = false;
00281 
00282         SINFO << "Connect to " << (*s) << std::endl;
00283         serviceSock.open();
00284         serviceSock.setTTL(8);
00285 
00286         // set interface
00287         if(!getServiceInterface().empty())
00288         {
00289             serviceSock.setMCastInterface(
00290                 SocketAddress(getServiceInterface().c_str()));
00291         }
00292 
00293         while(retry)
00294         {
00295             try
00296             {
00297                 // update progress
00298                 if(_connectionFP != NULL)
00299                 {
00300                     std::string message;
00301                     message += "Connecting:" + *s; 
00302                     if(!_connectionFP(message, progress))
00303                     {
00304                         serviceSock.close();
00305                         throw AsyncCancel();
00306                     }
00307                 }
00308 
00309                 // try to connect with the servers name
00310                 try 
00311                 {
00312                     if(directConnect)
00313                     {
00314                         channel = connection->connectPoint(*s,0.5);
00315                         if(channel >= 0) {
00316                             retry=false;
00317                             SINFO << "Connected with address:" << *s << std::endl;
00318                             break;
00319                         }
00320                     }
00321                 }
00322                 catch(...)
00323                 {
00324                 }
00325                 // find server
00326                 msg.clear();
00327                 msg.putString(*s);
00328                 msg.putString(getConnectionType());
00329                     
00330                 if(_sfServiceAddress.getValue().size() != 0)
00331                 {
00332                     SINFO << "send request to:" << 
00333                         _sfServiceAddress.getValue()
00334                           << std::endl;
00335                     serviceSock.sendTo(
00336                         msg,SocketAddress(
00337                             _sfServiceAddress.getValue().c_str(),
00338                             getServicePort()));
00339                 }
00340                 SINFO << "send request to:" 
00341                       << SocketAddress(SocketAddress::BROADCAST,
00342                                        getServicePort()).getHost().c_str()
00343                       << std::endl;
00344                 serviceSock.sendTo(
00345                     msg,SocketAddress(SocketAddress::BROADCAST,
00346                                       getServicePort()));
00347                 if(serviceSock.waitReadable(0.1))
00348                 {
00349                     SocketAddress from;
00350                     serviceSock.recvFrom(msg,from);
00351                     msg.getString(respServer);
00352                     msg.getString(respAddress);
00353                     if(respServer == *s)
00354                     {
00355                         GroupSockConnection *pointSock =
00356                             dynamic_cast<GroupSockConnection*> (connection);
00357                         if(pointSock)
00358                         {
00359                             /* for all socket connections ignore the
00360                                incomming host and use the host from
00361                                the last response. */
00362                             char port[16];
00363                             if(sscanf(respAddress.c_str(),
00364                                       "%*[^:]:%15s",port) == 1)
00365                                 respAddress = from.getHost() + ":" + port;
00366                         }
00367                         SINFO << "Found at address " << respAddress << std::endl;
00368                         // connect to server
00369                         channel = connection->connectPoint(respAddress);
00370                         if(channel >= 0)
00371                             retry=false;
00372                     }
00373                 }
00374             }
00375             catch(AsyncCancel &)
00376             {
00377                 throw;
00378             }
00379             catch(OSG_STDEXCEPTION_NAMESPACE::exception &e)
00380             {
00381                 SINFO << e.what() << std::endl;
00382             }
00383         }
00384         serviceSock.close();
00385         progress += progressStep;
00386     }
00387     // determine byte order
00388     UInt8 serverLittleEndian;
00389     UInt8 forceNetworkOrder=false;
00390 #if BYTE_ORDER == LITTLE_ENDIAN
00391     UInt8 littleEndian = true;
00392 #else
00393     UInt8 littleEndian = false;
00394 #endif
00395     for(UInt32 i=0;i<getServers().size();++i)
00396     {
00397         channel = connection->selectChannel();
00398         connection->subSelection(channel);
00399         connection->getValue(serverLittleEndian);
00400         if(serverLittleEndian != littleEndian)
00401         {
00402             forceNetworkOrder=true;
00403         }
00404     }
00405     connection->resetSelection();
00406     // tell the servers the encoding mode
00407     connection->putValue(forceNetworkOrder);
00408     connection->flush();
00409     connection->setNetworkOrder((forceNetworkOrder != 0));
00410     if(forceNetworkOrder)
00411     {
00412         SINFO << "Run clustering in network order mode" << std::endl;
00413     }
00414     // inform connection finished
00415     if(_connectionFP != NULL)
00416         _connectionFP("ok", 1.0);
00417 }

void ClusterWindow::render ( RenderActionBase action = NULL  )  [virtual, inherited]

void ClusterWindow::renderAllViewports ( RenderActionBase action = NULL  )  [virtual, inherited]

Reimplemented from osg::Window.

Definition at line 469 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::clientRender(), and osg::ClusterWindow::getNetwork().

Referenced by osg::ClusterWindow::render().

00470 {
00471     if(getNetwork()->getMainConnection() && getNetwork()->getAspect())
00472     {
00473         clientRender(action);
00474     }
00475 }

void ClusterWindow::frameInit ( void   )  [virtual, inherited]

Reimplemented from osg::Window.

Definition at line 477 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::_firstFrame, osg::beginEditCP(), osg::ChangeList::clearAll(), osg::ClusterWindow::clientInit(), osg::ClusterWindow::clientPreSync(), osg::endEditCP(), osg::ClusterWindowBase::FrameCountFieldMask, osg::ClusterNetwork::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ClusterWindowBase::getFrameCount(), osg::ClusterNetwork::getMainConnection(), osg::ClusterWindow::getNetwork(), osg::ChangeList::merge(), osg::RemoteAspect::sendSync(), and osg::ClusterWindowBase::setFrameCount().

Referenced by osg::ClusterWindow::render().

00478 {
00479     ClusterWindowPtr ptr(this);
00480     Connection   *connection  =getNetwork()->getMainConnection();
00481     RemoteAspect *remoteAspect=getNetwork()->getAspect();
00482 
00483     if(remoteAspect && connection)
00484     {
00485         if(_firstFrame)
00486         {
00487             beginEditCP(ptr,ClusterWindow::FrameCountFieldMask);
00488             setFrameCount(0);
00489             endEditCP(ptr,ClusterWindow::FrameCountFieldMask);
00490             // send sync
00491             remoteAspect->sendSync(*connection);
00492             ChangeList cl;
00493             cl.clearAll();
00494             cl.merge(*Thread::getCurrentChangeList());
00495             Thread::getCurrentChangeList()->clearAll();
00496             // init client window
00497             clientInit();
00498             // last chance to modifie before sync
00499             clientPreSync();
00500             // send sync
00501             remoteAspect->sendSync(*connection);
00502             cl.merge(*Thread::getCurrentChangeList());
00503             Thread::getCurrentChangeList()->clearAll();
00504             Thread::getCurrentChangeList()->merge(cl);
00505             _firstFrame=false;
00506         }
00507         else
00508         {
00509             beginEditCP(ptr,ClusterWindow::FrameCountFieldMask);
00510             getFrameCount()++;
00511             endEditCP(ptr,ClusterWindow::FrameCountFieldMask);
00512             clientPreSync();
00513             remoteAspect->sendSync(*connection);
00514         }
00515     }
00516 }

void ClusterWindow::frameExit ( void   )  [virtual, inherited]

Reimplemented from osg::Window.

Definition at line 518 of file OSGClusterWindow.cpp.

Referenced by osg::ClusterWindow::render().

00519 {
00520 }

bool ClusterWindow::initAsync ( connectioncbfp  fp  )  [inherited]

Definition at line 419 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::_connectionFP, and osg::ClusterWindow::init().

00420 {
00421     bool result;
00422     connectioncbfp saveFP = _connectionFP;
00423 
00424     _connectionFP = fp;
00425     try 
00426     {
00427         init();
00428         result = true;
00429     }
00430     catch(AsyncCancel &e)
00431     {
00432         result = false;
00433     }
00434     _connectionFP = saveFP;
00435 
00436     return result;
00437 }

void ClusterWindow::setConnectionCB ( connectioncbfp  fp  )  [inherited]

Definition at line 439 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::_connectionFP.

00440 {
00441     _connectionFP = fp;
00442 }

ClusterNetwork * ClusterWindow::getNetwork ( void   )  [inherited]

StatCollector * osg::ClusterWindow::getStatistics ( void   )  const [inline, inherited]

Definition at line 46 of file OSGClusterWindow.inl.

References osg::ClusterWindow::_statistics.

00047 {
00048     return _statistics;
00049 }

void ClusterWindow::setStatistics ( StatCollector stat  )  [inherited]

Definition at line 525 of file OSGClusterWindow.cpp.

References osg::ClusterWindow::_statistics, osg::ClusterNetwork::getAspect(), osg::ClusterWindow::getNetwork(), and osg::RemoteAspect::setStatistics().

00526 {
00527     _statistics = statistics;
00528     if(getNetwork()->getAspect())
00529         getNetwork()->getAspect()->setStatistics(statistics);
00530 }

bool ClusterWindow::loadCalibration ( std::istream &  in  )  [inherited]

load color and projection calibration file from xml

Definition at line 537 of file OSGClusterWindow.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::ClusterWindowBase::CalibrationFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::DisplayCalibrationBase::create(), osg::endEditCP(), osg::ClusterWindowBase::getCalibration(), osg::MField< FieldTypeT, fieldNameSpace >::push_back(), osg::Color3< ValueTypeT >::setValue(), osg::PointInterface< ValueTypeT, StorageInterfaceT >::setValueFromCString(), and SFATAL.

00538 {
00539     ClusterWindowPtr ptr(this);
00540     DisplayCalibrationPtr calibPtr;
00541     xmlpp::xmlcontextptr ctxptr(new xmlpp::xmlcontext());
00542     xmlpp::xmldocument doc(ctxptr);
00543     xmlpp::xmlnodelist servers;
00544     xmlpp::xmlnodelist colors;
00545     xmlpp::xmlnodelist points;
00546     xmlpp::xmlnodelist rows;
00547     xmlpp::xmlnodelist::const_iterator sI;
00548     xmlpp::xmlnodelist::const_iterator nI;
00549     xmlpp::xmlnodelist::const_iterator cI;
00550     xmlpp::xmlnodelist::const_iterator rI;
00551     xmlpp::xmlnodelist::const_iterator pI;
00552     xmlpp::xmlstring serverTag("server");
00553     xmlpp::xmlstring colorTag("color");
00554     xmlpp::xmlstring rowTag("row");
00555     xmlpp::xmlstring pointTag("point");
00556     Matrix colorMatrix;
00557     Real32 gamma;
00558     xmlpp::xmlnodeptr nP;
00559 
00560     getCalibration().clear();
00561     try
00562     {
00563         doc.load(in,ctxptr);
00564         servers = doc.select_nodes(serverTag);
00565         // loop through servers
00566         for(sI = servers.begin() ; sI != servers.end(); ++sI)
00567         {
00568             // create new calibration structure
00569             calibPtr = DisplayCalibration::create();
00570             beginEditCP(calibPtr);
00571             addRefCP(calibPtr);
00572             beginEditCP(ptr,CalibrationFieldMask);
00573             getCalibration().push_back(calibPtr);
00574             endEditCP(ptr,CalibrationFieldMask);
00575 
00576             // server name
00577             if((*sI)->get_attrmap().count("name"))
00578                 calibPtr->setServer((*sI)->get_attrmap()["name"]);
00579             
00580             // loop over children
00581             for(nI  = (*sI)->get_nodelist().begin();
00582                 nI != (*sI)->get_nodelist().end(); 
00583                 ++nI) 
00584             {
00585                 if((*nI)->get_name() == "colormatrix")
00586                 {
00587                     nP = (*nI);
00588                     do
00589                         nP = nP->get_nodelist().front();
00590                     while (nP->get_nodelist().size() == 1);
00591                     if(nP->get_type() == xmlpp::xml_nt_cdata) 
00592                         calibPtr->getColorMatrix().setValue(nP->get_cdata().c_str());
00593                 }
00594 
00595                 if((*nI)->get_name() == "scaledown")
00596                 {
00597                     nP = (*nI);
00598                     do
00599                         nP = nP->get_nodelist().front();
00600                     while (nP->get_nodelist().size() == 1);
00601                     if(nP->get_type() == xmlpp::xml_nt_cdata) 
00602                         sscanf(nP->get_cdata().c_str(),"%f",&calibPtr->getScaleDown());
00603                 }
00604 
00605                 if((*nI)->get_name() == "gamma")
00606                 {
00607                     nP = (*nI);
00608                     do
00609                         nP = nP->get_nodelist().front();
00610                     while (nP->get_nodelist().size() == 1);
00611                     if(nP->get_type() == xmlpp::xml_nt_cdata) 
00612                         sscanf(nP->get_cdata().c_str(),"%f",&calibPtr->getGamma());
00613                 }
00614 
00615                 if((*nI)->get_name() == "gammaramp")
00616                 {
00617                     colors = (*nI)->select_nodes(colorTag);
00618                     for(cI = colors.begin() ; cI != colors.end(); ++cI)
00619                     {   
00620                         nP = (*cI);
00621                         do
00622                             nP = nP->get_nodelist().front();
00623                         while (nP->get_nodelist().size() == 1);
00624                         if(nP->get_type() == xmlpp::xml_nt_cdata) 
00625                         {
00626                             Color3f col;
00627                             col.setValue(nP->get_cdata().c_str());
00628                             calibPtr->getGammaRamp().push_back(col);
00629                         }
00630                     }
00631                 }
00632                 if((*nI)->get_name() == "grid")
00633                 {
00634                     rows = (*nI)->select_nodes(rowTag);
00635                     calibPtr->getGridHeight() = 0;
00636                     for(rI = rows.begin() ; rI != rows.end(); ++rI)
00637                     {   
00638                         calibPtr->getGridHeight()++;
00639                         calibPtr->getGridWidth() = 0;
00640                         points = (*rI)->select_nodes(pointTag);
00641                         for(pI = points.begin() ; pI != points.end(); ++pI)
00642                         {   
00643                             nP = (*pI);
00644                             do
00645                                 nP = nP->get_nodelist().front();
00646                             while (nP->get_nodelist().size() == 1);
00647                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00648                             {
00649                                 Vec2f pos;
00650                                 calibPtr->getGridWidth()++;
00651                                 pos.setValueFromCString(nP->get_cdata().c_str());
00652                                 calibPtr->getGrid().push_back(pos);
00653                             }
00654                         }
00655                     }
00656                 }
00657             }
00658             endEditCP(calibPtr);
00659         }
00660     }
00661     catch (xmlpp::xmlerror e)
00662     {
00663         // parser error
00664         xmlpp::xmllocation where( ctxptr->get_location() );
00665         xmlpp::xmlstring errmsg( e.get_strerror() );
00666         SFATAL << "XML error line " << where.get_line() << " "
00667                << "at position " << where.get_pos()
00668                << ": error: " << errmsg.c_str()
00669                << std::endl;
00670         return false;
00671     }
00672     return true;
00673 }

bool ClusterWindow::saveCalibration ( std::ostream &  out  )  [inherited]

save color and projection calibration file to xml

Definition at line 677 of file OSGClusterWindow.cpp.

References osg::ClusterWindowBase::getCalibration(), and osg::MField< FieldTypeT, fieldNameSpace >::size().

00678 {
00679     DisplayCalibrationPtr calibPtr;
00680     UInt32 c;
00681     UInt32 color,row,col,pos;
00682 
00683     out << "<?xml version=\"1.0\"?>\n"
00684         << "<displaycalibration>\n";
00685     for(c=0 ; c<getCalibration().size() ; ++c)
00686     {
00687         calibPtr = getCalibration()[c];
00688         out << "<server name=\"" << calibPtr->getServer() << "\">\n";
00689         out << "<gamma>" << calibPtr->getGamma() << "</gamma>\n";
00690         out << "<scaledown>" << calibPtr->getScaleDown() << "</scaledown>\n";
00691         out << "<colormatrix>\n"
00692             << calibPtr->getColorMatrix()
00693             << "</colormatrix>\n";
00694         out << "<gammaramp>\n";
00695         for(color=0 ; color< calibPtr->getGammaRamp().size() ; ++color)
00696             out << "<color>" 
00697                 << calibPtr->getGammaRamp()[color] 
00698                 << "</color>\n";
00699         out << "</gammaramp>\n";
00700         out << "<grid>\n";
00701         for(row=0 ; row< calibPtr->getGridHeight() ; ++row)
00702         {
00703             out << "<row>\n";
00704             for(col=0 ; col< calibPtr->getGridWidth() ; ++col)
00705             {
00706                 pos = row*calibPtr->getGridHeight()+col;
00707                 out << "<point>";
00708                 if(pos < calibPtr->getGrid().size())
00709                     out << calibPtr->getGrid()[pos][0] << " "
00710                         << calibPtr->getGrid()[pos][1];
00711                 else
00712                     out << col << " " << row;
00713                 out << "</point>\n";
00714             }
00715             out << "</row>\n";
00716         }
00717         out << "</grid>\n";
00718         out << "</server>\n";
00719     }
00720     out << "</displaycalibration>\n";
00721     return true;
00722 }

bool ClusterWindow::loadFilter ( std::istream &  in  )  [inherited]

load display filter calibration file from xml

displayfilter server a colordisplayfilter colormatrix mat gamma size (w,h,d) shadingtable color (r,g,b)*n resolutiondisplayfilter downScale distortiondisplayfilter rows cols positions point (x,y)*n server b ...

Definition at line 744 of file OSGClusterWindow.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::DistortionDisplayFilterBase::create(), osg::ResolutionDisplayFilterBase::create(), osg::ColorDisplayFilterBase::create(), osg::DisplayFilterForegroundBase::create(), osg::ClusterWindowBase::DirtyFieldMask, osg::endEditCP(), osg::ClusterWindowBase::FilterFieldMask, osg::ClusterWindowBase::getFilter(), osg::MField< FieldTypeT, fieldNameSpace >::push_back(), osg::ClusterWindowBase::setDirty(), osg::Color3< ValueTypeT >::setValue(), osg::PointInterface< ValueTypeT, StorageInterfaceT >::setValueFromCString(), and SFATAL.

00745 {
00746     ClusterWindowPtr ptr(this);
00747     DisplayFilterForegroundPtr filterFgnd;
00748     ColorDisplayFilterPtr colorFilter;
00749     DistortionDisplayFilterPtr distortionFilter;
00750     ResolutionDisplayFilterPtr resolutionFilter;
00751     xmlpp::xmlcontextptr ctxptr(new xmlpp::xmlcontext());
00752     xmlpp::xmldocument doc(ctxptr);
00753     xmlpp::xmlnodelist servers;
00754     xmlpp::xmlnodelist colors;
00755     xmlpp::xmlnodelist points;
00756     xmlpp::xmlnodelist::const_iterator sI;
00757     xmlpp::xmlnodelist::const_iterator fI;
00758     xmlpp::xmlnodelist::const_iterator nI;
00759     xmlpp::xmlnodelist::const_iterator cI;
00760     xmlpp::xmlnodelist::const_iterator pI;
00761     xmlpp::xmlstring serverTag("server");
00762     xmlpp::xmlstring colorTag("color");
00763     xmlpp::xmlstring pointTag("point");
00764     xmlpp::xmlnodeptr nP;
00765     
00766     beginEditCP(ptr, FilterFieldMask | DirtyFieldMask);
00767         getFilter().clear();
00768         setDirty(true);
00769     endEditCP(ptr, FilterFieldMask | DirtyFieldMask);
00770     
00771     try
00772     {
00773         doc.load(in, ctxptr);
00774         servers = doc.select_nodes(serverTag);
00775         
00776         // loop through servers
00777         for(sI = servers.begin(); sI != servers.end(); ++sI)
00778         {
00779             // create new display filter foreground
00780             filterFgnd = DisplayFilterForeground::create();
00781             addRefCP(filterFgnd);
00782             
00783             beginEditCP(ptr, FilterFieldMask);
00784                 getFilter().push_back(filterFgnd);
00785             endEditCP(ptr, FilterFieldMask);
00786             
00787             beginEditCP(filterFgnd);
00788             
00789             // server name
00790             if((*sI)->get_attrmap().count("name"))
00791                 filterFgnd->setServer((*sI)->get_attrmap()["name"]);
00792             
00793             // loop over outer children, i.e. the filters
00794             for(fI  = (*sI)->get_nodelist().begin();
00795                 fI != (*sI)->get_nodelist().end(); ++fI)
00796             {
00797                 if ((*fI)->get_name() == "colordisplayfilter")
00798                 {
00799                     colorFilter = ColorDisplayFilter::create();
00800                     addRefCP(colorFilter);
00801                     
00802                     filterFgnd->getFilter().push_back(colorFilter);
00803                     
00804                     beginEditCP(colorFilter);
00805                     
00806                     // loop over inner children, i.e. the params
00807                     for(nI  = (*fI)->get_nodelist().begin();
00808                         nI != (*fI)->get_nodelist().end(); ++nI) 
00809                     {
00810                         if((*nI)->get_name() == "colormatrix")
00811                         {
00812                             nP = (*nI);
00813                             do
00814                                 nP = nP->get_nodelist().front();
00815                             while (nP->get_nodelist().size() == 1);
00816                             
00817                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00818                                 colorFilter->getMatrix().setValue(nP->get_cdata().c_str());
00819                         }
00820                         if((*nI)->get_name() == "gamma")
00821                         {
00822                             nP = (*nI);
00823                             do
00824                                 nP = nP->get_nodelist().front();
00825                             while (nP->get_nodelist().size() == 1);
00826                             
00827                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00828                                 sscanf(nP->get_cdata().c_str(),"%f",
00829                                     &colorFilter->getGamma());
00830                         }
00831                         if((*nI)->get_name() == "size")
00832                         {
00833                             nP = (*nI);
00834                             do
00835                                 nP = nP->get_nodelist().front();
00836                             while (nP->get_nodelist().size() == 1);
00837                             
00838                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00839                                 sscanf(nP->get_cdata().c_str(),"%d %d %d",
00840                                     &colorFilter->getWidth(),
00841                                     &colorFilter->getHeight(),
00842                                     &colorFilter->getDepth());
00843                         }
00844                         if((*nI)->get_name() == "shadingtable")
00845                         {
00846                             colors = (*nI)->select_nodes(colorTag);
00847                             
00848                             for(cI = colors.begin(); cI != colors.end(); ++cI)
00849                             {
00850                                 nP = (*cI);
00851                                 do
00852                                     nP = nP->get_nodelist().front();
00853                                 while (nP->get_nodelist().size() == 1);
00854                                 
00855                                 if(nP->get_type() == xmlpp::xml_nt_cdata) 
00856                                 {
00857                                     Color3f col;
00858                                     col.setValue(nP->get_cdata().c_str());
00859                                     colorFilter->getTable().push_back(col);
00860                                 }
00861                             }
00862                         }
00863                     }
00864                     endEditCP(colorFilter);
00865                 } // colordisplayfilter
00866                 
00867                 if ((*fI)->get_name() == "resolutiondisplayfilter")
00868                 {
00869                     resolutionFilter = ResolutionDisplayFilter::create();
00870                     addRefCP(resolutionFilter);
00871                     
00872                     filterFgnd->getFilter().push_back(resolutionFilter);
00873                     
00874                     beginEditCP(resolutionFilter);
00875                     
00876                     for(nI  = (*fI)->get_nodelist().begin();
00877                         nI != (*fI)->get_nodelist().end(); ++nI) 
00878                     {
00879                         if((*nI)->get_name() == "downscale")
00880                         {
00881                             nP = (*nI);
00882                             do
00883                                 nP = nP->get_nodelist().front();
00884                             while (nP->get_nodelist().size() == 1);
00885                             
00886                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00887                                 sscanf(nP->get_cdata().c_str(),"%f",
00888                                     &resolutionFilter->getDownScale());
00889                         }
00890                     }
00891                     endEditCP(resolutionFilter);
00892                 } // resolutiondisplayfilter
00893                 
00894                 if ((*fI)->get_name() == "distortiondisplayfilter")
00895                 {
00896                     distortionFilter = DistortionDisplayFilter::create();
00897                     addRefCP(distortionFilter);
00898                     
00899                     filterFgnd->getFilter().push_back(distortionFilter);
00900                     
00901                     beginEditCP(distortionFilter);
00902                     
00903                     for(nI  = (*fI)->get_nodelist().begin();
00904                         nI != (*fI)->get_nodelist().end(); ++nI) 
00905                     {
00906                         if((*nI)->get_name() == "rows")
00907                         {
00908                             nP = (*nI);
00909                             do
00910                                 nP = nP->get_nodelist().front();
00911                             while (nP->get_nodelist().size() == 1);
00912                             
00913                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00914                                 sscanf(nP->get_cdata().c_str(),"%d",
00915                                     &distortionFilter->getRows());
00916                         }
00917                         if((*nI)->get_name() == "cols")
00918                         {
00919                             nP = (*nI);
00920                             do
00921                                 nP = nP->get_nodelist().front();
00922                             while (nP->get_nodelist().size() == 1);
00923                             
00924                             if(nP->get_type() == xmlpp::xml_nt_cdata) 
00925                                 sscanf(nP->get_cdata().c_str(),"%d",
00926                                     &distortionFilter->getColumns());
00927                         }
00928                         if((*nI)->get_name() == "positions")
00929                         {
00930                             points = (*nI)->select_nodes(pointTag);
00931                             
00932                             for(pI = points.begin(); pI != points.end(); ++pI)
00933                             {   
00934                                 nP = (*pI);
00935                                 do
00936                                     nP = nP->get_nodelist().front();
00937                                 while (nP->get_nodelist().size() == 1);
00938                                 
00939                                 if(nP->get_type() == xmlpp::xml_nt_cdata) 
00940                                 {
00941                                     Vec2f pos;
00942                                     pos.setValueFromCString(nP->get_cdata().c_str());
00943                                     distortionFilter->getPositions().push_back(pos);
00944                                 }
00945                             }
00946                         }
00947                     }
00948                     endEditCP(distortionFilter);
00949                 } // distortiondisplayfilter
00950             }
00951             
00952             endEditCP(filterFgnd);
00953         } // servers
00954     }
00955     catch (xmlpp::xmlerror e)
00956     {
00957         // parser error
00958         xmlpp::xmllocation where( ctxptr->get_location() );
00959         xmlpp::xmlstring errmsg( e.get_strerror() );
00960         SFATAL << "XML error line " << where.get_line() << " "
00961                << "at position " << where.get_pos()
00962                << ": error: " << errmsg.c_str()
00963                << std::endl;
00964         return false;
00965     }
00966     return true;
00967 }

bool ClusterWindow::updateFilter ( WindowPtr  window,
UInt32  id,
RenderActionBase action 
) [inherited]

load color and projection calibration file from xml

Definition at line 1045 of file OSGClusterWindow.cpp.

References osg::beginEditCP(), osg::ClusterWindowBase::DirtyFieldMask, osg::endEditCP(), osg::ViewportBase::ForegroundsFieldMask, osg::ClusterWindowBase::getDirty(), osg::ClusterWindowBase::getFilter(), osg::ClusterWindowBase::getServers(), p, osg::ClusterWindowBase::setDirty(), and osg::MField< FieldTypeT, fieldNameSpace >::size().

Referenced by osg::ClusterWindow::serverRender().

01047 {
01048     bool found = false;
01049 
01050     if (!getFilter().empty() && getDirty())
01051     {
01052         UInt32 c, p;
01053         
01054         ClusterWindowPtr ptr(this);
01055         
01056         beginEditCP(ptr, DirtyFieldMask);
01057             setDirty(false);
01058         endEditCP(ptr, DirtyFieldMask);
01059         
01060         // for all viewports
01061         for(p=0; p<window->getPort().size(); ++p) 
01062         {
01063             // search filter foregrounds
01064             for(c=0; c<getFilter().size(); ++c)
01065             {
01066                 std::string name = getServers()[id];
01067                 char portName[64];
01068                 
01069                 if(window->getPort().size() > 1)
01070                 {
01071                     sprintf(portName,"[%d]",p);
01072                     name = name + portName;
01073                 }
01074                 
01075                 DisplayFilterForegroundPtr filterFgnd = getFilter()[c];
01076                 
01077                 if(filterFgnd->getServer() == name)
01078                 {
01079                     beginEditCP(window->getPort()[p], Viewport::ForegroundsFieldMask);
01080                     
01081                     // first remove old filters, if any
01082                     for (Int32 n=window->getPort()[p]->getForegrounds().size(), j=n-1; 
01083                             j>=0; j--) 
01084                     {
01085                         MFForegroundPtr::iterator fgndIt = 
01086                             window->getPort()[p]->getForegrounds().begin() + j;
01087                         if ( (*fgndIt) == filterFgnd )
01088                             window->getPort()[p]->getForegrounds().erase(fgndIt);
01089                     }
01090                     
01091                     // then add new one
01092                     window->getPort()[p]->getForegrounds().push_back(filterFgnd);
01093                     
01094                     endEditCP(window->getPort()[p], Viewport::ForegroundsFieldMask);
01095 
01096                     found = true;
01097                     break;
01098                 }
01099             }
01100         }
01101     }
01102 
01103     return found;
01104 }

MFString * osg::ClusterWindowBase::getMFServers ( void   )  [inline, inherited]

Definition at line 101 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfServers.

00102 {
00103     return &_mfServers;
00104 }

SFString * osg::ClusterWindowBase::getSFConnectionType ( void   )  [inline, inherited]

Definition at line 108 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfConnectionType.

00109 {
00110     return &_sfConnectionType;
00111 }

SFString * osg::ClusterWindowBase::getSFConnectionInterface ( void   )  [inline, inherited]

Definition at line 115 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfConnectionInterface.

00116 {
00117     return &_sfConnectionInterface;
00118 }

SFString * osg::ClusterWindowBase::getSFConnectionDestination ( void   )  [inline, inherited]

Definition at line 122 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfConnectionDestination.

00123 {
00124     return &_sfConnectionDestination;
00125 }

SFString * osg::ClusterWindowBase::getSFConnectionParams ( void   )  [inline, inherited]

Definition at line 129 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfConnectionParams.

00130 {
00131     return &_sfConnectionParams;
00132 }

SFUInt32 * osg::ClusterWindowBase::getSFServicePort ( void   )  [inline, inherited]

Definition at line 136 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServicePort.

00137 {
00138     return &_sfServicePort;
00139 }

SFString * osg::ClusterWindowBase::getSFServiceAddress ( void   )  [inline, inherited]

Definition at line 143 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServiceAddress.

00144 {
00145     return &_sfServiceAddress;
00146 }

SFString * osg::ClusterWindowBase::getSFServiceInterface ( void   )  [inline, inherited]

Definition at line 150 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServiceInterface.

00151 {
00152     return &_sfServiceInterface;
00153 }

SFWindowPtr * osg::ClusterWindowBase::getSFClientWindow ( void   )  [inline, inherited]

Definition at line 157 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfClientWindow.

00158 {
00159     return &_sfClientWindow;
00160 }

SFUInt32 * osg::ClusterWindowBase::getSFInterleave ( void   )  [inline, inherited]

Definition at line 164 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfInterleave.

00165 {
00166     return &_sfInterleave;
00167 }

SFUInt32 * osg::ClusterWindowBase::getSFFrameCount ( void   )  [inline, inherited]

Definition at line 171 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfFrameCount.

00172 {
00173     return &_sfFrameCount;
00174 }

SFImageComposerPtr * osg::ClusterWindowBase::getSFComposer ( void   )  [inline, inherited]

Definition at line 178 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfComposer.

00179 {
00180     return &_sfComposer;
00181 }

MFString * osg::ClusterWindowBase::getMFAutostart ( void   )  [inline, inherited]

Definition at line 185 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfAutostart.

00186 {
00187     return &_mfAutostart;
00188 }

MFDisplayCalibrationPtr * osg::ClusterWindowBase::getMFCalibration ( void   )  [inline, inherited]

Definition at line 192 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfCalibration.

00193 {
00194     return &_mfCalibration;
00195 }

MFDisplayFilterForegroundPtr * osg::ClusterWindowBase::getMFFilter ( void   )  [inline, inherited]

Definition at line 199 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfFilter.

00200 {
00201     return &_mfFilter;
00202 }

std::string & osg::ClusterWindowBase::getConnectionType ( void   )  [inline, inherited]

const std::string & osg::ClusterWindowBase::getConnectionType ( void   )  const [inline, inherited]

Definition at line 221 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfConnectionType, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00222 {
00223     return _sfConnectionType.getValue();
00224 }

std::string & osg::ClusterWindowBase::getConnectionInterface ( void   )  [inline, inherited]

const std::string & osg::ClusterWindowBase::getConnectionInterface ( void   )  const [inline, inherited]

std::string & osg::ClusterWindowBase::getConnectionDestination ( void   )  [inline, inherited]

const std::string & osg::ClusterWindowBase::getConnectionDestination ( void   )  const [inline, inherited]

std::string & osg::ClusterWindowBase::getConnectionParams ( void   )  [inline, inherited]

const std::string & osg::ClusterWindowBase::getConnectionParams ( void   )  const [inline, inherited]

UInt32 & osg::ClusterWindowBase::getServicePort ( void   )  [inline, inherited]

Definition at line 298 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServicePort, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::ClusterWindow::init().

00299 {
00300     return _sfServicePort.getValue();
00301 }

const UInt32 & osg::ClusterWindowBase::getServicePort ( void   )  const [inline, inherited]

Definition at line 305 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServicePort, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00306 {
00307     return _sfServicePort.getValue();
00308 }

std::string & osg::ClusterWindowBase::getServiceAddress ( void   )  [inline, inherited]

Definition at line 319 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServiceAddress, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00320 {
00321     return _sfServiceAddress.getValue();
00322 }

const std::string & osg::ClusterWindowBase::getServiceAddress ( void   )  const [inline, inherited]

Definition at line 326 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfServiceAddress, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00327 {
00328     return _sfServiceAddress.getValue();
00329 }

std::string & osg::ClusterWindowBase::getServiceInterface ( void   )  [inline, inherited]

const std::string & osg::ClusterWindowBase::getServiceInterface ( void   )  const [inline, inherited]

WindowPtr & osg::ClusterWindowBase::getClientWindow ( void   )  [inline, inherited]

const WindowPtr & osg::ClusterWindowBase::getClientWindow ( void   )  const [inline, inherited]

Definition at line 368 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfClientWindow, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00369 {
00370     return _sfClientWindow.getValue();
00371 }

UInt32 & osg::ClusterWindowBase::getInterleave ( void   )  [inline, inherited]

const UInt32 & osg::ClusterWindowBase::getInterleave ( void   )  const [inline, inherited]

Definition at line 389 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfInterleave, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00390 {
00391     return _sfInterleave.getValue();
00392 }

UInt32 & osg::ClusterWindowBase::getFrameCount ( void   )  [inline, inherited]

Definition at line 403 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfFrameCount, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::ClusterWindow::frameInit().

00404 {
00405     return _sfFrameCount.getValue();
00406 }

const UInt32 & osg::ClusterWindowBase::getFrameCount ( void   )  const [inline, inherited]

Definition at line 410 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfFrameCount, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00411 {
00412     return _sfFrameCount.getValue();
00413 }

ImageComposerPtr & osg::ClusterWindowBase::getComposer ( void   )  [inline, inherited]

Definition at line 424 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfComposer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00425 {
00426     return _sfComposer.getValue();
00427 }

const ImageComposerPtr & osg::ClusterWindowBase::getComposer ( void   )  const [inline, inherited]

Definition at line 431 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfComposer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00432 {
00433     return _sfComposer.getValue();
00434 }

std::string & osg::ClusterWindowBase::getServers ( const UInt32  index  )  [inline, inherited]

Definition at line 467 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfServers.

00468 {
00469     return _mfServers[index];
00470 }

MFString & osg::ClusterWindowBase::getServers ( void   )  [inline, inherited]

const MFString & osg::ClusterWindowBase::getServers ( void   )  const [inline, inherited]

Definition at line 481 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfServers.

00482 {
00483     return _mfServers;
00484 }

std::string & osg::ClusterWindowBase::getAutostart ( const UInt32  index  )  [inline, inherited]

Definition at line 488 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfAutostart.

00489 {
00490     return _mfAutostart[index];
00491 }

MFString & osg::ClusterWindowBase::getAutostart ( void   )  [inline, inherited]

Definition at line 495 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfAutostart.

Referenced by osg::ClusterWindow::init().

00496 {
00497     return _mfAutostart;
00498 }

const MFString & osg::ClusterWindowBase::getAutostart ( void   )  const [inline, inherited]

Definition at line 502 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfAutostart.

00503 {
00504     return _mfAutostart;
00505 }

DisplayCalibrationPtr & osg::ClusterWindowBase::getCalibration ( const UInt32  index  )  [inline, inherited]

Definition at line 509 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfCalibration.

00510 {
00511     return _mfCalibration[index];
00512 }

MFDisplayCalibrationPtr & osg::ClusterWindowBase::getCalibration ( void   )  [inline, inherited]

const MFDisplayCalibrationPtr & osg::ClusterWindowBase::getCalibration ( void   )  const [inline, inherited]

Definition at line 523 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfCalibration.

00524 {
00525     return _mfCalibration;
00526 }

DisplayFilterForegroundPtr & osg::ClusterWindowBase::getFilter ( const UInt32  index  )  [inline, inherited]

Definition at line 530 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfFilter.

00531 {
00532     return _mfFilter[index];
00533 }

MFDisplayFilterForegroundPtr & osg::ClusterWindowBase::getFilter ( void   )  [inline, inherited]

Definition at line 537 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfFilter.

Referenced by osg::ClusterWindow::loadFilter(), and osg::ClusterWindow::updateFilter().

00538 {
00539     return _mfFilter;
00540 }

const MFDisplayFilterForegroundPtr & osg::ClusterWindowBase::getFilter ( void   )  const [inline, inherited]

Definition at line 544 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_mfFilter.

00545 {
00546     return _mfFilter;
00547 }

void osg::ClusterWindowBase::setConnectionType ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setConnectionInterface ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setConnectionDestination ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setConnectionParams ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setServicePort ( const UInt32 value  )  [inline, inherited]

void osg::ClusterWindowBase::setServiceAddress ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setServiceInterface ( const std::string &  value  )  [inline, inherited]

void osg::ClusterWindowBase::setClientWindow ( const WindowPtr value  )  [inline, inherited]

void osg::ClusterWindowBase::setInterleave ( const UInt32 value  )  [inline, inherited]

void osg::ClusterWindowBase::setFrameCount ( const UInt32 value  )  [inline, inherited]

void osg::ClusterWindowBase::setComposer ( const ImageComposerPtr value  )  [inline, inherited]

SFBool * osg::ClusterWindowBase::getSFDirty ( void   )  [inline, protected, inherited]

Definition at line 206 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfDirty.

00207 {
00208     return &_sfDirty;
00209 }

bool & osg::ClusterWindowBase::getDirty ( void   )  [inline, protected, inherited]

const bool & osg::ClusterWindowBase::getDirty ( void   )  const [inline, protected, inherited]

Definition at line 452 of file OSGClusterWindowBase.inl.

References osg::ClusterWindowBase::_sfDirty, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00453 {
00454     return _sfDirty.getValue();
00455 }

void osg::ClusterWindowBase::setDirty ( const bool &  value  )  [inline, protected, inherited]

static const char* osg::Window::getClassname ( void   )  [inline, static, inherited]

Definition at line 107 of file OSGWindow.h.

00107 { return "Window"; };

void osg::Window::addPort ( const ViewportPtr portP  )  [inherited]

Definition at line 407 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::back(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, osg::ViewportBase::ParentFieldMask, and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00408 {
00409     if(portP != NullFC)
00410     {
00411         _mfPort.push_back(portP);
00412 // CHECK CHECK
00413 //        _mfPort.back()->setParent(FieldContainer::getPtr<WindowPtr>(*this));
00414 
00415         beginEditCP(portP, Viewport::ParentFieldMask);
00416         {
00417             _mfPort.back()->setParent(WindowPtr(*this));
00418         }
00419         endEditCP  (portP, Viewport::ParentFieldMask);
00420     }
00421 }

void osg::Window::insertPort ( UInt32  portIndex,
const ViewportPtr portP 
) [inherited]

Definition at line 423 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::endEditCP(), osg::MField< FieldTypeT, fieldNameSpace >::insert(), osg::NullFC, and osg::ViewportBase::ParentFieldMask.

00424 {    
00425     MFViewportPtr::iterator portIt = _mfPort.begin();
00426 
00427     if(portP != NullFC)
00428     {
00429         portIt += portIndex;
00430   
00431 // CHECK CHECK      
00432 //        (*(_mfPort.insert(portIt, portP)))->setParent(
00433 //            FieldContainer::getPtr<WindowPtr>(*this));
00434 
00435         beginEditCP(portP, Viewport::ParentFieldMask);
00436         {
00437             (*(_mfPort.insert(portIt, portP)))->setParent(
00438                 WindowPtr(*this));
00439         }
00440         endEditCP  (portP, Viewport::ParentFieldMask);
00441 
00442     }
00443 }

void osg::Window::replacePort ( UInt32  portIndex,
const ViewportPtr portP 
) [inherited]

Definition at line 446 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, and osg::NullFC.

00447 {
00448     if(portP != NullFC)
00449     {
00450         _mfPort[portIndex]->setParent(NullFC);
00451         _mfPort[portIndex] = portP;
00452 // CHECK CHECK
00453 //        _mfPort.getValue(portIndex)->setParent(
00454 //            FieldContainer::getPtr<WindowPtr>(*this));
00455         _mfPort[portIndex]->setParent(
00456             WindowPtr(*this));
00457     }
00458 }

void osg::Window::replacePortBy ( const ViewportPtr portP,
const ViewportPtr newPortP 
) [inherited]

Definition at line 460 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::MField< FieldTypeT, fieldNameSpace >::find(), and osg::NullFC.

00462 {
00463     MFViewportPtr::iterator portIt = _mfPort.find(portP);
00464 
00465     if(newportP != NullFC)
00466     {
00467         if(portIt != _mfPort.end())
00468         {
00469             (*portIt)->setParent(NullFC);
00470             (*portIt) = newportP;
00471 // CHECK CHECK
00472 //            (*portIt)->setParent(
00473 //                FieldContainer::getPtr<WindowPtr>(*this));
00474             (*portIt)->setParent(
00475                 WindowPtr(*this));
00476         }
00477     }
00478 }

void osg::Window::subPort ( const ViewportPtr portP  )  [inherited]

Definition at line 480 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), osg::MField< FieldTypeT, fieldNameSpace >::find(), and osg::NullFC.

00481 {
00482     MFViewportPtr::iterator portIt = _mfPort.find(portP);
00483 
00484     if(portIt != _mfPort.end())
00485     {
00486         (*portIt)->setParent(NullFC);
00487 
00488         _mfPort.erase(portIt);
00489     }
00490 
00491 }

void osg::Window::subPort ( UInt32  portIndex  )  [inherited]

Definition at line 493 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::MField< FieldTypeT, fieldNameSpace >::erase(), and osg::NullFC.

00494 {
00495     MFViewportPtr::iterator portIt = _mfPort.begin();
00496 
00497     portIt += portIndex;
00498 
00499     if(portIt != _mfPort.end())
00500     {
00501         (*portIt)->setParent(NullFC);
00502 
00503         _mfPort.erase(portIt);
00504     }
00505 }

void osg::Window::clearPorts ( void   )  [inherited]

Definition at line 507 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::NullFC, and osg::subRefCP().

00508 {
00509     MFViewportPtr::iterator portIt = _mfPort.begin();
00510 
00511     while(portIt != _mfPort.end())
00512     {
00513         (*portIt)->setParent(NullFC);
00514 
00515         subRefCP(*portIt);
00516     }
00517  
00518     _mfPort.clear();
00519 }

static UInt32 osg::Window::registerExtension ( const Char8 s  )  [static, inherited]

static void osg::Window::ignoreExtensions ( const Char8 s  )  [static, inherited]

Referenced by osg::Window::frameInit().

static UInt32 osg::Window::registerFunction ( const Char8 s,
Int32  ext = -1,
UInt32  version = 0xffff 
) [static, inherited]

static void osg::Window::registerConstant ( GLenum  val  )  [static, inherited]

void osg::Window::setGLLibraryName ( const Char8 s  )  [inline, static, inherited]

Set the library name where to find OpenGL extension functions. This has to be called before the first extension function is accessed, and it's safe to call it before osgInit().

Definition at line 121 of file OSGWindow.inl.

References osg::Window::_glLibraryName.

00122 {
00123     _glLibraryName = s;
00124 }

UInt32 osg::Window::getGLVersion ( void   )  [inline, inherited]

Return the version of OpenGL running in the Window in the form 0x<major><major><minor><minor>, e.g. 0x0201 for version 2.1.

Definition at line 129 of file OSGWindow.inl.

References osg::Window::_glVersion.

Referenced by osg::TextureChunk::activate(), osg::TextureChunk::changeFrom(), osg::TextureChunk::deactivate(), osg::TextureChunk::handleGL(), and osg::TextureChunk::handleTexture().

00130 {
00131     return _glVersion;
00132 }

Int32 osg::Window::getExtensionId ( const Char8 s  )  [inline, static, inherited]

Find the id of a registered extension. Return -1 if extension not registered.

Definition at line 137 of file OSGWindow.inl.

References osg::Window::_registeredExtensions.

00138 {
00139     std::vector<std::string>::iterator it;
00140 
00141     it = std::find(_registeredExtensions.begin(),
00142               _registeredExtensions.end(),
00143               s);
00144 
00145     if(it == _registeredExtensions.end())
00146         return -1;
00147 
00148     return Int32(it -_registeredExtensions.begin());
00149 }

bool osg::Window::hasExtension ( UInt32  id  )  [inline, inherited]

Check if the window has the indicated extension.

Warning:
No error checks are done on the passed index!

Definition at line 64 of file OSGWindow.inl.

References osg::Window::_availExtensions.

Referenced by osg::TextureChunk::activate(), osg::SHLParameterChunk::activate(), osg::RegisterCombinersChunk::activate(), osg::ProgramChunk::activate(), osg::PointChunk::activate(), osg::DVRSimpleLUTShader::activate(), osg::CubeTextureChunk::activate(), osg::BlendChunk::activate(), osg::DVRIsoShader::activate_NVRegisterCombinerShading(), osg::TextureChunk::changeFrom(), osg::SHLParameterChunk::changeFrom(), osg::ProgramChunk::changeFrom(), osg::PointChunk::changeFrom(), osg::CubeTextureChunk::changeFrom(), osg::BlendChunk::changeFrom(), osg::TextureChunk::deactivate(), osg::ProgramChunk::deactivate(), osg::PointChunk::deactivate(), osg::CubeTextureChunk::deactivate(), osg::BlendChunk::deactivate(), osg::GeoVBO::draw(), osg::Slices::drawSlices(), GeoPump128(), GeoPump129(), osg::DVRVolume::getTextureMode(), osg::TextureChunk::handleGL(), osg::SHLChunk::handleGL(), osg::ProgramChunk::handleGL(), osg::Geometry::handleGL(), osg::CubeTextureChunk::handleGL(), osg::TextureChunk::handleTexture(), osg::TextureChunk::handleTextureShader(), osg::TextureChunk::hasMultiTexture(), osg::DVRMtexLUTShader::initCombiners(), osg::DVRMtexLUTShader::initialize(), osg::DVRVolume::initializeClipObjects(), osg::DVRSimpleLUTShader::isModeSupported(), osg::DVRIsoShader::isModeSupported(), osg::FBOViewport::render(), osg::DVRMtexLUTShader::renderSlice(), osg::DVRSimpleLUTShader::setupAlphaCorrectionRegisterCombiners(), osg::RenderAction::start(), osg::SHLChunk::updateProgram(), and osg::SHLChunk::updateProgramParameters().

00065 {
00066     return _availExtensions[id];
00067 }

bool osg::Window::hasExtension ( const Char8 s  )  [inherited]

Return the version of OpenGL running in the Window in the form 0x<major><major><minor><minor>, e.g. 0x0201 for version 2.1.

bool osg::Window::hasCommonExtension ( UInt32  id  )  [inline, static, inherited]

Check if the window has the indicated extension.

Definition at line 71 of file OSGWindow.inl.

References osg::Window::_commonExtensions.

Referenced by osg::PhongMaterial::createChunkMaterial(), and osg::PhongMaterial::prepareLocalChunks().

00072 {
00073     if(id >= _commonExtensions.size())
00074         return false;
00075 
00076     return _commonExtensions[id];
00077 }

void * osg::Window::getFunction ( UInt32  id  )  [inline, inherited]

Get the indicated extension function. The id and the returned functions are checked for sanity and a warning is issued if there are problems. Use getFunctionNoCheck if you're sure you don't need them.

Definition at line 84 of file OSGWindow.inl.

References osg::Window::_extFunctions, osg::Window::_registeredFunctions, and FINFO.

Referenced by osg::SHLChunk::activate(), osg::RegisterCombinersChunk::activate(), osg::ProgramChunk::activate(), osg::PointChunk::activate(), osg::DVRSimpleLUTShader::activate(), osg::BlendChunk::activate(), osg::DVRIsoShader::activate_NVRegisterCombinerShading(), osg::TextureChunk::activeTexture(), osg::FBOViewport::bind(), osg::SHLChunk::changeFrom(), osg::ProgramChunk::changeFrom(), osg::PointChunk::changeFrom(), osg::BlendChunk::changeFrom(), osg::FBOViewport::checkFrameBufferStatus(), osg::SHLChunk::deactivate(), osg::ProgramChunk::deactivate(), osg::PointChunk::deactivate(), osg::DVRSimpleLUTShader::deactivate(), osg::BlendChunk::deactivate(), osg::GeoVBO::draw(), osg::Slices::drawSlices(), GeoPump128(), GeoPump129(), osg::SHLChunk::handleGL(), osg::ProgramChunk::handleGL(), osg::TextureChunk::handleTexture(), osg::DVRMtexLUTShader::initCombiners(), osg::DVRIsoShader::initCombiners_Diffuse2Combiners(), osg::DVRIsoShader::initCombiners_DiffuseMultiCombiners(), osg::DVRIsoShader::initCombiners_IsoSurfaceDiffuse(), osg::DVRIsoShader::initCombiners_IsoSurfaceSpecular(), osg::DVRIsoShader::initCombiners_Specular2Combiners(), osg::DVRIsoShader::initCombiners_SpecularMultiCombiners(), osg::FBOViewport::initialize(), osg::FBOViewport::render(), osg::DVRMtexLUTShader::renderSlice(), osg::DVRIsoShader::renderSlice_NVRegisterCombinerShading(), osg::FBOViewport::setTarget(), osg::DVRSimpleLUTShader::setupAlphaCorrectionRegisterCombiners(), osg::DVRIsoShader::setupCombinerParametersDiffuse(), osg::DVRIsoShader::setupCombinerParametersSpecular(), osg::RenderAction::start(), osg::FBOViewport::stop(), osg::GeoVBO::update(), osg::SHLChunk::updateActiveLightsMask(), osg::SHLChunk::updateCameraOrientation(), osg::SHLChunk::updateCameraPosition(), osg::SHLChunk::updateClusterId(), osg::SHLChunk::updateInvViewMatrix(), osg::SHLChunk::updateInvWorldMatrix(), osg::SHLChunk::updateLight0Active(), osg::SHLChunk::updateLight1Active(), osg::SHLChunk::updateLight2Active(), osg::SHLChunk::updateLight3Active(), osg::SHLChunk::updateLight4Active(), osg::SHLChunk::updateLight5Active(), osg::SHLChunk::updateLight6Active(), osg::SHLChunk::updateLight7Active(), osg::SHLChunk::updateOSGParameters(), osg::SHLChunk::updateParameterLocation(), osg::SHLChunk::updateParameterLocations(), osg::SHLChunk::updateParameters(), osg::SHLChunk::updateProgram(), osg::SHLChunk::updateProgramParameters(), osg::SHLChunk::updateStereoLeftEye(), osg::SHLChunk::updateTransInvWorldMatrix(), osg::SHLChunk::updateViewMatrix(), osg::SHLChunk::updateWorldMatrix(), and osg::GeoVBO::~GeoVBO().

00085 {
00086     if(id >= _extFunctions.size())
00087     {
00088         FINFO(("Window::getFunction: illegal id %d!\n", id));
00089         return NULL;
00090     }
00091     if(_extFunctions[id] == NULL)
00092     {
00093         FINFO(("Window::getFunction: function \"%s\" is NULL!\n",
00094                     _registeredFunctions[id].c_str()));
00095         return NULL;
00096     }
00097     return _extFunctions[id];
00098 }

void * osg::Window::getFunctionNoCheck ( UInt32  id  )  [inline, inherited]

Get the indicated extension function.

Warning:
No error checks are done on the passed index nor on the returned function!

Definition at line 104 of file OSGWindow.inl.

References osg::Window::_extFunctions.

00105 {
00106     return _extFunctions[ id ];
00107 }

void osg::Window::dumpExtensions ( void   )  [inherited]

Dump all the registered extensions to std::cout.

See OpenGL Objects & Extension Handling for a description of the OpenGL object concept.

Definition at line 1128 of file OSGWindow.cpp.

References osg::Window::_extensions.

01129 {   
01130     std::vector<std::string>::iterator it;
01131     std::cout << "GL Extensions: ";
01132     for ( it = _extensions.begin(); it != _extensions.end(); it++ )
01133     {
01134         std::cout << it->c_str() << ", ";
01135     }
01136     std::cout << std::endl;       
01137 }

Real32 osg::Window::getConstantValue ( GLenum  id  )  [inline, inherited]

const Vec2f & osg::Window::getConstantValuev ( GLenum  id  )  [inherited]

Return the value of the registered constant, (Inf, Inf) if not registered or no value received yet.

Definition at line 1558 of file OSGWindow.cpp.

References osg::Window::_availConstants, and osg::Inf.

Referenced by osg::Window::getConstantValue().

01559 {
01560     static Vec2f inf(Inf, Inf);
01561 
01562     ConstHash::iterator it = _availConstants.find(id);
01563 
01564     if(it != _availConstants.end())
01565         return _availConstants[id];
01566 
01567     return inf;
01568 }

const std::vector< std::string > & osg::Window::getRegisteredExtensions ( void   )  [inline, static, inherited]

Access the registered extensions.

Definition at line 160 of file OSGWindow.inl.

References osg::Window::_registeredExtensions.

00161 {
00162     return _registeredExtensions;
00163 }

const std::vector< std::string > & osg::Window::getRegisteredFunctions ( void   )  [inline, inherited]

Access the registered functions.

Definition at line 167 of file OSGWindow.inl.

References osg::Window::_registeredFunctions.

00168 {
00169     return _registeredFunctions;
00170 }

const std::vector< std::string > & osg::Window::getExtensions ( void   )  [inline, inherited]

Access the available extensions.

Definition at line 153 of file OSGWindow.inl.

References osg::Window::_extensions.

00154 {
00155     return _extensions;
00156 }

const std::vector< std::string > & osg::Window::getIgnoredExtensions ( void   )  [inline, inherited]

Access the ignored extensions.

Definition at line 174 of file OSGWindow.inl.

References osg::Window::_ignoredExtensions.

00175 {
00176     return _ignoredExtensions;
00177 }

static UInt32 osg::Window::registerGLObject ( GLObjectFunctor  functor,
UInt32  num = 1 
) [static, inherited]

void osg::Window::validateGLObject ( UInt32  id  )  [inherited]

void osg::Window::validateAllGLObjects ( void   )  [inherited]

void osg::Window::setGLObjectId ( UInt32  id,
UInt32  id2 
) [inline, inherited]

Definition at line 179 of file OSGWindow.inl.

References osg::Window::_glObjects, osg::Window::_ids, and SWARNING.

Referenced by osg::Geometry::createVBO(), osg::Geometry::destroyVBO(), osg::TextureChunk::handleGL(), osg::SHLChunk::handleGL(), osg::ProgramChunk::handleGL(), osg::Geometry::handleGL(), osg::CubeTextureChunk::handleGL(), and osg::SHLChunk::updateProgram().

00180 {
00181     if(osgId < _ids.size())
00182     {
00183         _ids[osgId] = id2;
00184     }
00185     else
00186     {
00187         _ids.resize(_glObjects.size());
00188         if(osgId < _ids.size())
00189             _ids[osgId] = id2;
00190         else
00191             SWARNING << "Window::setGLObjectId: id (" << osgId << ") is not valid!" << std::endl;
00192     }
00193 }

UInt32 osg::Window::getGLObjectId ( UInt32  id  )  [inline, inherited]

UInt32 osg::Window::getGLObjectsSize ( void   )  [inline, static, inherited]

Definition at line 204 of file OSGWindow.inl.

References osg::Window::_glObjects.

00205 {
00206     return _glObjects.size();
00207 }

static void osg::Window::refreshGLObject ( UInt32  id  )  [static, inherited]

static void osg::Window::refreshAllGLObjects ( void   )  [static, inherited]

static void osg::Window::reinitializeGLObject ( UInt32  id  )  [static, inherited]

static void osg::Window::reinitializeAllGLObjects ( void   )  [static, inherited]

static void osg::Window::destroyGLObject ( UInt32  id,
UInt32  num = 1 
) [static, inherited]

void osg::Window::unpackIdStatus ( UInt32  idstatus,
UInt32 osgId,
GLObjectStatusE status 
) [inline, static, inherited]

Unpack the id and the status from one UInt32 packed by packIdStatus

Definition at line 226 of file OSGWindow.inl.

References osg::Window::statusMask, and osg::Window::statusShift.

Referenced by osg::TextureChunk::handleGL(), osg::Surface::handleGL(), osg::SHLChunk::handleGL(), osg::ProgramChunk::handleGL(), osg::Geometry::handleGL(), osg::CubeTextureChunk::handleGL(), and osg::ProgramChunk::printCompileError().

00228 {
00229     osgId = idstatus >> statusShift;
00230     status = static_cast<GLObjectStatusE>(idstatus & statusMask);
00231 }

bool osg::Window::isResizePending ( void   )  [inline, inherited]

Definition at line 56 of file OSGWindow.inl.

References osg::WindowBase::_sfResizePending, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::Window::resizeGL().

00057 {
00058     return _sfResizePending.getValue();
00059 }

void osg::Window::resize ( int  width,
int  height 
) [virtual, inherited]

Resize notifier function.

As OpenSG does not do Window System event management it needs to be notified whenever the size of a Window changes.

Definition at line 1695 of file OSGWindow.cpp.

References osg::beginEditCP(), osg::endEditCP(), osg::WindowBase::HeightFieldMask, osg::WindowBase::ResizePendingFieldMask, osg::WindowBase::setHeight(), osg::WindowBase::setResizePending(), osg::WindowBase::setWidth(), and osg::WindowBase::WidthFieldMask.

void osg::Window::resizeGL ( void   )  [virtual, inherited]

Resize function.

This function needs to be called before a Window's Viewports are rendered, to ensure that eventual pending resizes are handled correctly.

Definition at line 1711 of file OSGWindow.cpp.

References osg::beginEditCP(), osg::endEditCP(), osg::WindowBase::getHeight(), osg::WindowBase::getWidth(), osg::Window::isResizePending(), osg::WindowBase::ResizePendingFieldMask, and osg::WindowBase::setResizePending().

Referenced by osg::Window::draw(), osg::FBOViewport::render(), and osg::RenderAction::start().

01712 {
01713     if ( isResizePending () )
01714     {
01715         glViewport( 0, 0, getWidth(), getHeight() );
01716         WindowPtr win(*this);
01717         beginEditCP(win, ResizePendingFieldMask);
01718         setResizePending( false );
01719         endEditCP  (win, ResizePendingFieldMask);
01720     }
01721 }

void osg::Window::setSize ( UInt16  width,
UInt16  height 
) [inline, inherited]

Set the width and height of the Window. Only use if you really know what you're doing. In most cases resize() is a better choice.

Definition at line 50 of file OSGWindow.inl.

References osg::WindowBase::setHeight(), and osg::WindowBase::setWidth().

Referenced by clientPreSync().

00051 {
00052     setHeight(height);
00053     setWidth(width);
00054 }

void osg::Window::draw ( DrawAction action = NULL  )  [virtual, inherited]

Draw the Window using the given DrawAction.

It takes care of all initialisation and cleanup functions and contains just 6 lines of code. If you know that the correct context is active or you want to delay swaps you can just copy and manipulate it.

Definition at line 1603 of file OSGWindow.cpp.

References osg::Window::activate(), osg::Window::drawAllViewports(), osg::Window::frameExit(), osg::Window::frameInit(), osg::Window::resizeGL(), and osg::Window::swap().

01604 {
01605     activate();
01606     frameInit();    // query recently registered GL extensions
01607     
01608     resizeGL();
01609 
01610     drawAllViewports(action);
01611 
01612     swap();
01613     frameExit();    // after frame cleanup: delete GL objects, if needed
01614 }

void osg::Window::drawAllViewports ( DrawAction action = NULL  )  [virtual, inherited]

Draw all the Viewports of the Window using the given DrawAction.

A simple convenience function that loops all Viewports and call their draw method.

Definition at line 1621 of file OSGWindow.cpp.

References osg::WindowBase::_mfPort, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::DrawActionBase::setWindow(), and SWARNING.

Referenced by osg::Window::draw().

01622 {
01623     MFViewportPtr::iterator       portIt  = _mfPort.begin();
01624     MFViewportPtr::const_iterator portEnd = _mfPort.end();
01625 
01626     if(action != NULL)
01627     {
01628         action->setWindow(this);
01629         
01630         while(portIt != portEnd)
01631         {
01632             (*portIt)->draw(action);
01633 
01634             ++portIt;
01635         }
01636     }
01637     else
01638     {
01639         SWARNING << "Window::drawAllViewports: no action!" << std::endl;
01640     }
01641 }

void osg::Window::setupGL ( void   )  [protected, virtual, inherited]

Initialize the OpenGL state OpenSG expects. This should be called once whenever a new Window is opened.

Don't call it directly, call the Window System-specific init() method instead.

Definition at line 1577 of file OSGWindow.cpp.

References osg::Window::frameInit().

Referenced by osg::XWindow::init(), osg::QTWindow::init(), and osg::PassiveWindow::init().

01578 {   
01579     glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
01580     glPixelStorei( GL_PACK_ALIGNMENT, 1 );
01581     
01582     glDepthFunc( GL_LEQUAL );
01583     glEnable( GL_DEPTH_TEST );
01584     
01585     glEnable( GL_NORMALIZE );
01586     
01587     // switch off default light
01588     GLfloat nul[4]={0,0,0,0};
01589     glLightfv(GL_LIGHT0, GL_DIFFUSE, nul);
01590     glLightfv(GL_LIGHT0, GL_SPECULAR, nul);
01591     
01592     frameInit();    // call it to setup extensions
01593 }

static void osg::Window::initRegisterGLObject ( UInt32  id,
UInt32  num 
) [static, protected, inherited]

UInt32 osg::Window::packIdStatus ( UInt32  osgId,
GLObjectStatusE  status 
) [inline, static, protected, inherited]

Pack the id and the status into one UInt32. Used to pass the id and status to the actual implementation functions.

Definition at line 219 of file OSGWindow.inl.

References osg::Window::statusShift.

Referenced by osg::Window::frameExit().

00220 {
00221     return (osgId << statusShift) | status;
00222 }

void osg::Window::doInitRegisterGLObject ( UInt32  id,
UInt32  num 
) [protected, inherited]

void osg::FieldContainer::onCreate ( const FieldContainer source = NULL  )  [inline, protected, inherited]

Definition at line 318 of file OSGFieldContainerImpl.inl.

Referenced by osg::ShaderParameterChunk::onCreate().

00319 {
00320 }

void osg::FieldContainer::onCreateAspect ( const FieldContainer aspect0,
const FieldContainer source = NULL 
) [inline, protected, inherited]

Definition at line 323 of file OSGFieldContainerImpl.inl.

00325 {
00326 }

SFUInt16 * osg::WindowBase::getSFWidth ( void   )  [inline, inherited]

Definition at line 75 of file OSGWindowBase.inl.

References osg::WindowBase::_sfWidth.

00076 {
00077     return &_sfWidth;
00078 }

SFUInt16 * osg::WindowBase::getSFHeight ( void   )  [inline, inherited]

Definition at line 82 of file OSGWindowBase.inl.

References osg::WindowBase::_sfHeight.

00083 {
00084     return &_sfHeight;
00085 }

MFViewportPtr * osg::WindowBase::getMFPort ( void   )  [inline, inherited]

Definition at line 89 of file OSGWindowBase.inl.

References osg::WindowBase::_mfPort.

00090 {
00091     return &_mfPort;
00092 }

SFBool * osg::WindowBase::getSFResizePending ( void   )  [inline, inherited]

Definition at line 96 of file OSGWindowBase.inl.

References osg::WindowBase::_sfResizePending.

00097 {
00098     return &_sfResizePending;
00099 }

UInt16 & osg::WindowBase::getWidth ( void   )  [inline, inherited]

const UInt16 & osg::WindowBase::getWidth ( void   )  const [inline, inherited]

Definition at line 132 of file OSGWindowBase.inl.

References osg::WindowBase::_sfWidth, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00133 {
00134     return _sfWidth.getValue();
00135 }

UInt16 & osg::WindowBase::getHeight ( void   )  [inline, inherited]

const UInt16 & osg::WindowBase::getHeight ( void   )  const [inline, inherited]

Definition at line 153 of file OSGWindowBase.inl.

References osg::WindowBase::_sfHeight, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00154 {
00155     return _sfHeight.getValue();
00156 }

bool & osg::WindowBase::getResizePending ( void   )  [inline, inherited]

Definition at line 167 of file OSGWindowBase.inl.

References osg::WindowBase::_sfResizePending, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00168 {
00169     return _sfResizePending.getValue();
00170 }

const bool & osg::WindowBase::getResizePending ( void   )  const [inline, inherited]

Definition at line 174 of file OSGWindowBase.inl.

References osg::WindowBase::_sfResizePending, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00175 {
00176     return _sfResizePending.getValue();
00177 }

ViewportPtr & osg::WindowBase::getPort ( const UInt32  index  )  [inline, inherited]

Definition at line 210 of file OSGWindowBase.inl.

References osg::WindowBase::_mfPort.

Referenced by osg::FBOViewport::render().

00211 {
00212     return _mfPort[index];
00213 }

MFViewportPtr & osg::WindowBase::getPort ( void   )  [inline, inherited]

const MFViewportPtr & osg::WindowBase::getPort ( void   )  const [inline, inherited]

Definition at line 224 of file OSGWindowBase.inl.

References osg::WindowBase::_mfPort.

00225 {
00226     return _mfPort;
00227 }

void osg::WindowBase::setWidth ( const UInt16 value  )  [inline, inherited]

void osg::WindowBase::setHeight ( const UInt16 value  )  [inline, inherited]

void osg::WindowBase::setResizePending ( const bool &  value  )  [inline, inherited]

SFUInt32 * osg::WindowBase::getSFGlObjectEventCounter ( void   )  [inline, protected, inherited]

Definition at line 103 of file OSGWindowBase.inl.

References osg::WindowBase::_sfGlObjectEventCounter.

00104 {
00105     return &_sfGlObjectEventCounter;
00106 }

MFUInt32 * osg::WindowBase::getMFGlObjectLastRefresh ( void   )  [inline, protected, inherited]

Definition at line 110 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastRefresh.

00111 {
00112     return &_mfGlObjectLastRefresh;
00113 }

MFUInt32 * osg::WindowBase::getMFGlObjectLastReinitialize ( void   )  [inline, protected, inherited]

Definition at line 117 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastReinitialize.

00118 {
00119     return &_mfGlObjectLastReinitialize;
00120 }

UInt32 & osg::WindowBase::getGlObjectEventCounter ( void   )  [inline, protected, inherited]

Definition at line 188 of file OSGWindowBase.inl.

References osg::WindowBase::_sfGlObjectEventCounter, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00189 {
00190     return _sfGlObjectEventCounter.getValue();
00191 }

const UInt32 & osg::WindowBase::getGlObjectEventCounter ( void   )  const [inline, protected, inherited]

Definition at line 195 of file OSGWindowBase.inl.

References osg::WindowBase::_sfGlObjectEventCounter, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00196 {
00197     return _sfGlObjectEventCounter.getValue();
00198 }

UInt32 & osg::WindowBase::getGlObjectLastRefresh ( UInt32  index  )  [inline, protected, inherited]

Definition at line 231 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastRefresh.

00232 {
00233     return _mfGlObjectLastRefresh[index];
00234 }

MFUInt32 & osg::WindowBase::getGlObjectLastRefresh ( void   )  [inline, protected, inherited]

Definition at line 238 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastRefresh.

00239 {
00240     return _mfGlObjectLastRefresh;
00241 }

const MFUInt32 & osg::WindowBase::getGlObjectLastRefresh ( void   )  const [inline, protected, inherited]

Definition at line 245 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastRefresh.

00246 {
00247     return _mfGlObjectLastRefresh;
00248 }

UInt32 & osg::WindowBase::getGlObjectLastReinitialize ( UInt32  index  )  [inline, protected, inherited]

Definition at line 252 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastReinitialize.

00253 {
00254     return _mfGlObjectLastReinitialize[index];
00255 }

MFUInt32 & osg::WindowBase::getGlObjectLastReinitialize ( void   )  [inline, protected, inherited]

Definition at line 259 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastReinitialize.

Referenced by osg::Window::frameExit(), and osg::Window::onDestroy().

00260 {
00261     return _mfGlObjectLastReinitialize;
00262 }

const MFUInt32 & osg::WindowBase::getGlObjectLastReinitialize ( void   )  const [inline, protected, inherited]

Definition at line 266 of file OSGWindowBase.inl.

References osg::WindowBase::_mfGlObjectLastReinitialize.

00267 {
00268     return _mfGlObjectLastReinitialize;
00269 }

void osg::WindowBase::setGlObjectEventCounter ( const UInt32 value  )  [inline, protected, inherited]

void AttachmentContainer::addAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 84 of file OSGAttachmentContainer.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, and osg::subRefCP().

Referenced by osg::AttachmentContainer::AttachmentContainer(), osg::Node::onCreate(), and osg::Image::setAttachmentField().

00086 {
00087     UInt32 key;
00088 
00089     if(fieldContainerP == NullFC)
00090         return;
00091 
00092     key = (UInt32 (fieldContainerP->getGroupId()) << 16) | binding;
00093 
00094     addRefCP(fieldContainerP);
00095 
00096     beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00097     {
00098         fieldContainerP->addParent(getPtr());
00099     }
00100     endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00101 
00102     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00103 
00104     if(fcI != _attachmentMap.getValue().end())
00105     {
00106         beginEditCP((*fcI).second, Attachment::ParentsFieldMask);
00107         {
00108             (*fcI).second->subParent(getPtr());
00109         }
00110         endEditCP  ((*fcI).second, Attachment::ParentsFieldMask);
00111 
00112         subRefCP((*fcI).second);
00113 
00114         (*fcI).second = fieldContainerP;
00115     }
00116     else
00117     {
00118         _attachmentMap.getValue()[key] = fieldContainerP;
00119     }
00120 }

void AttachmentContainer::subAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 122 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::beginEditCP(), osg::endEditCP(), osg::AttachmentContainer::getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, osg::Attachment::ParentsFieldMask, and osg::subRefCP().

00124 {
00125     UInt32 key;
00126 
00127     AttachmentMap::iterator fcI;
00128 
00129     if(fieldContainerP == NullFC)
00130         return;
00131 
00132     key = (UInt32(fieldContainerP->getGroupId()) << 16) | binding;
00133 
00134     fcI = _attachmentMap.getValue().find(key);
00135 
00136     if(fcI != _attachmentMap.getValue().end())
00137     {
00138         beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00139         {
00140             (*fcI).second->subParent(getPtr());
00141         }
00142         endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00143 
00144         subRefCP((*fcI).second);
00145 
00146         _attachmentMap.getValue().erase(fcI);
00147     }
00148 }

AttachmentPtr AttachmentContainer::findAttachment ( UInt32  groupId,
UInt16  binding = 0 
) [inherited]

Definition at line 150 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and osg::NullFC.

Referenced by osg::Image::findAttachmentField(), and osg::Image::setAttachmentField().

00152 {
00153     UInt32 key = (UInt32(groupId) << 16) | binding;
00154 
00155     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00156 
00157     if(fcI == _attachmentMap.getValue().end())
00158     {
00159         return NullFC;
00160     }
00161     else
00162     {
00163         return (*fcI).second;
00164     }
00165 }

AttachmentPtr osg::AttachmentContainer::findAttachment ( const FieldContainerType type,
UInt16  binding = 0 
) [inline, inherited]

Definition at line 57 of file OSGAttachmentContainerImpl.inl.

00060 {
00061     return findAttachment(type.getGroupId(), binding);
00062 }

SFAttachmentMap * AttachmentContainer::getSFAttachments ( void   )  [inherited]

Field Access

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

AttachmentContainerPtr AttachmentContainer::getPtr ( void   )  [protected, inherited]

UInt16 osg::FieldContainer::getClassGroupId ( void   )  [inline, static, inherited]

Definition at line 71 of file OSGFieldContainerImpl.inl.

References osg::FieldContainer::_type, and osg::FieldContainerType::getGroupId().

00072 {
00073     return _type.getGroupId();
00074 }

UInt32 osg::FieldContainer::getTypeId ( void   )  const [inline, inherited]

Definition at line 77 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getId(), and osg::FieldContainer::getType().

Referenced by osg::TextureChunk::changeFrom(), and osg::CubeTextureChunk::changeFrom().

00078 {
00079     return getType().getId();
00080 }

UInt16 osg::FieldContainer::getGroupId ( void   )  const [inline, inherited]

const Char8 * osg::FieldContainer::getTypeName ( void   )  const [inline, inherited]

Definition at line 89 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getCName(), and osg::FieldContainer::getType().

00090 {
00091     return getType().getCName();
00092 }

Field * osg::FieldContainer::getField ( UInt32  fieldId  )  [inline, inherited]

Generic Field Access

Definition at line 95 of file OSGFieldContainerImpl.inl.

References osg::FieldDescription::getField(), osg::FieldContainerType::getFieldDescription(), and osg::FieldContainer::getType().

Referenced by osg::QFCItem::expand(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::QFieldViewBase::getFieldPtr(), osg::QFieldEditorBase::getFieldPtr(), osg::getParentsField(), and osg::QFCItem::setup().

00096 {
00097     const FieldDescription *desc = getType().getFieldDescription(fieldId);
00098 
00099     return desc ? desc->getField(*this) : NULL;
00100 }

Field * osg::FieldContainer::getField ( const Char8 fieldName  )  [inline, inherited]

Generic Field Access

Definition at line 103 of file OSGFieldContainerImpl.inl.

References osg::FieldContainerType::findFieldDescription(), osg::FieldDescription::getField(), and osg::FieldContainer::getType().

00104 {
00105     const FieldDescription *desc =getType().findFieldDescription(fieldName);
00106 
00107     return desc ? desc->getField(*this) : NULL;
00108 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result,
const typename ObjectPtrT::StoredObjectType *  prototypeP 
) [inline, static, protected, inherited]

Definition at line 138 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

Referenced by osg::XWindowBase::createEmpty(), osg::WIN32WindowBase::createEmpty(), osg::ViewportBase::createEmpty(), osg::VertexProgramChunkBase::createEmpty(), osg::TwoSidedLightingChunkBase::createEmpty(), osg::TransformChunkBase::createEmpty(), osg::TransformBase::createEmpty(), osg::TileCameraDecoratorBase::createEmpty(), osg::TextureTransformChunkBase::createEmpty(), osg::TextureGrabForegroundBase::createEmpty(), osg::TextureGrabBackgroundBase::createEmpty(), osg::TextureChunkBase::createEmpty(), osg::TextureBackgroundBase::createEmpty(), osg::TexGenChunkBase::createEmpty(), osg::SwitchMaterialBase::createEmpty(), osg::SwitchBase::createEmpty(), osg::SurfaceBase::createEmpty(), osg::StringAttributeMapBase::createEmpty(), osg::StereoBufferViewportBase::createEmpty(), osg::StencilChunkBase::createEmpty(), osg::StateSortingGroupBase::createEmpty(), osg::StateBase::createEmpty(), osg::SpotLightBase::createEmpty(), osg::SortFirstWindowBase::createEmpty(), osg::SolidBackgroundBase::createEmpty(), osg::SlicesBase::createEmpty(), osg::SkyBackgroundBase::createEmpty(), osg::SimpleTexturedMaterialBase::createEmpty(), osg::SimpleStatisticsForegroundBase::createEmpty(), osg::SimpleMaterialBase::createEmpty(), osg::SHLParameterChunkBase::createEmpty(), osg::SHLChunkBase::createEmpty(), osg::ShearedStereoCameraDecoratorBase::createEmpty(), osg::ShaderParameterVec4fBase::createEmpty(), osg::ShaderParameterVec3fBase::createEmpty(), osg::ShaderParameterVec2fBase::createEmpty(), osg::ShaderParameterStringBase::createEmpty(), osg::ShaderParameterRealBase::createEmpty(), osg::ShaderParameterMVec4fBase::createEmpty(), osg::ShaderParameterMVec3fBase::createEmpty(), osg::ShaderParameterMVec2fBase::createEmpty(), osg::ShaderParameterMRealBase::createEmpty(), osg::ShaderParameterMMatrixBase::createEmpty(), osg::ShaderParameterMIntBase::createEmpty(), osg::ShaderParameterMatrixBase::createEmpty(), osg::ShaderParameterIntBase::createEmpty(), osg::ShaderParameterBoolBase::createEmpty(), osg::ScreenGroupBase::createEmpty(), osg::SClipPlaneChunkBase::createEmpty(), osg::ResolutionDisplayFilterBase::createEmpty(), osg::RenderOptionsBase::createEmpty(), osg::RegisterCombinersChunkBase::createEmpty(), osg::QTWindowBase::createEmpty(), osg::ProxyGroupBase::createEmpty(), osg::ProjectionCameraDecoratorBase::createEmpty(), osg::PolygonForegroundBase::createEmpty(), osg::PolygonChunkBase::createEmpty(), osg::PolygonBackgroundBase::createEmpty(), osg::PointLightBase::createEmpty(), osg::PointChunkBase::createEmpty(), osg::PhongMaterialBase::createEmpty(), osg::PerspectiveCameraBase::createEmpty(), osg::PassiveWindowBase::createEmpty(), osg::PassiveViewportBase::createEmpty(), osg::PassiveBackgroundBase::createEmpty(), osg::ParticlesBase::createEmpty(), osg::OrthographicCameraBase::createEmpty(), osg::OffCenterPerspectiveCameraBase::createEmpty(), osg::MultiPassMaterialBase::createEmpty(), osg::MultiDisplayWindowBase::createEmpty(), osg::MatrixCameraDecoratorBase::createEmpty(), osg::MatrixCameraBase::createEmpty(), osg::MaterialPoolBase::createEmpty(), osg::MaterialGroupBase::createEmpty(), osg::MaterialChunkBase::createEmpty(), osg::LogicOpChunkBase::createEmpty(), osg::LineChunkBase::createEmpty(), osg::LightModelChunkBase::createEmpty(), osg::LightEnvBase::createEmpty(), osg::LightChunkBase::createEmpty(), osg::InverseTransformBase::createEmpty(), osg::InlineBase::createEmpty(), osg::ImageForegroundBase::createEmpty(), osg::ImageBase::createEmpty(), osg::ImageBackgroundBase::createEmpty(), osg::GroupBase::createEmpty(), osg::GraphicStatisticsForegroundBase::createEmpty(), osg::GradientBackgroundBase::createEmpty(), osg::GrabForegroundBase::createEmpty(), osg::GLUTWindowBase::createEmpty(), osg::GeometryBase::createEmpty(), osg::FresnelMaterialBase::createEmpty(), osg::FragmentProgramChunkBase::createEmpty(), osg::FileGrabForegroundBase::createEmpty(), osg::FCPtrAttributeMapBase::createEmpty(), osg::FBOViewportBase::createEmpty(), osg::FatBorderChunkBase::createEmpty(), osg::DVRVolumeTextureBase::createEmpty(), osg::DVRVolumeBase::createEmpty(), osg::DVRSimpleShaderBase::createEmpty(), osg::DVRSimpleLUTShaderBase::createEmpty(), osg::DVRMtexLUTShaderBase::createEmpty(), osg::DVRLookupTableBase::createEmpty(), osg::DVRIsoSurfaceBase::createEmpty(), osg::DVRIsoShaderBase::createEmpty(), osg::DVRGeometryBase::createEmpty(), osg::DVRClipObjectsBase::createEmpty(), osg::DVRClipGeometryBase::createEmpty(), osg::DVRAppearanceBase::createEmpty(), osg::DistortionDisplayFilterBase::createEmpty(), osg::DistanceLODBase::createEmpty(), osg::DisplayFilterForegroundBase::createEmpty(), osg::DisplayCalibrationBase::createEmpty(), osg::DirectionalLightBase::createEmpty(), osg::DepthClearBackgroundBase::createEmpty(), osg::DepthChunkBase::createEmpty(), osg::CubeTextureChunkBase::createEmpty(), osg::ComponentTransformBase::createEmpty(), osg::ColorMaskChunkBase::createEmpty(), osg::ColorDisplayFilterBase::createEmpty(), osg::ColorBufferViewportBase::createEmpty(), osg::ClusterWindowBase::createEmpty(), osg::ClipPlaneChunkBase::createEmpty(), osg::ClipPlaneBase::createEmpty(), osg::ChunkMaterialBase::createEmpty(), osg::BlendChunkBase::createEmpty(), osg::BillboardBase::createEmpty(), osg::XWindowBase::shallowCopy(), osg::WIN32WindowBase::shallowCopy(), osg::ViewportBase::shallowCopy(), osg::VertexProgramChunkBase::shallowCopy(), osg::TwoSidedLightingChunkBase::shallowCopy(), osg::TransformChunkBase::shallowCopy(), osg::TransformBase::shallowCopy(), osg::TileCameraDecoratorBase::shallowCopy(), osg::TextureTransformChunkBase::shallowCopy(), osg::TextureGrabForegroundBase::shallowCopy(), osg::TextureGrabBackgroundBase::shallowCopy(), osg::TextureChunkBase::shallowCopy(), osg::TextureBackgroundBase::shallowCopy(), osg::TexGenChunkBase::shallowCopy(), osg::SwitchMaterialBase::shallowCopy(), osg::SwitchBase::shallowCopy(), osg::SurfaceBase::shallowCopy(), osg::StringAttributeMapBase::shallowCopy(), osg::StereoBufferViewportBase::shallowCopy(), osg::StencilChunkBase::shallowCopy(), osg::StateSortingGroupBase::shallowCopy(), osg::StateBase::shallowCopy(), osg::SpotLightBase::shallowCopy(), osg::SortFirstWindowBase::shallowCopy(), osg::SolidBackgroundBase::shallowCopy(), osg::SlicesBase::shallowCopy(), osg::SkyBackgroundBase::shallowCopy(), osg::SimpleTexturedMaterialBase::shallowCopy(), osg::SimpleStatisticsForegroundBase::shallowCopy(), osg::SimpleMaterialBase::shallowCopy(), osg::SHLParameterChunkBase::shallowCopy(), osg::SHLChunkBase::shallowCopy(), osg::ShearedStereoCameraDecoratorBase::shallowCopy(), osg::ShaderParameterVec4fBase::shallowCopy(), osg::ShaderParameterVec3fBase::shallowCopy(), osg::ShaderParameterVec2fBase::shallowCopy(), osg::ShaderParameterStringBase::shallowCopy(), osg::ShaderParameterRealBase::shallowCopy(), osg::ShaderParameterMVec4fBase::shallowCopy(), osg::ShaderParameterMVec3fBase::shallowCopy(), osg::ShaderParameterMVec2fBase::shallowCopy(), osg::ShaderParameterMRealBase::shallowCopy(), osg::ShaderParameterMMatrixBase::shallowCopy(), osg::ShaderParameterMIntBase::shallowCopy(), osg::ShaderParameterMatrixBase::shallowCopy(), osg::ShaderParameterIntBase::shallowCopy(), osg::ShaderParameterBoolBase::shallowCopy(), osg::ScreenGroupBase::shallowCopy(), osg::SClipPlaneChunkBase::shallowCopy(), osg::ResolutionDisplayFilterBase::shallowCopy(), osg::RenderOptionsBase::shallowCopy(), osg::RegisterCombinersChunkBase::shallowCopy(), osg::QTWindowBase::shallowCopy(), osg::ProxyGroupBase::shallowCopy(), osg::ProjectionCameraDecoratorBase::shallowCopy(), osg::PolygonForegroundBase::shallowCopy(), osg::PolygonChunkBase::shallowCopy(), osg::PolygonBackgroundBase::shallowCopy(), osg::PointLightBase::shallowCopy(), osg::PointChunkBase::shallowCopy(), osg::PhongMaterialBase::shallowCopy(), osg::PerspectiveCameraBase::shallowCopy(), osg::PassiveWindowBase::shallowCopy(), osg::PassiveViewportBase::shallowCopy(), osg::PassiveBackgroundBase::shallowCopy(), osg::ParticlesBase::shallowCopy(), osg::OrthographicCameraBase::shallowCopy(), osg::OffCenterPerspectiveCameraBase::shallowCopy(), osg::MultiPassMaterialBase::shallowCopy(), osg::MultiDisplayWindowBase::shallowCopy(), osg::MatrixCameraDecoratorBase::shallowCopy(), osg::MatrixCameraBase::shallowCopy(), osg::MaterialPoolBase::shallowCopy(), osg::MaterialGroupBase::shallowCopy(), osg::MaterialChunkBase::shallowCopy(), osg::LogicOpChunkBase::shallowCopy(), osg::LineChunkBase::shallowCopy(), osg::LightModelChunkBase::shallowCopy(), osg::LightEnvBase::shallowCopy(), osg::LightChunkBase::shallowCopy(), osg::InverseTransformBase::shallowCopy(), osg::InlineBase::shallowCopy(), osg::ImageForegroundBase::shallowCopy(), osg::ImageBase::shallowCopy(), osg::ImageBackgroundBase::shallowCopy(), osg::GroupBase::shallowCopy(), osg::GraphicStatisticsForegroundBase::shallowCopy(), osg::GradientBackgroundBase::shallowCopy(), osg::GrabForegroundBase::shallowCopy(), osg::GLUTWindowBase::shallowCopy(), osg::GeometryBase::shallowCopy(), osg::FresnelMaterialBase::shallowCopy(), osg::FragmentProgramChunkBase::shallowCopy(), osg::FileGrabForegroundBase::shallowCopy(), osg::FCPtrAttributeMapBase::shallowCopy(), osg::FBOViewportBase::shallowCopy(), osg::FatBorderChunkBase::shallowCopy(), osg::DVRVolumeTextureBase::shallowCopy(), osg::DVRVolumeBase::shallowCopy(), osg::DVRSimpleShaderBase::shallowCopy(), osg::DVRSimpleLUTShaderBase::shallowCopy(), osg::DVRMtexLUTShaderBase::shallowCopy(), osg::DVRLookupTableBase::shallowCopy(), osg::DVRIsoSurfaceBase::shallowCopy(), osg::DVRIsoShaderBase::shallowCopy(), osg::DVRGeometryBase::shallowCopy(), osg::DVRClipObjectsBase::shallowCopy(), osg::DVRClipGeometryBase::shallowCopy(), osg::DVRAppearanceBase::shallowCopy(), osg::DistortionDisplayFilterBase::shallowCopy(), osg::DistanceLODBase::shallowCopy(), osg::DisplayFilterForegroundBase::shallowCopy(), osg::DisplayCalibrationBase::shallowCopy(), osg::DirectionalLightBase::shallowCopy(), osg::DepthClearBackgroundBase::shallowCopy(), osg::DepthChunkBase::shallowCopy(), osg::CubeTextureChunkBase::shallowCopy(), osg::ComponentTransformBase::shallowCopy(), osg::ColorMaskChunkBase::shallowCopy(), osg::ColorDisplayFilterBase::shallowCopy(), osg::ColorBufferViewportBase::shallowCopy(), osg::ClusterWindowBase::shallowCopy(), osg::ClipPlaneChunkBase::shallowCopy(), osg::ClipPlaneBase::shallowCopy(), osg::ChunkMaterialBase::shallowCopy(), osg::BlendChunkBase::shallowCopy(), and osg::BillboardBase::shallowCopy().

00141 {
00142     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00143     
00144     UInt8 *pTmp;
00145     
00146     result._containerSize = sizeof(ObjectType);
00147     
00148     pTmp        = 
00149         static_cast<UInt8 *>(operator new(
00150             sizeof(Int32)      + // ReferenceCount
00151             sizeof(UInt32)     + // ContainerId
00152             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00153     
00154     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00155     
00156     pTmp += sizeof(Int32);
00157     
00158     result._storeP = (pTmp + sizeof(UInt32));
00159 
00160 #ifdef OSG_DEBUG_FCPTR
00161     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00162 #endif
00163 
00164     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00165         FieldContainerFactory::the()->registerFieldContainer(result);
00166     
00167     Thread::getCurrentChangeList()->addCreated(
00168         *(reinterpret_cast<UInt32 *>(pTmp)));
00169     
00170     pTmp += sizeof(UInt32);
00171     
00172     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00173 
00174     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00175     {
00176         pTmp = 
00177             reinterpret_cast<UInt8 *>(new (pTmp) ObjectType(*prototypeP));
00178         
00179         pTmp += sizeof(ObjectType);
00180     }
00181     
00182     result->onCreate(prototypeP);
00183 
00184     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00185     {
00186         aObject[i].onCreateAspect(aObject, prototypeP);
00187     }
00188 
00189 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00190 
00191     fprintf(stderr, "GV_MEM_FC_DBG : (%u) cc (%p|%u)\n", 
00192             Thread::getAspect(),
00193             result._storeP,
00194 //            ObjectType::getClassType().getCName(),
00195             ObjectType::getClassType().getId());
00196 #endif
00197 
00198 #ifdef OSG_DEBUG_TYPED_FCPTR
00199     result.updateTypedStore();
00200 #endif
00201 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result  )  [inline, static, protected, inherited]

Definition at line 204 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

00205 {
00206     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00207     
00208     UInt8 *pTmp;
00209     
00210     result._containerSize = sizeof(ObjectType);
00211     
00212     pTmp        =             
00213         static_cast<UInt8 *>(operator new(
00214             sizeof(Int32)      + // ReferenceCount
00215             sizeof(UInt32)     + // ContainerId
00216             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00217     
00218     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00219     
00220     pTmp  += sizeof(Int32);
00221     
00222     result._storeP = (pTmp + sizeof(UInt32));
00223     
00224 #ifdef OSG_DEBUG_FCPTR
00225     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00226 #endif
00227 
00228     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00229         FieldContainerFactory::the()->registerFieldContainer(result);
00230     
00231     Thread::getCurrentChangeList()->addCreated(
00232         *(reinterpret_cast<UInt32 *>(pTmp)));
00233     
00234     pTmp += sizeof(UInt32);
00235     
00236     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00237 
00238     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00239     {
00240         pTmp = reinterpret_cast<UInt8 *>(new (pTmp) ObjectType());
00241         
00242         pTmp += sizeof(ObjectType);
00243     }
00244     
00245     result->onCreate();
00246     
00247     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00248     {
00249         aObject[i].onCreateAspect(aObject);
00250     }
00251 
00252 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00253     fprintf(stderr, "GV_MEM_FC_DBG : (%u) c (%p|%u)\n", 
00254             Thread::getAspect(),
00255             result._storeP,
00256 //            ObjectType::getClassType().getCName(),
00257             ObjectType::getClassType().getId());
00258 #endif
00259     
00260 #ifdef OSG_DEBUG_TYPED_FCPTR
00261     result.updateTypedStore();
00262 #endif
00263 }

template<class FieldTypeT>
void osg::FieldContainer::beginEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 285 of file OSGFieldContainerImpl.inl.

00286 {
00287 //    fieldR.beginEdit();
00288 }

template<class FieldTypeT>
void osg::FieldContainer::endEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 291 of file OSGFieldContainerImpl.inl.

References osg::endEditCP().

00292 {
00293     FieldContainerPtr tmpPtr(this);
00294     endEditCP(tmpPtr, whichField);
00295 }


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::SortFirstWindowBase.

Definition at line 133 of file OSGSortFirstWindow.h.

friend class SortFirstWindowBase [friend]

Definition at line 134 of file OSGSortFirstWindow.h.

friend class GLObject [friend, inherited]

Definition at line 294 of file OSGWindow.h.


Member Data Documentation

Definition at line 129 of file OSGSortFirstWindow.h.

Referenced by clientSwap(), and serverRender().

Definition at line 130 of file OSGSortFirstWindow.h.

Referenced by clientInit(), clientPreSync(), and ~SortFirstWindow().

Definition at line 131 of file OSGSortFirstWindow.h.

Referenced by ~SortFirstWindow().

Initial value:

 
    (Inherited::MTInfluenceMask) | 
    (static_cast<BitVector>(0x0) << Inherited::NextFieldId)

Reimplemented from osg::ClusterWindowBase.

Definition at line 113 of file OSGSortFirstWindowBase.h.

std::string SortFirstWindowBase::_sfCompression [protected, inherited]

bool SortFirstWindowBase::_sfCompose [protected, inherited]

UInt32 SortFirstWindowBase::_mfRegion [protected, inherited]

bool SortFirstWindowBase::_sfUseFaceDistribution [protected, inherited]

bool osg::ClusterWindow::_firstFrame [protected, inherited]

Definition at line 185 of file OSGClusterWindow.h.

Referenced by osg::ClusterWindow::frameInit().

std::string osg::ClusterWindowBase::_mfServers [protected, inherited]

std::string osg::ClusterWindowBase::_sfConnectionType [protected, inherited]

std::string osg::ClusterWindowBase::_sfConnectionInterface [protected, inherited]

std::string osg::ClusterWindowBase::_sfConnectionDestination [protected, inherited]

std::string osg::ClusterWindowBase::_sfConnectionParams [protected, inherited]

std::string osg::ClusterWindowBase::_sfServiceAddress [protected, inherited]

std::string osg::ClusterWindowBase::_sfServiceInterface [protected, inherited]

std::string osg::ClusterWindowBase::_mfAutostart [protected, inherited]

bool osg::ClusterWindowBase::_sfDirty [protected, inherited]

const Real32 osg::Window::unknownConstant = -1e100 [static, inherited]

const osg::BitVector WindowBase::WidthFieldMask [static, inherited]

const osg::BitVector WindowBase::HeightFieldMask [static, inherited]

const osg::BitVector WindowBase::PortFieldMask [static, inherited]

UInt16 WindowBase::_sfWidth [protected, inherited]

UInt16 WindowBase::_sfHeight [protected, inherited]

ViewportPtr WindowBase::_mfPort [protected, inherited]

bool WindowBase::_sfResizePending [protected, inherited]

Counter for GL object events. Needed for multi-aspect updates. Is used in glObjectLastRefresh and glObjectLastReinitialize.

Definition at line 196 of file OSGWindowBase.h.

Referenced by osg::WindowBase::copyFromBin(), osg::WindowBase::copyToBin(), osg::WindowBase::executeSyncImpl(), osg::WindowBase::getBinSize(), osg::WindowBase::getGlObjectEventCounter(), osg::WindowBase::getSFGlObjectEventCounter(), and osg::WindowBase::setGlObjectEventCounter().

const BitVector osg::FieldContainer::NextFieldMask [static, inherited]

Initial value:

 
                    (TypeTraits<BitVector>::One << NextFieldId)

Definition at line 75 of file OSGFieldContainerImpl.h.

const bool osg::FieldContainer::isNodeCore = false [static, inherited]

Reimplemented in osg::NodeCore.

Definition at line 181 of file OSGFieldContainerImpl.h.

UInt32 osg::FieldContainer::_shares [protected, inherited]

Definition at line 199 of file OSGFieldContainerImpl.h.


The documentation for this class was generated from the following files:

Generated on Mon Mar 17 11:11:40 2008 for OpenSG by  doxygen 1.5.5