Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::TextureGrabBackground Class Reference
[Backgrounds]

TextureGrabBackground class. See PageWindowGLUTTextureGrabBackground for a description. More...

#include <OSGTextureGrabBackground.h>

Inheritance diagram for osg::TextureGrabBackground:

osg::TextureGrabBackgroundBase osg::SolidBackground osg::SolidBackgroundBase osg::Background osg::BackgroundBase osg::AttachmentContainer osg::FieldContainer List of all members.

Public Types

typedef TextureGrabBackgroundPtr Ptr
enum  {
  TextureFieldId = Inherited::NextFieldId, AutoResizeFieldId = TextureFieldId + 1, BindTargetFieldId = AutoResizeFieldId + 1, CopyTargetFieldId = BindTargetFieldId + 1,
  NextFieldId = CopyTargetFieldId + 1
}

Public Member Functions

Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
Clear
*void clear (DrawActionBase *, Viewport *)
Sync
*virtual void changed (BitVector whichField, UInt32 origin)
Output
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get
*virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get
*SFTextureChunkPtrgetSFTexture (void)
 Get the TextureGrabBackground::_sfTexture field.
SFBoolgetSFAutoResize (void)
 Get the TextureGrabBackground::_sfAutoResize field.
SFGLenumgetSFBindTarget (void)
 Get the TextureGrabBackground::_sfBindTarget field.
SFGLenumgetSFCopyTarget (void)
 Get the TextureGrabBackground::_sfCopyTarget field.
TextureChunkPtrgetTexture (void)
 Get the value of the TextureGrabBackground::_sfTexture field.
const TextureChunkPtrgetTexture (void) const
 Get the value of the TextureGrabBackground::_sfTexture field.
bool & getAutoResize (void)
 Get the value of the TextureGrabBackground::_sfAutoResize field.
const bool & getAutoResize (void) const
 Get the value of the TextureGrabBackground::_sfAutoResize field.
GLenumgetBindTarget (void)
 Get the value of the TextureGrabBackground::_sfBindTarget field.
const GLenumgetBindTarget (void) const
 Get the value of the TextureGrabBackground::_sfBindTarget field.
GLenumgetCopyTarget (void)
 Get the value of the TextureGrabBackground::_sfCopyTarget field.
const GLenumgetCopyTarget (void) const
 Get the value of the TextureGrabBackground::_sfCopyTarget field.
Field Set
*void setTexture (const TextureChunkPtr &value)
 Set the value of the TextureGrabBackground::_sfTexture field.
void setAutoResize (const bool &value)
 Set the value of the TextureGrabBackground::_sfAutoResize field.
void setBindTarget (const GLenum &value)
 Set the value of the TextureGrabBackground::_sfBindTarget field.
void setCopyTarget (const GLenum &value)
 Set the value of the TextureGrabBackground::_sfCopyTarget 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
Field Get
*SFColor3fgetSFColor (void)
 Get the SolidBackground::_sfColor field.
Color3fgetColor (void)
 Get the value of the SolidBackground::_sfColor field.
const Color3fgetColor (void) const
 Get the value of the SolidBackground::_sfColor field.
Field Set
*void setColor (const Color3f &value)
 Set the value of the SolidBackground::_sfColor 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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)
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)
Field Access *SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information
UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const
Generic Field Access *FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)

Static Public Member Functions

Get Class Type Information
static UInt16 getClassGroupId (void)
Get Class Type Information
static UInt16 getClassGroupId (void)
Get Class Type Information
static UInt16 getClassGroupId (void)
Get Class Type Information
static UInt16 getClassGroupId (void)
Get Class Type Information
static UInt16 getClassGroupId (void)
Class Get
*static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction
*static TextureGrabBackgroundPtr create (void)
 create a new instance of the class
static TextureGrabBackgroundPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype
Class Get
*static const char * getClassname (void)
Get Class Type Information
static UInt16 getClassGroupId (void)
Get Class Type Information
static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector TextureFieldMask
static const osg::BitVector AutoResizeFieldMask
static const osg::BitVector BindTargetFieldMask
static const osg::BitVector CopyTargetFieldMask
static const osg::BitVector MTInfluenceMask
static const osg::BitVector ColorFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper
static const bool isNodeCore = false
CoredNodePtr helper
static const bool isNodeCore = false
CoredNodePtr helper
static const bool isNodeCore = false
CoredNodePtr helper
static const bool isNodeCore = false
CoredNodePtr helper
static const bool isNodeCore = false

