0026462: Visualization - selection does not adapt to line width change
[occt.git] / src / SelectBasics / SelectBasics_SensitiveEntity.hxx
CommitLineData
42cf5bc1 1// Created on: 1995-01-23
2// Created by: Mister rmi
3// Copyright (c) 1995-1999 Matra Datavision
4// Copyright (c) 1999-2014 OPEN CASCADE SAS
5//
6// This file is part of Open CASCADE Technology software library.
7//
8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
13//
14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
16
17#ifndef _SelectBasics_SensitiveEntity_HeaderFile
18#define _SelectBasics_SensitiveEntity_HeaderFile
19
3bf9a45f 20#include <gp_Trsf.hxx>
21
42cf5bc1 22#include <Standard.hxx>
23#include <Standard_Type.hxx>
24
25#include <Standard_Real.hxx>
26#include <MMgt_TShared.hxx>
27#include <Standard_Boolean.hxx>
28#include <SelectBasics_SelectingVolumeManager.hxx>
29#include <SelectBasics_PickResult.hxx>
30#include <Standard_Integer.hxx>
31#include <Select3D_BndBox3d.hxx>
3bf9a45f 32
42cf5bc1 33class SelectBasics_EntityOwner;
34
35
36class SelectBasics_SensitiveEntity;
37DEFINE_STANDARD_HANDLE(SelectBasics_SensitiveEntity, MMgt_TShared)
38
39//! root class; the inheriting classes will be able to give
40//! sensitive Areas for the dynamic selection algorithms
41class SelectBasics_SensitiveEntity : public MMgt_TShared
42{
43
44public:
45
46
47 //! Sets owner of the entity
48 Standard_EXPORT virtual void Set (const Handle(SelectBasics_EntityOwner)& theOwnerId);
49
50 //! Returns pointer to owner of the entity
51 Standard_EXPORT const Handle(SelectBasics_EntityOwner)& OwnerId() const;
52
53 //! Checks whether the sensitive entity is overlapped by
54 //! current selecting volume
3bf9a45f 55 virtual Standard_Boolean Matches (SelectBasics_SelectingVolumeManager& theMgr, SelectBasics_PickResult& thePickResult) = 0;
42cf5bc1 56
57 //! allows a better sensitivity for
58 //! a specific entity in selection algorithms
59 //! useful for small sized entities.
3bf9a45f 60 Standard_EXPORT Standard_Integer SensitivityFactor() const;
8a1170ad 61
62 //! Allows to manage sensitivity of a particular sensitive entity
63 Standard_EXPORT void SetSensitivityFactor (const Standard_Integer theNewSens);
42cf5bc1 64
65 //! Returns the number of sub-entities or elements in
66 //! sensitive entity. Is used to determine if entity is
67 //! complex and needs to pre-build BVH at the creation of
68 //! sensitive entity step or is light-weighted so the tree
69 //! can be build on demand with unnoticeable delay
3bf9a45f 70 virtual Standard_Integer NbSubElements() = 0;
42cf5bc1 71
72 //! Returns bounding box of sensitive entity
3bf9a45f 73 virtual Select3D_BndBox3d BoundingBox() = 0;
42cf5bc1 74
75 //! Builds BVH tree for sensitive if it is needed
3bf9a45f 76 virtual void BVH() = 0;
42cf5bc1 77
78 //! Clears up all the resources and memory allocated
3bf9a45f 79 virtual void Clear() = 0;
42cf5bc1 80
3bf9a45f 81 //! Returns true if the shape corresponding to the entity has init location
82 virtual Standard_Boolean HasInitLocation() const = 0;
42cf5bc1 83
3bf9a45f 84 //! Returns inversed location transformation matrix if the shape corresponding
85 //! to this entity has init location set. Otherwise, returns identity matrix.
86 virtual gp_Trsf InvInitLocation() const = 0;
42cf5bc1 87
88 DEFINE_STANDARD_RTTI(SelectBasics_SensitiveEntity,MMgt_TShared)
89
90protected:
91
3bf9a45f 92 Standard_EXPORT SelectBasics_SensitiveEntity (const Handle(SelectBasics_EntityOwner)& theOwnerId);
93
42cf5bc1 94 Handle(SelectBasics_EntityOwner) myOwnerId;
95
96
97private:
98
3bf9a45f 99 Standard_Integer mySFactor;
42cf5bc1 100};
101
102
103#include <SelectBasics_SensitiveEntity.lxx>
104
105
106
107
108
109#endif // _SelectBasics_SensitiveEntity_HeaderFile