Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions | Protected Attributes
icl::geom::SceneMouseHandler Class Reference

Class providing a mouse handler for class scene. More...

#include <SceneMouseHandler.h>

Inheritance diagram for icl::geom::SceneMouseHandler:
icl::qt::MouseHandler

List of all members.

Public Member Functions

ICLGeom_API SceneMouseHandler (const int pCameraIndex, Scene *pParentScene)
 Constructor.
 SceneMouseHandler (const SceneMouseHandler &pSceneMouseHandler)
 Copy constructor.
ICLGeom_API ~SceneMouseHandler ()
 Destructor.
ICLGeom_API SceneMouseHandleroperator= (const SceneMouseHandler &pSceneMouseHandler)
 Assignment operator.
void setParentScene (Scene *pParentScene)
 Set parent scene.
ScenegetParentScene ()
 Get parent scene.
ICLGeom_API void setSensitivities (const float pTranslation, const float pRotation=1.0, const float pMouse=1.0, const float pWheel=0.001, const float pModifier=10.0)
 Set mouse & wheel sensitivities, modifier factor and factors for rotation and translation.
MouseSensitivities getSensitivities (MouseSensitivitiesModifier pMouseSensitivitiesModifier)
 Get mouse and wheel sensitivities (low, normal, high).
void setCameraIndex (const int pCameraIndex)
 Set camera index.
int getCameraIndex ()
 Get camera index.
virtual ICLGeom_API void setMouseMappings ()
 Set mouse mappings.
ICLGeom_API void setMouseMapping (const qt::MouseEventType pMouseEventType, const bool pLeftMouseButton, const bool pMiddleMouseButton, const bool pRightMouseButton, const bool pShift, const bool pControl, const bool pAlt, MouseActionCallback pMouseActionCallback, void *pData=0)
 Set one mouse mapping.
virtual ICLGeom_API void process (const qt::MouseEvent &pMouseEvent)
 Process mouse event using mouse mapping table.

Static Public Member Functions

static ICLGeom_API void freeView (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData, bool pInverseX, bool pInverseY)
 Free view.