Protected Member Functions

Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
MT Edit
template<class FieldTypeT>
*void beginEditX (const BitVector &whichField, FieldTypeT &field)
template<class FieldTypeT>
void endEditX (const BitVector &whichField, FieldTypeT &field)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction
*virtual void onDestroy (void)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction
*virtual void onDestroy (void)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction
*virtual void onDestroy (void)
Sync
*void executeSyncImpl (BackgroundBase *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction
*virtual void onDestroy (void)
Constructors
TextureGrabBackground (void)
 TextureGrabBackground (const TextureGrabBackground &source)
Destructors
*virtual ~TextureGrabBackground (void)
Sync
*void executeSyncImpl (TextureGrabBackgroundBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync
*void executeSyncImpl (SolidBackgroundBase *pOther, const BitVector &whichField)
Sync
*void executeSyncImpl (BackgroundBase *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction
*virtual void onDestroy (void)
Sync
void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync
void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
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)
MT Construction
*void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)

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)
Create Fieldcontainer
template<class ObjectPtrT>
*static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)
Create Fieldcontainer
template<class ObjectPtrT>
*static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)
Create Fieldcontainer
template<class ObjectPtrT>
*static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)
Create Fieldcontainer
template<class ObjectPtrT>
*static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)
Create Fieldcontainer
template<class ObjectPtrT>
*static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)
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

Member
*UInt32 _shares
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares
Fields
*SFTextureChunkPtr _sfTexture
SFBool _sfAutoResize
SFGLenum _sfBindTarget
SFGLenum _sfCopyTarget
Fields
*SFColor3f _sfColor
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares
Fields
*SFAttachmentMap _attachmentMap
Member
*UInt32 _shares

Private Types

typedef TextureGrabBackgroundBase Inherited

Private Member Functions

void operator= (const TextureGrabBackground &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class TextureGrabBackgroundBase

Detailed Description

A background that grabs what's underneath it into a texture before it clears the viewport to a constant color.

The color of the background is given by the _sfColor field, the texture to grab into .

Definition at line 58 of file OSGTextureGrabBackground.h.


Member Typedef Documentation

typedef TextureGrabBackgroundBase osg::TextureGrabBackground::Inherited [private]
 

Reimplemented from osg::TextureGrabBackgroundBase.

Definition at line 62 of file OSGTextureGrabBackground.h.

typedef TextureGrabBackgroundPtr osg::TextureGrabBackgroundBase::Ptr [inherited]
 

Reimplemented from osg::SolidBackgroundBase.

Definition at line 93 of file OSGTextureGrabBackgroundBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
TextureFieldId 
AutoResizeFieldId 
BindTargetFieldId 
CopyTargetFieldId 
NextFieldId 

Reimplemented from osg::SolidBackgroundBase.

Definition at line 95 of file OSGTextureGrabBackgroundBase.h.

00096     {
00097         TextureFieldId    = Inherited::NextFieldId,
00098         AutoResizeFieldId = TextureFieldId    + 1,
00099         BindTargetFieldId = AutoResizeFieldId + 1,
00100         CopyTargetFieldId = BindTargetFieldId + 1,
00101         NextFieldId       = CopyTargetFieldId + 1
00102     };


Constructor & Destructor Documentation

TextureGrabBackground::TextureGrabBackground void   )  [protected]
 

Definition at line 99 of file OSGTextureGrabBackground.cpp.

00099                                                  :
00100     Inherited()
00101 {
00102 }

TextureGrabBackground::TextureGrabBackground const TextureGrabBackground source  )  [protected]
 

Definition at line 104 of file OSGTextureGrabBackground.cpp.

00104                                                                                 :
00105     Inherited(source)
00106 {
00107 }

TextureGrabBackground::~TextureGrabBackground void   )  [protected, virtual]
 

Definition at line 109 of file OSGTextureGrabBackground.cpp.

00110 {
00111 }


Member Function Documentation

void TextureGrabBackground::clear DrawActionBase ,
Viewport
[virtual]
 

Reimplemented from osg::SolidBackground.

Definition at line 122 of file OSGTextureGrabBackground.cpp.

References osg::beginEditCP(), osg::SolidBackground::clear(), osg::endEditCP(), FWARNING, osg::TextureGrabBackgroundBase::getAutoResize(), osg::TextureGrabBackgroundBase::getBindTarget(), osg::TextureGrabBackgroundBase::getCopyTarget(), osg::Viewport::getPixelBottom(), osg::Viewport::getPixelHeight(), osg::Viewport::getPixelLeft(), osg::Viewport::getPixelWidth(), osg::TextureGrabBackgroundBase::getTexture(), osg::DrawActionBase::getWindow(), GL_TEXTURE_3D, GLenum, glErr, osg::TextureChunkBase::ImageFieldMask, osg::NullFC, osg::osgabs(), osg::osgMin(), and osg::Window::validateGLObject().

00123 {   
00124     // grab the texture
00125     TextureChunkPtr t = getTexture();
00126     
00127     if(t == NullFC)       // No texture, no grab.
00128     {
00129         Inherited::clear(action, port);
00130         return;
00131     }
00132     
00133     Int32  pw = port->getPixelWidth(),
00134            ph = port->getPixelHeight();
00135     
00136     // Ignore empty viewports
00137     if(pw < 1 || ph < 1)
00138         return;
00139  
00140     ImagePtr i = t->getImage();
00141              
00142     // If image is smaller than 2x2, resize it to vp size
00143     // the 2x2 is because you can't create 0x0 images
00144     if((i->getWidth() <= 1 && i->getHeight() <= 1) ||
00145        (getAutoResize() && (osgabs(i->getWidth()  - pw) > 1 ||
00146                             osgabs(i->getHeight() - ph) > 1 )
00147        )
00148       )
00149     {
00150         i->set(i->getPixelFormat(), pw, ph);
00151         // Tell the texture...
00152         beginEditCP(t, TextureChunk::ImageFieldMask);
00153         endEditCP  (t, TextureChunk::ImageFieldMask);
00154     }
00155     
00156     UInt32 w = osgMin((Int32)i->getWidth(),  pw);
00157     UInt32 h = osgMin((Int32)i->getHeight(), ph);
00158 
00159     glErr("TextureGrabBackground::activate precheck");
00160     
00161     action->getWindow()->validateGLObject(t->getGLId());
00162 
00163     glErr("TextureGrabBackground::bind precheck");
00164     
00165     GLenum bindTarget = getBindTarget(), copyTarget = getCopyTarget();
00166     
00167     if(bindTarget == GL_NONE)
00168     {
00169        if(i->getDepth() > 1)
00170        {
00171             FWARNING(("TextureGrabBackground:: 3D textures not "
00172                         "supported for this window!\n"));
00173             Inherited::clear(action, port);
00174             return;
00175        }
00176        else if(h > 1)        bindTarget = GL_TEXTURE_2D;
00177        else                  bindTarget = GL_TEXTURE_1D;        
00178     }
00179     
00180     if(copyTarget == GL_NONE)
00181         copyTarget = bindTarget;
00182     
00183     glBindTexture(bindTarget, t->getGLId());
00184 
00185     glErr("TextureGrabBackground::copy precheck");
00186 
00187     if(copyTarget == GL_TEXTURE_3D)
00188     {
00189         FWARNING(("TextureGrabBackground:: grabbing to 3D textures not "
00190                   "supported yet!\n"));      
00191     }
00192     else if(copyTarget == GL_TEXTURE_1D)
00193     {
00194         glCopyTexSubImage1D(copyTarget, 0, 0, 
00195                             port->getPixelLeft(), port->getPixelBottom(), 
00196                             w);
00197     }
00198     else
00199     {
00200         glCopyTexSubImage2D(copyTarget, 0, 0, 0, 
00201                             port->getPixelLeft(), port->getPixelBottom(), 
00202                             w, h);
00203     }
00204     
00205     glErr("TextureGrabBackground::copy postcheck");
00206    
00207     glBindTexture(bindTarget, 0);
00208    
00209     // now do the clearing
00210     Inherited::clear(action, port);
00211 }

void TextureGrabBackground::changed BitVector  whichField,
UInt32  origin
[virtual]
 

Reimplemented from osg::SolidBackground.

Definition at line 115 of file OSGTextureGrabBackground.cpp.

References osg::SolidBackground::changed().

00116 {
00117     Inherited::changed(whichField, origin);
00118 }

void TextureGrabBackground::dump UInt32  uiIndent = 0,
const BitVector  bvFlags = 0
const [virtual]
 

Reimplemented from osg::SolidBackground.

Definition at line 215 of file OSGTextureGrabBackground.cpp.

References SLOG.

00217 {
00218     SLOG << "Dump TextureGrabBackground NI" << std::endl;
00219 }

void TextureGrabBackground::initMethod void   )  [static, private]
 

Reimplemented from osg::SolidBackground.

Definition at line 84 of file OSGTextureGrabBackground.cpp.

00085 {
00086 }

void osg::TextureGrabBackground::operator= const TextureGrabBackground source  )  [private]
 

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

Reimplemented from osg::SolidBackgroundBase.

Definition at line 58 of file OSGTextureGrabBackgroundBase.inl.

References osg::TextureGrabBackgroundBase::_type.

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

00059 {
00060     return _type; 
00061 }