MeVisLab Resolution Independence API
SoQtViewerProxy Class Reference

#include <SoQtViewerProxy.h>

Inheritance diagram for SoQtViewerProxy:
SoViewerProxy

Public Member Functions

 SoQtViewerProxy (SoQtRenderArea *renderArea=nullptr)
 This class implements access to the state of the SoQtMeVis viewer.
 
 ~SoQtViewerProxy () override
 Destructor.
 
void setCursor (int shapeID) override
 Sets the cursor of the viewer to pre- or user-defined shape.
 
void setForceCursor (int shapeID) override
 Enforces the setting the cursor, even from mouseOverUpdates.
 
int getCursor ()
 Returns the requested cursor shape.
 
bool hasShape (int shapeID) override
 Checks whether this shape has already been defined.
 
int defineCursor (const char *cursorImgFileName, int hotSpotX=-1, int hotSpotY=-1, int id=-1) override
 Defines new cursor shape - successful operation is only guaranteed with PNG-Images with size 32x32, containing only black, white, and transparent pixels.
 
bool getCurrentCursorPosition (int &x, int &y) override
 Returns the current cursor position relative to the viewing window.
 
bool isInitialRendering () const override
 Returns true if the viewer does the initial rendering after it became visible.
 
bool isUserInterationEventInQueue () const override
 Returns whether a user interaction event is the the GUI event queue.
 
double getDevicePixelRatio () override
 Returns the ratio between physical pixels and device-independent pixels for the viewer.
 
- Public Member Functions inherited from SoViewerProxy
virtual ~SoViewerProxy ()
 Destructor.
 
virtual bool isHighQualityOffscreenRendering () const
 Returns true if high quality offscreen rendering (e.g., for OffscreenRenderer) is desired.
 
virtual SoMetaInformationMapgetMetaInformationMap ()
 Returns the current SoMetaInformationMap, which allows storing of the current meta information / render state as key/value pairs.
 

Static Public Member Functions

static bool forceDefineCursor (int id, const char *cursorImgFileName, int hotSpotX=-1, int hotSpotY=-1)
 defineCursor simply calls this method, which will overwrite previous shapes.
 
static void initializeDefaultCursors ()
 On some platforms, it may not be possible to initialize the default cursors at any time, so one may have to call this in advance.
 
static QCursor getCursor (int shapeID)
 Returns the QCursor associated with the given shapeID.
 
static QPixmap getPixmap (int shapeID)
 Returns the QPixmap associated with the given shapeID in 1x resolution.
 
static QPixmap getPixmap2x (int shapeID)
 Returns the QPixmap associated with the given shapeID in 2x resolution.
 
static int getShapeID (const QCursor &cursor)
 Returns the shape ID associated with the given cursor.
 
static bool isSameCursor (const QCursor &a, const QCursor &b)
 Compares cursor shapes.
 
- Static Public Member Functions inherited from SoViewerProxy
static const char *const * cursorShapeNames ()
 Returns a list of strings containing cursor shape names; this includes UNDEFINED_CURSOR, so you must add 1 when indexing this array.
 
static int getPredefinedCursorCount ()
 Returns number of predefined cursors from code (instead of requiring a re-compilation of all using libraries when using the value PREDEFINED_CURSOR_COUNT).
 
static const ml::EnumValues< cursorShapeEnum > & getCursorShapeEnumValues ()
 Returns enum values record for use with ml::TypedEnumField.
 
static int getNextFreeShapeID ()
 Returns the next free ID for defining custom cursor shape.
 

Protected Attributes

SoQtRenderArea * _renderArea
 Pointer to the actual viewer.
 
int _requestedShape
 Currently requested cursor shape.
 
bool _cursorEnforced
 Cursor setting was enforced.
 
virtual void resetCursor ()
 Resets the stored cursor shape. This must be called before event handling traversal.
 
virtual void evaluateCursor ()
 Evaluates the set cursor shape. This must be called after event handling traversal.
 