static void freeView (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Free view with normal axes.
static void freeViewInverseMouseX (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Free view with inversed x-axis.
static void freeViewInverseMouseY (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Free view with inversed y-axis.
static void freeViewInverseBoth (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Free view with inversed axes.
static ICLGeom_API void rotateAroundOrigin (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Rotate around origin and correct camera orientation.
static ICLGeom_API void strafe (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Strafe (camera movement up, down, left, right).
static ICLGeom_API void rollAndDistance (const qt::MouseEvent &pMouseEvent, const utils::Point32f &pCurrentMousePosition, const utils::Point32f &pDeltaMousePosition, Camera &pCamera, void *pData)
 Roll and distance (camera movement forward and backward).

Protected Attributes

MouseMappingTableEntry mMouseMappingTable [qt::MAX_MOUSE_EVENT+1][2][2][2][2][2][2]
 Mouse mapping table:
MouseSensitivities mMouseSensitivities [MAX_MOUSE_SENSITIVITY+1]
 mouse sensitivities
Camera mCameraBackup
 backup of old camera
utils::Point32f mAnchor
 starting mouse position for dragging
ScenemParentScene
 pointer to parent scene
int mCameraIndex
 index of camera in scene
int mKeyboardModifiersBackup
 backup of old keyboard modifiers
qt::GUImGUI
 GUI for the adaption of scene properties.

Detailed Description

Class providing a mouse handler for class scene.

Create your own mouse handler by inherting from this class and overloading function setMouseMappings().

Default mouse mappings for scene objects

Mouse sensitivity modifiers in combination with mouse actions

New mouse mappings


Constructor & Destructor Documentation

ICLGeom_API icl::geom::SceneMouseHandler::SceneMouseHandler ( const int  pCameraIndex,
Scene pParentScene 
)

Constructor.

Parameters:
pCameraIndexindex of camera in scene
pParentScenepointer to parent scene
icl::geom::SceneMouseHandler::SceneMouseHandler ( const SceneMouseHandler pSceneMouseHandler) [inline]

Copy constructor.

Parameters:
pSceneMouseHandlersource

Destructor.


Member Function Documentation

static ICLGeom_API void icl::geom::SceneMouseHandler::freeView ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData,
bool  pInverseX,
bool  pInverseY 
) [static]

Free view.

Vertical mouse movement: pitch. Horizontal mouse movement: yaw.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
pInverseXinverse x-axis
pInverseYinverse y-axis
static void icl::geom::SceneMouseHandler::freeView ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [inline, static]

Free view with normal axes.

Vertical mouse movement: pitch. Horizontal mouse movement: yaw.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
static void icl::geom::SceneMouseHandler::freeViewInverseBoth ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [inline, static]

Free view with inversed axes.

Vertical mouse movement: pitch. Horizontal mouse movement: yaw.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
static void icl::geom::SceneMouseHandler::freeViewInverseMouseX ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [inline, static]

Free view with inversed x-axis.

Vertical mouse movement: pitch. Horizontal mouse movement: yaw.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
static void icl::geom::SceneMouseHandler::freeViewInverseMouseY ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [inline, static]

Free view with inversed y-axis.

Vertical mouse movement: pitch. Horizontal mouse movement: yaw.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity

Get camera index.

Returns:
camera index

Get parent scene.

Get mouse and wheel sensitivities (low, normal, high).

*

Returns:
sensitivity
ICLGeom_API SceneMouseHandler& icl::geom::SceneMouseHandler::operator= ( const SceneMouseHandler pSceneMouseHandler)

Assignment operator.

virtual ICLGeom_API void icl::geom::SceneMouseHandler::process ( const qt::MouseEvent pMouseEvent) [virtual]

Process mouse event using mouse mapping table.

Parameters:
pMouseEventmouse event

Reimplemented from icl::qt::MouseHandler.

static ICLGeom_API void icl::geom::SceneMouseHandler::rollAndDistance ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [static]

Roll and distance (camera movement forward and backward).

Vertical mouse movement: move camera along front vector. Horizontal mouse movement: roll camera.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
static ICLGeom_API void icl::geom::SceneMouseHandler::rotateAroundOrigin ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [static]

Rotate around origin and correct camera orientation.

Vertical mouse movement: vertical rotation. Horizontal mouse movement: horizontal rotation.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity
void icl::geom::SceneMouseHandler::setCameraIndex ( const int  pCameraIndex) [inline]

Set camera index.

Parameters:
pCameraIndexnew camera index
ICLGeom_API void icl::geom::SceneMouseHandler::setMouseMapping ( const qt::MouseEventType  pMouseEventType,
const bool  pLeftMouseButton,
const bool  pMiddleMouseButton,
const bool  pRightMouseButton,
const bool  pShift,
const bool  pControl,
const bool  pAlt,
MouseActionCallback  pMouseActionCallback,
void *  pData = 0 
)

Set one mouse mapping.

Parameters:
pMouseEventTypetype of mouse event
pLeftMouseButtonleft mouse button
pMiddleMouseButtonmiddle mouse button
pRightMouseButtonright mouse button
pShiftshift
pControlcontrol
pAltalt
pMouseActionCallbackfunction pointer that should be called
pDatapointer to additional data

Set mouse mappings.

Inherit from this class and overload this function to define new mouse mappings.

void icl::geom::SceneMouseHandler::setParentScene ( Scene pParentScene) [inline]

Set parent scene.

ICLGeom_API void icl::geom::SceneMouseHandler::setSensitivities ( const float  pTranslation,
const float  pRotation = 1.0,
const float  pMouse = 1.0,
const float  pWheel = 0.001,
const float  pModifier = 10.0 
)

Set mouse & wheel sensitivities, modifier factor and factors for rotation and translation.

Parameters:
pTranslationsensitivity factor for translation (e.g. mParentScene->getMaxSceneDim())
pRotationsensitivity factor for rotations (e.g. 1.0)
pMousesensitivity of mouse movements (e.g. 1.0)
pWheelsensitivity of mouse wheel (e.g. 0.001)
pModifierfactor to modify sensitivity (e.g. 10.0)
static ICLGeom_API void icl::geom::SceneMouseHandler::strafe ( const qt::MouseEvent pMouseEvent,
const utils::Point32f pCurrentMousePosition,
const utils::Point32f pDeltaMousePosition,
Camera pCamera,
void *  pData 
) [static]

Strafe (camera movement up, down, left, right).

Vertical mouse movement: move camera along right vector. Horizontal mouse movement: move camera along up vector.

Parameters:
pMouseEventmouse event
pCurrentMousePositioncurrent mouse position
pDeltaMousePositiondelta compared to last mouse position
pCameracamera
pDatapointer for additional data used to set sensitivity

Member Data Documentation

starting mouse position for dragging

backup of old camera

index of camera in scene

GUI for the adaption of scene properties.

backup of old keyboard modifiers

Mouse mapping table:

  • array dimensions: [MouseEventType] [LeftMouseButton] [MiddleMouseButton] [RightMouseButton] [Shift] [Control] [Alt]
    • qt::MouseEventType: MouseMoveEvent, MouseDragEvent, MousePressEvent, MouseReleaseEvent, MouseEnterEvent, MouseLeaveEvent
    • Mouse buttons, keyboard modifiers: true, false

mouse sensitivities

pointer to parent scene


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines