0027667: OCAF binary persistence hangs on reading truncated CBF file
[occt.git] / src / AIS / AIS_PointCloud.hxx
CommitLineData
d33222c1 1// Created on: 2014-08-13
2// Created by: Maxim GLIBIN
3// Copyright (c) 2014 OPEN CASCADE SAS
4//
5// This file is part of Open CASCADE Technology software library.
6//
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.
12//
13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
15
16#ifndef _AIS_PointCloud_HeaderFile
17#define _AIS_PointCloud_HeaderFile
18
19#include <AIS.hxx>
20#include <AIS_InteractiveObject.hxx>
21#include <Bnd_Box.hxx>
22#include <Graphic3d_ArrayOfPoints.hxx>
23#include <Quantity_HArray1OfColor.hxx>
24#include <Standard.hxx>
ec357c5c 25#include <Standard_Type.hxx>
d33222c1 26#include <Standard_Macro.hxx>
27#include <TColgp_HArray1OfDir.hxx>
28#include <TColgp_HArray1OfPnt.hxx>
29
c04c30b3 30class AIS_PointCloud;
d33222c1 31DEFINE_STANDARD_HANDLE(AIS_PointCloud, AIS_InteractiveObject)
32
33//! Interactive object for set of points.
34//! The presentation supports two display modes:
35//! - Points.
36//! - Bounding box for highlighting.
37//! Presentation provides selection by bouding box.
38//! Selection and consequently highlighting can disabled by
39//! setting default selection mode to -1. There will be no way
40//! to select object from interactive view. Any calls to
41//! AIS_InteractiveContext::AddOrRemoveSelected should be also prohibited,
42//! to avoid programmatic highlighting (workaround is setting non-supported
43//! hilight mode, e.g. 100);
44class AIS_PointCloud : public AIS_InteractiveObject
45{
46
47public:
48
49 //! Display modes supported by this Point Cloud object
50 enum DisplayMode
51 {
52 DM_Points = 0, //!< display as normal points, default presentation
53 DM_BndBox = 2 //!< display as bounding box, default for highlighting
54 };
55
8b9a309b 56 //! Selection modes supported by this Point Cloud object
57 enum SelectionMode
58 {
59 SM_Points = 0, //!< detected by points
60 SM_BndBox = 2 //!< detected by bounding box
61 };
62
d33222c1 63public:
64
65 //! Constructor.
66 Standard_EXPORT AIS_PointCloud();
67
68 //! Sets the points from array of points.
69 //! Method will not copy the input data - array will be stored as handle.
70 //! @param thePoints [in] the array of points
71 Standard_EXPORT virtual void SetPoints (const Handle(Graphic3d_ArrayOfPoints)& thePoints);
72
73 //! Sets the points with optional colors.
74 //! The input data will be copied into internal buffer.
75 //! The input arrays should have equal length, otherwise
76 //! the presentation will not be computed and displayed.
77 //! @param theCoords [in] the array of coordinates
78 //! @param theColors [in] optional array of colors
79 //! @param theNormals [in] optional array of normals
80 Standard_EXPORT virtual void SetPoints (const Handle(TColgp_HArray1OfPnt)& theCoords,
81 const Handle(Quantity_HArray1OfColor)& theColors = NULL,
82 const Handle(TColgp_HArray1OfDir)& theNormals = NULL);
83
84public:
85
86 //! Get the points array.
87 //! Method might be overridden to fill in points array dynamically from application data structures.
88 //! @return the array of points
89 Standard_EXPORT virtual const Handle(Graphic3d_ArrayOfPoints) GetPoints() const;
90
91 //! Get bounding box for presentation.
92 Standard_EXPORT virtual Bnd_Box GetBoundingBox() const;
93
94public:
95
96 //! Setup custom color. Affects presentation only when no per-point color attribute has been assigned.
79104795 97 Standard_EXPORT virtual void SetColor (const Quantity_NameOfColor theColor) Standard_OVERRIDE;
d33222c1 98
99 //! Setup custom color. Affects presentation only when no per-point color attribute has been assigned.
79104795 100 Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor) Standard_OVERRIDE;
d33222c1 101
102 //! Restore default color.
79104795 103 Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE;
d33222c1 104
105 //! Setup custom material. Affects presentation only when normals are defined.
79104795 106 Standard_EXPORT virtual void SetMaterial (const Graphic3d_NameOfMaterial theMatName) Standard_OVERRIDE;
d33222c1 107
108 //! Setup custom material. Affects presentation only when normals are defined.
79104795 109 Standard_EXPORT virtual void SetMaterial (const Graphic3d_MaterialAspect& theMat) Standard_OVERRIDE;
d33222c1 110
111 //! Restore default material.
79104795 112 Standard_EXPORT virtual void UnsetMaterial() Standard_OVERRIDE;
d33222c1 113
114protected:
115
116 //! Prepare presentation for this object.
117 Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
118 const Handle(Prs3d_Presentation)& thePrs,
79104795 119 const Standard_Integer theMode) Standard_OVERRIDE;
d33222c1 120
121 //! Prepare selection for this object.
122 Standard_EXPORT virtual void ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
79104795 123 const Standard_Integer theMode) Standard_OVERRIDE;
d33222c1 124
125private:
126
127 Handle(Graphic3d_ArrayOfPoints) myPoints; //!< points array for presentation
128 Bnd_Box myBndBox; //!< bounding box for presentation
129
130public:
131
92efcf78 132 DEFINE_STANDARD_RTTIEXT(AIS_PointCloud,AIS_InteractiveObject)
d33222c1 133
134};
135
136#endif // _AIS_PointCloud_HeaderFile