/usr/include/SurgSim/Graphics/OsgTrackballZoomManipulator.h is in libopensurgsim-dev 0.7.0-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | // This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_GRAPHICS_OSGTRACKBALLZOOMMANIPULATOR_H
#define SURGSIM_GRAPHICS_OSGTRACKBALLZOOMMANIPULATOR_H
#include <osgGA/TrackballManipulator>
namespace SurgSim
{
namespace Graphics
{
/// Trackball manipulator that uses the mouse wheel to control zoom amount.
/// The output matrices are view matrices and do not include the zoom.
/// To apply the zoom, get the value from getZoomFactor() and multiply
/// it by some base FOV to calculate the FOV for the current zoom level.
class OsgTrackballZoomManipulator : public osgGA::TrackballManipulator
{
public:
/// Initializes the zoom parameters to default values
OsgTrackballZoomManipulator();
/// Sets the minimum zoom factor (zoomed out)
/// \param factor Minimum zoom factor
virtual void setMinZoomFactor(double factor);
/// Gets the minimum zoom factor
/// \return Minimum zoom factor
double getMinZoomFactor() const;
/// Sets the maximum zoom factor (zoomed out)
/// \param factor Maximum zoom factor
virtual void setMaxZoomFactor(double factor);
/// Gets the maximum zoom factor
/// \return Maximum zoom factor
double getMaxZoomFactor() const;
/// Sets the minimum amount to change the zoom factor in one step
/// \param amount Minimum zoom amount
virtual void setMinZoomAmount(double amount);
/// Gets the minimum amount to change the zoom factor in one step
/// \return Minimum zoom factor
double getMinZoomAmount() const;//
/// Sets the maximum amount to change the zoom factor in one step
/// \param amount Maximum zoom amount
virtual void setMaxZoomAmount(double amount);
/// Gets the maximum amount to change the zoom factor in one step
/// \return Maximum zoom factor
double getMaxZoomAmount() const;
/// Sets the current zoom factor
/// \param factor Zoom factor
virtual void setZoomFactor(double factor);
/// Gets the current zoom factor
/// \return Zoom factor
double getZoomFactor() const;
/// Sets the scale applied to the zoom factor before it is applied to the FOV
/// \param factor Scale applied to the zoom factor
virtual void setZoomFactorScale(double factor);
/// Gets the current zoom factor
/// \return Scale applied to the zoom factor
double getZoomFactorScale() const;
/// Zoom by a percent of the difference between the current zoom amount and minimum zoom factor
/// \param zoomPercent Percent to zoom by: positive values zoom out, negative values zoom in
virtual void zoom(double zoomPercent);
/// Removes roll of the camera, so that the top of the view is towards the Y direction.
virtual void makeUpright();
protected:
/// Minimum zoom factor value (zoomed in)
double m_minZoomFactor;
/// Maximum zoom factor value (zoomed out)
double m_maxZoomFactor;
/// Minimum amount to change the zoom factor in one step
/// This minimum prevents zooming by infinitely smaller amounts.
double m_minZoomAmount;
/// Maximum amount to change the zoom factor in one step
double m_maxZoomAmount;
/// Current zoom factor
/// Larger values are zoomed out, smaller values are zoomed in.
double m_zoomFactor;
/// Scaling factor applied to the zoom factor before it is applied to the FOV
double m_zoomFactorScale;
/// Handle keyboard CTRL-U events to make the view upright
/// \param eventAdapter Event adapter
/// \param actionAdapter Action adapter
/// \return true if the event was handled, false otherwise
virtual bool handle(const osgGA::GUIEventAdapter& eventAdapter, osgGA::GUIActionAdapter& actionAdapter); //NOLINT
/// Handle mouse wheel scrolling to zoom in or out
/// \param eventAdapter Event adapter
/// \param actionAdapter Action adapter
/// \return true if the mouse wheel was handled, false otherwise
virtual bool handleMouseWheel(const osgGA::GUIEventAdapter& eventAdapter,
osgGA::GUIActionAdapter& actionAdapter); //NOLINT
void updateCamera(osg::Camera& camera) override;
};
}; // namespace Graphics
}; // namespace SurgSim
#endif
|