virtual bool actionMayChangeCursor (SoAction *action)
 Returns whether the given action may change the cursor.
 
static void resetCursorCB (void *userData, SoAction *action)
 This callback can be used together with a SoCallback node, userData must be set to the pointer to this (or a derived) proxy.
 
static void evaluateCursorCB (void *userData, SoAction *action)
 This callback can be used together with a SoCallback node, userData must be set to the pointer to this (or a derived) proxy.
 

Additional Inherited Members

- Public Types inherited from SoViewerProxy
enum  cursorShapeEnum {
  UNDEFINED_CURSOR = -1 , DEFAULT_CURSOR = 0 , FORBIDDEN_CURSOR , POINTING_HAND_CURSOR ,
  OPEN_HAND_CURSOR , CLOSED_HAND_CURSOR , MOVE_ALL_CURSOR , MOVE_HORI_CURSOR ,
  MOVE_VERT_CURSOR , MOVE_FDIAG_CURSOR , MOVE_BDIAG_CURSOR , MOVE_INOUT_CURSOR ,
  ROTATE_X_CURSOR , ROTATE_Y_CURSOR , ROTATE_Z_CURSOR , ROTATE_XY_CURSOR ,
  ZOOM_CURSOR , ZOOM_IN_CURSOR , ZOOM_OUT_CURSOR , CROSS_CURSOR ,
  CROSS_PLUS_CURSOR , CROSS_MINUS_CURSOR , CROSS_MOVE_CURSOR , CROSS_ROTATE_CURSOR ,
  CROSS_RECT_CURSOR , CROSS_OVAL_CURSOR , CROSS_VECTOR_CURSOR , CROSS_FREEFORM_CURSOR ,
  CROSS_POINT_CURSOR , CROSS_LINE_CURSOR , CROSS_CURVE_CURSOR , CROSS_POLYLINE_CURSOR ,
  CROSS_POLYGON_CURSOR , CROSS_FILL_CURSOR , CROSS_LINK_CURSOR , CROSS_0_CURSOR ,
  CROSS_1_CURSOR , CROSS_2_CURSOR , CROSS_3_CURSOR , CROSS_4_CURSOR ,
  CROSS_5_CURSOR , CROSS_6_CURSOR , CROSS_7_CURSOR , CROSS_8_CURSOR ,
  CROSS_9_CURSOR , LUT_CURSOR , LUT_1_CURSOR , LUT_2_CURSOR ,
  LUT_3_CURSOR , SLICING_CURSOR , BLANK_CURSOR , OTHER_CURSOR_0 ,
  OTHER_CURSOR_1 , OTHER_CURSOR_2 , OTHER_CURSOR_3 , OTHER_CURSOR_4 ,
  OTHER_CURSOR_5 , OTHER_CURSOR_6 , OTHER_CURSOR_7 , OTHER_CURSOR_8 ,
  OTHER_CURSOR_9 , OTHER_CURSOR_10 , OTHER_CURSOR_11 , OTHER_CURSOR_12 ,
  OTHER_CURSOR_13 , OTHER_CURSOR_14 , OTHER_CURSOR_15 , OTHER_CURSOR_16 ,
  OTHER_CURSOR_17 , OTHER_CURSOR_18 , OTHER_CURSOR_19 , OTHER_CURSOR_20 ,
  OTHER_CURSOR_21 , OTHER_CURSOR_22 , OTHER_CURSOR_23 , OTHER_CURSOR_24 ,
  OTHER_CURSOR_25 , OTHER_CURSOR_26 , OTHER_CURSOR_27 , OTHER_CURSOR_28 ,
  OTHER_CURSOR_29 , OTHER_CURSOR_30 , OTHER_CURSOR_31 , OTHER_CURSOR_32 ,
  OTHER_CURSOR_33 , OTHER_CURSOR_34 , OTHER_CURSOR_35 , OTHER_CURSOR_36 ,
  OTHER_CURSOR_37 , OTHER_CURSOR_38 , OTHER_CURSOR_39 , OTHER_CURSOR_40 ,
  OTHER_CURSOR_41 , OTHER_CURSOR_42 , OTHER_CURSOR_43 , OTHER_CURSOR_44 ,
  OTHER_CURSOR_45 , OTHER_CURSOR_46 , OTHER_CURSOR_47 , OTHER_CURSOR_48 ,
  OTHER_CURSOR_49 , OTHER_CURSOR_50 , OTHER_CURSOR_51 , OTHER_CURSOR_52 ,
  OTHER_CURSOR_53 , OTHER_CURSOR_54 , OTHER_CURSOR_55 , OTHER_CURSOR_56 ,
  OTHER_CURSOR_57 , OTHER_CURSOR_58 , OTHER_CURSOR_59 , OTHER_CURSOR_60 ,
  OTHER_CURSOR_61 , OTHER_CURSOR_62 , OTHER_CURSOR_63 , OTHER_CURSOR_64 ,
  OTHER_CURSOR_65 , OTHER_CURSOR_66 , OTHER_CURSOR_67 , OTHER_CURSOR_68 ,
  OTHER_CURSOR_69 , PREDEFINED_CURSOR_COUNT
}
 Pre-defined cursor shapes; note that you must adapt the list of names in SoViewerProxy.cpp if you change this list. More...
 
