1 // Created on: 2014-08-13
2 // Created by: Maxim GLIBIN
3 // Copyright (c) 2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #ifndef _AIS_PointCloud_HeaderFile
17 #define _AIS_PointCloud_HeaderFile
20 #include <AIS_InteractiveObject.hxx>
21 #include <Bnd_Box.hxx>
22 #include <Graphic3d_ArrayOfPoints.hxx>
23 #include <Quantity_HArray1OfColor.hxx>
24 #include <Standard.hxx>
25 #include <Standard_Type.hxx>
26 #include <Standard_Macro.hxx>
27 #include <TColgp_HArray1OfDir.hxx>
28 #include <TColgp_HArray1OfPnt.hxx>
30 DEFINE_STANDARD_HANDLE(AIS_PointCloud, AIS_InteractiveObject)
32 //! Interactive object for set of points.
33 //! The presentation supports two display modes:
35 //! - Bounding box for highlighting.
36 //! Presentation provides selection by bouding box.
37 //! Selection and consequently highlighting can disabled by
38 //! setting default selection mode to -1. There will be no way
39 //! to select object from interactive view. Any calls to
40 //! AIS_InteractiveContext::AddOrRemoveSelected should be also prohibited,
41 //! to avoid programmatic highlighting (workaround is setting non-supported
42 //! hilight mode, e.g. 100);
43 class AIS_PointCloud : public AIS_InteractiveObject
48 //! Display modes supported by this Point Cloud object
51 DM_Points = 0, //!< display as normal points, default presentation
52 DM_BndBox = 2 //!< display as bounding box, default for highlighting
58 Standard_EXPORT AIS_PointCloud();
60 //! Sets the points from array of points.
61 //! Method will not copy the input data - array will be stored as handle.
62 //! @param thePoints [in] the array of points
63 Standard_EXPORT virtual void SetPoints (const Handle(Graphic3d_ArrayOfPoints)& thePoints);
65 //! Sets the points with optional colors.
66 //! The input data will be copied into internal buffer.
67 //! The input arrays should have equal length, otherwise
68 //! the presentation will not be computed and displayed.
69 //! @param theCoords [in] the array of coordinates
70 //! @param theColors [in] optional array of colors
71 //! @param theNormals [in] optional array of normals
72 Standard_EXPORT virtual void SetPoints (const Handle(TColgp_HArray1OfPnt)& theCoords,
73 const Handle(Quantity_HArray1OfColor)& theColors = NULL,
74 const Handle(TColgp_HArray1OfDir)& theNormals = NULL);
78 //! Get the points array.
79 //! Method might be overridden to fill in points array dynamically from application data structures.
80 //! @return the array of points
81 Standard_EXPORT virtual const Handle(Graphic3d_ArrayOfPoints) GetPoints() const;
83 //! Get bounding box for presentation.
84 Standard_EXPORT virtual Bnd_Box GetBoundingBox() const;
88 //! Setup custom color. Affects presentation only when no per-point color attribute has been assigned.
89 Standard_EXPORT virtual void SetColor (const Quantity_NameOfColor theColor);
91 //! Setup custom color. Affects presentation only when no per-point color attribute has been assigned.
92 Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor);
94 //! Restore default color.
95 Standard_EXPORT virtual void UnsetColor();
97 //! Setup custom material. Affects presentation only when normals are defined.
98 Standard_EXPORT virtual void SetMaterial (const Graphic3d_NameOfMaterial theMatName);
100 //! Setup custom material. Affects presentation only when normals are defined.
101 Standard_EXPORT virtual void SetMaterial (const Graphic3d_MaterialAspect& theMat);
103 //! Restore default material.
104 Standard_EXPORT virtual void UnsetMaterial();
108 //! Prepare presentation for this object.
109 Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
110 const Handle(Prs3d_Presentation)& thePrs,
111 const Standard_Integer theMode);
113 //! Prepare selection for this object.
114 Standard_EXPORT virtual void ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
115 const Standard_Integer theMode);
119 Handle(Graphic3d_ArrayOfPoints) myPoints; //!< points array for presentation
120 Bnd_Box myBndBox; //!< bounding box for presentation
124 DEFINE_STANDARD_RTTI(AIS_PointCloud, AIS_InteractiveObject)
128 #endif // _AIS_PointCloud_HeaderFile