Free Electron
CameraControllerI.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2021 Free Electron Organization
2  Any use of this software requires a license. If a valid license
3  was not distributed with this file, visit freeelectron.org. */
4 
5 /** @file */
6 
7 #ifndef __viewer_CameraControllerI_h__
8 #define __viewer_CameraControllerI_h__
9 
10 namespace fe
11 {
12 namespace ext
13 {
14 
15 /**************************************************************************//**
16  @brief Viewpoint controller for a Viewer
17 
18  @ingroup viewer
19 *//***************************************************************************/
20 class FE_DL_EXPORT CameraControllerI:
21  virtual public Component,
22  public CastableAs<CameraControllerI>,
23  public ObjectSafe<CameraControllerI>
24 {
25  public:
26  /** @brief Transform to center of interest
27 
28  A look-at controller might choose to spin
29  around this point. */
30 virtual
31 const SpatialTransform& interestMatrix(void) const =0;
32 
33  /** @brief Secondary point of significance
34 
35  A controller may wish this matrix to be
36  represented in a viewer. */
37 virtual
38 const SpatialTransform& auxillaryMatrix(void) const =0;
39 
40 virtual BWORD closeEvent(void) const =0;
41 virtual U32 keyCount(U32 key) const =0;
42 virtual U32 setKeyCount(U32 key,U32 count) =0;
43 virtual void setKeyMax(U32 key,U32 max) =0;
44 virtual Real mouseDial(U32 mode) const =0;
45 
46 virtual SpatialVector lookPoint(void) const =0;
47 virtual Real azimuth(void) const =0;
48 virtual Real downangle(void) const =0;
49 virtual Real distance(void) const =0;
50 
51 virtual void setVertical(SpatialVector a_vertical) =0;
52 virtual void setLookPoint(SpatialVector a_point) =0;
53 virtual void setLookAngle(Real azimuth,Real downangle,
54  Real distance) =0;
55 
56 virtual sp<CameraI> camera(void) const =0;
57 virtual void useCustomCamera(sp<CameraI> a_spCamera) =0;
58 
59 virtual BWORD rotationLock(void) const =0;
60 virtual void setRotationLock(BWORD a_rotationLock) =0;
61 };
62 
63 } /* namespace ext */
64 } /* namespace fe */
65 
66 #endif /* __viewer_CameraControllerI_h__ */
Object level locking for thread safety.
Definition: Safe.h:216
kernel
Definition: namespace.dox:3
Base for all interfacable components.
Definition: Component.h:20
Intrusive Smart Pointer.
Definition: src/core/ptr.h:53
Viewpoint controller for a Viewer.
Definition: CameraControllerI.h:20
Per-class participation non-RTTI fallback dynamic casting mechanism.
Definition: Castable.h:192