qCC_db  version 2.5.4 (Qt) - 19 Apr 2014
 All Classes Functions Variables Typedefs Enumerations Enumerator Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ccHObject Class Reference

Hierarchical CloudCompare Object. More...

#include <ccHObject.h>

Inheritance diagram for ccHObject:
Inheritance graph
Collaboration diagram for ccHObject:
Collaboration graph

Public Types

 Dependency flags. More...
 Behavior when selected.
typedef std::vector< ccHObject * > Container
 standard ccHObject container (for children, etc.)
- Public Types inherited from ccSerializableObject
enum  DeserializationFlags { DF_POINT_COORDS_64_BITS = 1, DF_SCALAR_VAL_32_BITS = 2 }
 Deserialization flags (bit-field) More...

Public Member Functions

 ccHObject (QString name=QString())
 Default constructor. More...
virtual ~ccHObject ()
 Default destructor.
virtual CC_CLASS_ENUM getClassID () const
 Returns class ID. More...
virtual QIcon getIcon () const
 Returns the icon associated to this entity. More...
ccHObjectgetParent () const
 Returns parent object. More...
void addDependency (ccHObject *otherObject, int flags, bool additive=true)
 Adds a new dependence (additive or not) More...
int getDependencyFlagsWith (const ccHObject *otherObject)
 Returns the dependency flags with a given object. More...
void removeDependencyWith (const ccHObject *otherObject)
 Removes any dependency flags with a given object. More...
void removeDependencyFlag (ccHObject *otherObject, DEPENDENCY_FLAGS flag)
 Removes a given dependency flag. More...
virtual bool addChild (ccHObject *child, int dependencyFlags=DP_PARENT_OF_OTHER, int insertIndex=-1)
 Adds a child. More...
unsigned getChildrenNumber () const
 Returns the number of children. More...
ccHObjectgetChild (unsigned childPos) const
 Returns the ith child. More...
ccHObjectfind (int uniqueID)
 Finds an entity in this object hierarchy. More...
unsigned filterChildren (Container &filteredChildren, bool recursive=false, CC_CLASS_ENUM filter=CC_TYPES::OBJECT) const
 Collects the children corresponding to a certain pattern. More...
void detachChild (ccHObject *child)
 Detaches a specific child. More...
void detatchAllChildren ()
 Removes a specific child. More...
void removeChild (ccHObject *child)
void removeChild (int pos)
 Removes a specific child given its index. More...
void removeAllChildren ()
 Removes all children.
int getChildIndex (const ccHObject *aChild) const
 Returns child index.
void swapChildren (unsigned firstChildIndex, unsigned secondChildIndex)
 Swaps two children.
int getIndex () const
 Returns index relatively to its parent or -1 if no parent.
void transferChild (ccHObject *child, ccHObject &newParent)
 Transfer a given child to another parent.
void transferChildren (ccHObject &newParent, bool forceFatherDependent=false)
 Transfer all children to another parent.
ccHObjectgetFirstChild () const
 Shortcut: returns first child.
ccHObjectgetLastChild () const
 Shortcut: returns last child.
bool isAncestorOf (const ccHObject *anObject) const
 Returns true if the current object is an ancestor of the specified one.
virtual ccBBox getBB (bool relative=true, bool withGLfeatures=false, const ccGenericGLDisplay *window=NULL)
 Returns bounding-box. More...
virtual void draw (CC_DRAW_CONTEXT &context)
 Draws entity and its children.
virtual bool isDisplayed () const
 Returns whether the object is actually displayed (visible) or not.
virtual bool isBranchEnabled () const
 Returns whether the object and all its ancestors are enabled.
 ccHObject_recursive_call1 (setSelected, bool, setSelected_recursive)
 ccHObject_recursive_call1 (setDisplay, ccGenericGLDisplay *, setDisplay_recursive)
 ccHObject_recursive_call1 (removeFromDisplay, ccGenericGLDisplay *, removeFromDisplay_recursive)
 ccHObject_recursive_call0 (prepareDisplayForRefresh, prepareDisplayForRefresh_recursive)
 ccHObject_recursive_call0 (refreshDisplay, refreshDisplay_recursive)
 ccHObject_recursive_call0 (toggleVisibility, toggleVisibility_recursive)
 ccHObject_recursive_call0 (toggleColors, toggleColors_recursive)
 ccHObject_recursive_call0 (toggleNormals, toggleNormals_recursive)
 ccHObject_recursive_call0 (toggleSF, toggleSF_recursive)
 ccHObject_recursive_call0 (toggleShowName, toggleShowName_recursive)
 ccHObject_recursive_call0 (toggleMaterials, toggleMaterials_recursive)
void applyGLTransformation_recursive (ccGLMatrix *trans=0)
 Applies the active OpenGL transformation to the entity (recursive) More...
virtual CCVector3 getBBCenter ()
 Returns the bounding-box center. More...
void notifyGeometryUpdate ()
 Notifies all dependent entities that the geometry of this entity has changed.
virtual ccBBox getMyOwnBB ()
 Returns the entity bounding-box only. More...
virtual ccBBox getDisplayBB ()
 Returns the entity GL display bounding-box. More...
virtual bool isSerializable () const
 Returns whether object is serializable of not.
virtual bool toFile (QFile &out) const
 Saves data to binay stream. More...
virtual bool fromFile (QFile &in, short dataVersion, int flags)
 Reimplemented from ccSerializableObject::fromFile. More...
virtual bool isShareable () const
 Returns whether object is shareable or not. More...
void setSelectionBehavior (SelectionBehavior mode)
 Sets selection behavior (when displayed) More...
SelectionBehavior getSelectionBehavior () const
 Returns selection behavior.
virtual unsigned getUniqueIDForDisplay () const
 Returns object unqiue ID used for display.
- Public Member Functions inherited from ccObject
 ccObject (QString name=QString())
 Default constructor. More...
virtual QString getName () const
 Returns object name.
virtual void setName (const QString &name)
 Sets object name.
virtual unsigned getUniqueID () const
 Returns object unique ID.
virtual void setUniqueID (unsigned ID)
 Changes unique ID. More...
virtual bool isEnabled () const
 Returns whether the object is enabled or not. More...
virtual void setEnabled (bool state)
 Sets the "enabled" property. More...
virtual bool isLocked () const
 Returns whether the object is locked or not. More...
virtual void setLocked (bool state)
 Sets the "enabled" property. More...
bool isGroup () const
bool isLeaf () const
bool isCustom () const
bool isHierarchy () const
bool isKindOf (CC_CLASS_ENUM type) const
bool isA (CC_CLASS_ENUM type) const
QVariant getMetaData (QString key) const
 Returns a given associated meta data. More...
bool removeMetaData (QString key)
 Removes a given associated meta data. More...
void setMetaData (QString key, QVariant data)
 Sets a meta data element. More...
bool hasMetaData (QString key)
 Says if a metadata with the given key exists or not. More...
const QVariantMap & metaData () const
 Returns meta-data map (const only)
- Public Member Functions inherited from ccSerializableObject
virtual ~ccSerializableObject ()
- Public Member Functions inherited from ccDrawableObject
 ccDrawableObject ()
 Default constructor.
virtual bool isVisible () const
 Returns whether entity is visible or not.
virtual void setVisible (bool state)
 Sets entity visibility.
virtual void toggleVisibility ()
 Toggles visibility.
virtual bool isVisiblityLocked () const
 Returns whether visibilty is locked or not.
virtual void lockVisibility (bool state)
 Locks/unlocks visibilty. More...
virtual bool isSelected () const
 Returns whether entity is selected or not.
virtual void setSelected (bool state)
 Selects/unselects entity.
virtual ccBBox getFitBB (ccGLMatrix &trans)
 Returns best-fit bounding-box (if available) More...
virtual void drawBB (const colorType col[])
 Draws absolute (axis aligned) bounding-box.
virtual void getDrawingParameters (glDrawParams &params) const
 Returns main OpenGL paramters for this entity. More...
virtual bool hasColors () const
 Returns whether colors are enabled or not.
virtual bool colorsShown () const
 Returns whether colors are shown or not.
virtual void showColors (bool state)
 Sets colors visibility.
virtual void toggleColors ()
 Toggles colors display state.
virtual bool hasNormals () const
 Returns whether normals are enabled or not.
virtual bool normalsShown () const
 Returns whether normals are shown or not.
virtual void showNormals (bool state)
 Sets normals visibility.
virtual void toggleNormals ()
 Toggles normals display state.
virtual bool hasDisplayedScalarField () const
 Returns whether an active scalar field is available or not.
virtual bool hasScalarFields () const
 Returns whether one or more scalar fields are instantiated. More...
virtual void showSF (bool state)
 Sets active scalarfield visibility.
virtual void toggleSF ()
 Toggles SF display state.
virtual bool sfShown () const
 Returns whether active scalar field is visible.
virtual void toggleMaterials ()
 Toggles material display state.
virtual void showNameIn3D (bool state)
 Sets whether name should be displayed in 3D.
virtual bool nameShownIn3D () const
 Returns whether name is displayed in 3D or not.
virtual void toggleShowName ()
 Toggles name in 3D display state.
virtual bool isColorOverriden () const
 Returns whether colors are currently overriden by a temporary (unique) color. More...
virtual const colorType * getTempColor () const
 Returns current temporary (unique) color.
virtual void setTempColor (const colorType *col, bool autoActivate=true)
 Sets current temporary (unique) More...
virtual void enableTempColor (bool state)
 Set temporary color activation state.
virtual void removeFromDisplay (const ccGenericGLDisplay *win)
 Unlinks entity from a GL display (only if it belongs to it of course)
virtual void setDisplay (ccGenericGLDisplay *win)
 Sets associated GL display.
virtual ccGenericGLDisplaygetDisplay () const
 Returns associated GL display.
virtual void redrawDisplay ()
 Redraws associated GL display.
virtual void prepareDisplayForRefresh ()
 Sets associated GL display 'refreshable' before global refresh. More...
virtual void refreshDisplay ()
 Refreshes associated GL display. More...
virtual void setGLTransformation (const ccGLMatrix &trans)
 Associates entity with a GL transformation (rotation + translation) More...
virtual void enableGLTransformation (bool state)
 Enables/disables associated GL transformation. More...
virtual bool isGLTransEnabled () const
 Returns whether a GL transformation is enabled or not.
virtual const ccGLMatrixgetGLTransformation () const
 Retuns associated GL transformation. More...
virtual void resetGLTransformation ()
 Resets associated GL transformation. More...
virtual void rotateGL (const ccGLMatrix &rotMat)
 Mutliplies (left) current GL transformation by a rotation matrix. More...
virtual void translateGL (const CCVector3 &trans)
 Translates current GL transformation by a rotation matrix. More...

Static Public Member Functions

static ccHObjectNew (CC_CLASS_ENUM objectType, const char *name=0)
 Static factory. More...
- Static Public Member Functions inherited from ccObject
static unsigned GetCurrentDBVersion ()
 Returns current database version.
static void ResetUniqueIDCounter ()
 Resets the object's unique ID counter. More...
static unsigned GetNextUniqueID ()
 Returns a new unassigned unique ID. More...
static unsigned GetLastUniqueID ()
 Returns last assigned unique ID. More...
static CC_CLASS_ENUM ReadClassIDFromFile (QFile &in, short dataVersion)
 Helper: reads out class ID from a binary stream. More...
- Static Public Member Functions inherited from ccSerializableObject
static bool WriteError ()
 Sends a custom error message (write error) and returns 'false'. More...
static bool ReadError ()
 Sends a custom error message (read error) and returns 'false'. More...
static bool MemoryError ()
 Sends a custom error message (not enough memory) and returns 'false'. More...
static bool CorruptError ()
 Sends a custom error message (corrupted file) and returns 'false'. More...

Protected Member Functions

virtual void setParent (ccHObject *anObject)
 Sets parent object.
virtual void drawMeOnly (CC_DRAW_CONTEXT &context)
 Draws the entity only (not its children)
virtual void applyGLTransformation (const ccGLMatrix &trans)
 Applies a GL transformation to the entity. More...
virtual bool toFile_MeOnly (QFile &out) const
 Save own object data. More...
virtual bool fromFile_MeOnly (QFile &in, short dataVersion, int flags)
 Loads own object data. More...
virtual void drawNameIn3D (CC_DRAW_CONTEXT &context)
 Draws the entity name in 3D. More...
virtual void onDeletionOf (const ccHObject *obj)
 This method is called when another object is deleted. More...
virtual void onUpdateOf (ccHObject *obj)
 This method is called when another object (geometry) is updated. More...
- Protected Member Functions inherited from ccObject
virtual bool getFlagState (CC_OBJECT_FLAG flag) const
 Returns flag state.
virtual void setFlagState (CC_OBJECT_FLAG flag, bool state)
 Sets flag state. More...

Protected Attributes

 Object's parent.
Container m_children
 Object's children.
SelectionBehavior m_selectionBehavior
 Selection behavior.
std::map< ccHObject *, int > m_dependencies
 Dependencies map. More...
- Protected Attributes inherited from ccObject
QString m_name
 Object name.
unsigned m_flags
 Object flags.
QVariantMap m_metaData
 Associated meta-data.
- Protected Attributes inherited from ccDrawableObject
bool m_visible
 Specifies whether the object is visible or not. More...
bool m_selected
 Specifies whether the object is selected or not.
bool m_lockedVisibility
 Specifies whether the visibility can be changed by user or not.
bool m_colorsDisplayed
 Specifies whether colors should be displayed.
bool m_normalsDisplayed
 Specifies whether normals should be displayed.
bool m_sfDisplayed
 Specifies whether scalar field should be displayed.
colorType m_tempColor [3]
 Temporary (unique) color.
bool m_colorIsOverriden
 Temporary (unique) color activation state.
ccGLMatrix m_glTrans
 Current GL transformation. More...
bool m_glTransEnabled
 Current GL transformation activation state. More...
bool m_showNameIn3D
 Whether name is displayed in 3D or not.
 Currently associated GL display.

Additional Inherited Members

- Static Protected Member Functions inherited from ccObject
static void UpdateLastUniqueID (unsigned lastID)
 Sets last assigned unique ID. More...

Detailed Description

Hierarchical CloudCompare Object.

Member Enumeration Documentation

Dependency flags.


no dependency


notify 'other' when deleted (will call ccHObject::onDeletionOf)


notify 'other' when its geometry is modified (will call ccHObject::onUpdateOf)


delete 'other' before deleting itself


same as DP_DELETE_OTHER + declares itself as parent of 'other'

Constructor & Destructor Documentation

ccHObject::ccHObject ( QString  name = QString())

Default constructor.

nameobject name (optional)

Member Function Documentation

bool ccHObject::addChild ( ccHObject child,
int  dependencyFlags = DP_PARENT_OF_OTHER,
int  insertIndex = -1 

Adds a child.

by default (i.e. with the DP_PARENT_OF_OTHER flag) the child's parent will be automatically replaced by this instance. Moreover the child will be deleted
childchild instance
dependencyFlagsdependency flags
insertIndexinsertion index (if <0, child is simply appended to the children list)
void ccHObject::addDependency ( ccHObject otherObject,
int  flags,
bool  additive = true 

Adds a new dependence (additive or not)

otherObjectother object
flagsdependency flags (see DEPENDENCY_FLAGS)
additivewhether we should 'add' the flag(s) if there's already a dependence with the other object or not
virtual void ccHObject::applyGLTransformation ( const ccGLMatrix trans)

Applies a GL transformation to the entity.

this = rotMat*(this-rotCenter)+(rotCenter+trans)

transa ccGLMatrix structure

Reimplemented in ccPointCloud, ccMesh, ccSensor, ccGenericPrimitive, and ccPolyline.

void ccHObject::applyGLTransformation_recursive ( ccGLMatrix trans = 0)

Applies the active OpenGL transformation to the entity (recursive)

The input ccGLMatrix should be left to 0, unless you want to apply a pre-transformation.

transa ccGLMatrix structure (reference to)
void ccHObject::detachChild ( ccHObject child)

Detaches a specific child.

This method does not delete the child. Removes any dependency between the flag and this object

void ccHObject::detatchAllChildren ( )

Removes a specific child.

This method may delete the child if the DP_PARENT_OF_OTHER dependency flag is set for this child (use detachChild if you want to avoid deletion).Detaches all children
void ccHObject::drawNameIn3D ( CC_DRAW_CONTEXT context)

Draws the entity name in 3D.

Names is displayed at the center of the bounding box by default.

Reimplemented in ccSphere.

unsigned ccHObject::filterChildren ( Container filteredChildren,
bool  recursive = false,
) const

Collects the children corresponding to a certain pattern.

filteredChildrenresult container
recursivespecifies if the search should be recursive
filterpattern for children selection
number of collected children
ccHObject * ccHObject::find ( int  uniqueID)

Finds an entity in this object hierarchy.

uniqueIDchild unique ID
child (or NULL if not found)
bool ccHObject::fromFile ( QFile &  in,
short  dataVersion,
int  flags 

Reimplemented from ccSerializableObject::fromFile.

Be sure to call ccObject::ReadClassIDFromFile (once) before calling this method, as the classID is voluntarily skipped (in order to let the user instantiate the object first)

Reimplemented from ccObject.

Reimplemented in ccCustomHObject.

bool ccHObject::fromFile_MeOnly ( QFile &  in,
short  dataVersion,
int  flags 
ccBBox ccHObject::getBB ( bool  relative = true,
bool  withGLfeatures = false,
const ccGenericGLDisplay window = NULL 

Returns bounding-box.

If bbox is not relative, any active GL transformation (see setGLTransformation) will be applied to it. Moreover, one can compute a full bounding box, taking into acount every children, or only the ones displayed in a given GL window. Eventualy, one can also choose to compute bbox only with geometrical entities, or also with full GL features.

relativespecifies whether bbox is relative or not
withGLfeaturesinclude GL features (example: octree grid display) inside BB or not
windowdisplay to compute bbox only with entities displayed in a given GL window

Implements ccDrawableObject.

CCVector3 ccHObject::getBBCenter ( )

Returns the bounding-box center.

bounding-box center
ccHObject* ccHObject::getChild ( unsigned  childPos) const

Returns the ith child.

childPoschild position
child object (or NULL if wrong position)
unsigned ccHObject::getChildrenNumber ( ) const

Returns the number of children.

children number
virtual CC_CLASS_ENUM ccHObject::getClassID ( ) const
int ccHObject::getDependencyFlagsWith ( const ccHObject otherObject)

Returns the dependency flags with a given object.

otherObjectother object
ccBBox ccHObject::getDisplayBB ( )

Returns the entity GL display bounding-box.

Children bboxes are ignored. The bounding-box should take into account entity geometrical data and any other 3D displayed elements.


Reimplemented in ccGBLSensor, ccOctree, ccIndexedTransformationBuffer, ccKdTree, and ccClipBox.

QIcon ccHObject::getIcon ( ) const

Returns the icon associated to this entity.

ccDBRoot will call this method: if an invalid icon is returned the default icon for that type will be used instead.

invalid icon by default (to be re-implemented by child class)
ccBBox ccHObject::getMyOwnBB ( )

Returns the entity bounding-box only.

Children bboxes are ignored.


Reimplemented in ccCameraSensor, ccGBLSensor, ccGenericPointCloud, ccOctree, ccIndexedTransformationBuffer, ccPolyline, ccMesh, ccKdTree, ccClipBox, and ccSubMesh.

ccHObject* ccHObject::getParent ( ) const

Returns parent object.

parent object (NULL if no parent)
virtual bool ccHObject::isShareable ( ) const

Returns whether object is shareable or not.

If object is father dependent and 'shared', it won't be deleted but 'released' instead.

Reimplemented in ccChunkedArray< N, ElementType >, ccChunkedArray< 1, normsType >, ccChunkedArray< 3, PointCoordinateType >, ccChunkedArray< 3, colorType >, ccChunkedArray< 2, float >, and ccMaterialSet.

ccHObject * ccHObject::New ( CC_CLASS_ENUM  objectType,
const char *  name = 0 

Static factory.

Warning: objects depending on other structures (such as meshes or polylines that should be linked with point clouds playing the role of vertices) are returned 'naked'.

objectTypeobject type
nameobject name (optional)
instantiated object (if type is valid) or 0
void ccHObject::onDeletionOf ( const ccHObject obj)

This method is called when another object is deleted.

For internal use.

Reimplemented in cc2DLabel.

virtual void ccHObject::onUpdateOf ( ccHObject obj)

This method is called when another object (geometry) is updated.

For internal use.

Reimplemented in ccMesh, and ccSubMesh.

void ccHObject::removeChild ( int  pos)

Removes a specific child given its index.

This method may delete the child if the DP_PARENT_OF_OTHER dependency flag is set for this child (use detachChild if you want to avoid deletion).
void ccHObject::removeDependencyFlag ( ccHObject otherObject,

Removes a given dependency flag.

otherObjectother object
flagdependency flag to remove (see DEPENDENCY_FLAGS)
void ccHObject::removeDependencyWith ( const ccHObject otherObject)

Removes any dependency flags with a given object.

otherObjectother object
void ccHObject::setSelectionBehavior ( SelectionBehavior  mode)

Sets selection behavior (when displayed)

WARNING: SELECTION_FIT_BBOX relies on the 'ccDrawableObject::getFitBB' method (which is not supported by all entities).

bool ccHObject::toFile ( QFile &  out) const

Saves data to binay stream.

outoutput file (already opened)

Reimplemented from ccObject.

bool ccHObject::toFile_MeOnly ( QFile &  out) const

Member Data Documentation

std::map<ccHObject*,int> ccHObject::m_dependencies

Dependencies map.

First parameter: other object Second parameter: dependency flags (see DEPENDENCY_FLAGS)

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