- Protected Member Functions inherited from SoViewerProxy
 SoViewerProxy ()
 Protected constructor. Class must be derived to be adapted to actual viewer.
 

Detailed Description

Definition at line 28 of file SoQtViewerProxy.h.

Constructor & Destructor Documentation

◆ SoQtViewerProxy()

SoQtViewerProxy::SoQtViewerProxy ( SoQtRenderArea * renderArea = nullptr)

This class implements access to the state of the SoQtMeVis viewer.

Constructor.

◆ ~SoQtViewerProxy()

SoQtViewerProxy::~SoQtViewerProxy ( )
inlineoverride

Destructor.

Definition at line 64 of file SoQtViewerProxy.h.

Member Function Documentation

◆ actionMayChangeCursor()

virtual bool SoQtViewerProxy::actionMayChangeCursor ( SoAction * action)
virtual

Returns whether the given action may change the cursor.

This is typically the case for SoHandleEvent actions with the exception of the artificial SoLocation2RefreshEvent event.

◆ defineCursor()

int SoQtViewerProxy::defineCursor ( const char * cursorImgFileName,
int hotSpotX = -1,
int hotSpotY = -1,
int id = -1 )
overridevirtual

Defines new cursor shape - successful operation is only guaranteed with PNG-Images with size 32x32, containing only black, white, and transparent pixels.

If the operation failed, -1 is returned. If an ID id is set, you can change the cursor shape of an already existing cursor (the file name is cached per ID, so the actual operation is only performed on the first call).

Reimplemented from SoViewerProxy.

◆ evaluateCursor()

virtual void SoQtViewerProxy::evaluateCursor ( )
virtual

Evaluates the set cursor shape. This must be called after event handling traversal.

◆ evaluateCursorCB()

static void SoQtViewerProxy::evaluateCursorCB ( void * userData,
SoAction * action )
static

This callback can be used together with a SoCallback node, userData must be set to the pointer to this (or a derived) proxy.

This need to be called after before event traversal. It calls the virtual evaluateCursor() method, which should be overwritten in specialized proxies, e.g., for remote rendering.

◆ forceDefineCursor()

static bool SoQtViewerProxy::forceDefineCursor ( int id,
const char * cursorImgFileName,
int hotSpotX = -1,
int hotSpotY = -1 )
static

defineCursor simply calls this method, which will overwrite previous shapes.

◆ getCurrentCursorPosition()

bool SoQtViewerProxy::getCurrentCursorPosition ( int & x,
int & y )
overridevirtual

Returns the current cursor position relative to the viewing window.

Returns true if the position is inside of the viewing window.

Reimplemented from SoViewerProxy.

◆ getCursor() [1/2]

int SoQtViewerProxy::getCursor ( )
inline

Returns the requested cursor shape.

Definition at line 75 of file SoQtViewerProxy.h.

◆ getCursor() [2/2]

static QCursor SoQtViewerProxy::getCursor ( int shapeID)
static

Returns the QCursor associated with the given shapeID.

◆ getPixmap()

static QPixmap SoQtViewerProxy::getPixmap ( int shapeID)
static

Returns the QPixmap associated with the given shapeID in 1x resolution.

◆ getPixmap2x()

static QPixmap SoQtViewerProxy::getPixmap2x ( int shapeID)
static

Returns the QPixmap associated with the given shapeID in 2x resolution.

◆ getShapeID()

static int SoQtViewerProxy::getShapeID ( const QCursor & cursor)
static

Returns the shape ID associated with the given cursor.

It will return -1 if the cursor is not used for any shape ID. Note that if different shape IDs use the same cursor, the lowest shape ID will be returned.

◆ hasShape()

bool SoQtViewerProxy::hasShape ( int shapeID)
overridevirtual

Checks whether this shape has already been defined.

Reimplemented from SoViewerProxy.

◆ initializeDefaultCursors()

static void SoQtViewerProxy::initializeDefaultCursors ( )
static

On some platforms, it may not be possible to initialize the default cursors at any time, so one may have to call this in advance.

◆ isInitialRendering()

bool SoQtViewerProxy::isInitialRendering ( ) const
overridevirtual

Returns true if the viewer does the initial rendering after it became visible.

Reimplemented from SoViewerProxy.

◆ isSameCursor()

static bool SoQtViewerProxy::isSameCursor ( const QCursor & a,
const QCursor & b )
static

Compares cursor shapes.

◆ isUserInterationEventInQueue()

bool SoQtViewerProxy::isUserInterationEventInQueue ( ) const
overridevirtual

Returns whether a user interaction event is the the GUI event queue.

Reimplemented from SoViewerProxy.

◆ resetCursor()

virtual void SoQtViewerProxy::resetCursor ( )
virtual

Resets the stored cursor shape. This must be called before event handling traversal.

The methods resetCursor and evaluateCursor must be called before and after traversal of the scene graph: The underlying idea is to only set the cursor if it has been set during event traversal, and only to the last shape (if it has been set more than once). This way, the cursor change can only be executed after the traversal and must be prepared by resetting the cursor shape before the traversal.

◆ resetCursorCB()

static void SoQtViewerProxy::resetCursorCB ( void * userData,
SoAction * action )
static

This callback can be used together with a SoCallback node, userData must be set to the pointer to this (or a derived) proxy.

This need to be called before event traversal.

◆ setCursor()

void SoQtViewerProxy::setCursor ( int shapeID)
overridevirtual

Sets the cursor of the viewer to pre- or user-defined shape.

Invalid positive values will set cursor to default shape, negative values will do nothing.

Reimplemented from SoViewerProxy.

◆ setForceCursor()

void SoQtViewerProxy::setForceCursor ( int shapeID)
overridevirtual

Enforces the setting the cursor, even from mouseOverUpdates.

This may lead to cursor flickering. You should probably not use this function!

Reimplemented from SoViewerProxy.

Member Data Documentation

◆ _cursorEnforced

bool SoQtViewerProxy::_cursorEnforced
protected

Cursor setting was enforced.

Definition at line 166 of file SoQtViewerProxy.h.

◆ _renderArea

SoQtRenderArea* SoQtViewerProxy::_renderArea
protected

Pointer to the actual viewer.

Definition at line 160 of file SoQtViewerProxy.h.

◆ _requestedShape

int SoQtViewerProxy::_requestedShape
protected

Currently requested cursor shape.

Definition at line 163 of file SoQtViewerProxy.h.


The documentation for this class was generated from the following file: