JUCE
Public Member Functions | Static Public Attributes | List of all members
MouseInputSource Class Reference

Represents a linear source of mouse events from a mouse device or individual finger in a multi-touch environment. More...

Public Member Functions

 MouseInputSource (const MouseInputSource &) noexcept
 
MouseInputSourceoperator= (const MouseInputSource &) noexcept
 
 ~MouseInputSource () noexcept
 
bool operator== (const MouseInputSource &other) const noexcept
 
bool operator!= (const MouseInputSource &other) const noexcept
 
bool isMouse () const noexcept
 Returns true if this object represents a normal desk-based mouse device. More...
 
bool isTouch () const noexcept
 Returns true if this object represents a source of touch events - i.e. More...
 
bool canHover () const noexcept
 Returns true if this source has an on-screen pointer that can hover over items without clicking them. More...
 
bool hasMouseWheel () const noexcept
 Returns true if this source may have a scroll wheel. More...
 
int getIndex () const noexcept
 Returns this source's index in the global list of possible sources. More...
 
bool isDragging () const noexcept
 Returns true if this device is currently being pressed. More...
 
Point< float > getScreenPosition () const noexcept
 Returns the last-known screen position of this source. More...
 
ModifierKeys getCurrentModifiers () const noexcept
 Returns a set of modifiers that indicate which buttons are currently held down on this device. More...
 
float getCurrentPressure () const noexcept
 Returns the device's current touch or pen pressure. More...
 
bool isPressureValid () const noexcept
 Returns true if the current pressure value is meaningful. More...
 
ComponentgetComponentUnderMouse () const
 Returns the component that was last known to be under this pointer. More...
 
void triggerFakeMove () const
 Tells the device to dispatch a mouse-move or mouse-drag event. More...
 
int getNumberOfMultipleClicks () const noexcept
 Returns the number of clicks that should be counted as belonging to the current mouse event. More...
 
Time getLastMouseDownTime () const noexcept
 Returns the time at which the last mouse-down occurred. More...
 
Point< float > getLastMouseDownPosition () const noexcept
 Returns the screen position at which the last mouse-down occurred. More...
 
bool hasMouseMovedSignificantlySincePressed () const noexcept
 Returns true if this mouse is currently down, and if it has been dragged more than a couple of pixels from the place it was pressed. More...
 
bool hasMouseCursor () const noexcept
 Returns true if this input source uses a visible mouse cursor. More...
 
void showMouseCursor (const MouseCursor &cursor)
 Changes the mouse cursor, (if there is one). More...
 
void hideCursor ()
 Hides the mouse cursor (if there is one). More...
 
void revealCursor ()
 Un-hides the mouse cursor if it was hidden by hideCursor(). More...
 
void forceMouseCursorUpdate ()
 Forces an update of the mouse cursor for whatever component it's currently over. More...
 
bool canDoUnboundedMovement () const noexcept
 Returns true if this mouse can be moved indefinitely in any direction without running out of space. More...
 
void enableUnboundedMouseMovement (bool isEnabled, bool keepCursorVisibleUntilOffscreen=false) const
 Allows the mouse to move beyond the edges of the screen. More...
 
bool isUnboundedMouseMovementEnabled () const
 Returns true if this source is currently in "unbounded" mode. More...
 
void setScreenPosition (Point< float > newPosition)
 Attempts to set this mouse pointer's screen position. More...
 

Static Public Attributes

static const float invalidPressure
 A default value for pressure, which is used when a device doesn't support it, or for mouse-moves, mouse-ups, etc. More...
 

Detailed Description

Represents a linear source of mouse events from a mouse device or individual finger in a multi-touch environment.

Each MouseEvent object contains a reference to the MouseInputSource that generated it. In an environment with a single mouse for input, all events will come from the same source, but in a multi-touch system, there may be multiple MouseInputSource obects active, each representing a stream of events coming from a particular finger.

Events coming from a single MouseInputSource are always sent in a fixed and predictable order: a mouseMove will never be called without a mouseEnter having been sent beforehand, the only events that can happen between a mouseDown and its corresponding mouseUp are mouseDrags, etc. When there are multiple touches arriving from multiple MouseInputSources, their event streams may arrive in an interleaved order, so you should use the getIndex() method to find out which finger each event came from.

See also
MouseEvent

Constructor & Destructor Documentation

MouseInputSource::MouseInputSource ( const MouseInputSource )
noexcept
MouseInputSource::~MouseInputSource ( )
noexcept

Member Function Documentation

MouseInputSource& MouseInputSource::operator= ( const MouseInputSource )
noexcept
bool MouseInputSource::operator== ( const MouseInputSource other) const
noexcept
bool MouseInputSource::operator!= ( const MouseInputSource other) const
noexcept
bool MouseInputSource::isMouse ( ) const
noexcept

Returns true if this object represents a normal desk-based mouse device.

bool MouseInputSource::isTouch ( ) const
noexcept

Returns true if this object represents a source of touch events - i.e.

a finger or stylus.

bool MouseInputSource::canHover ( ) const
noexcept

Returns true if this source has an on-screen pointer that can hover over items without clicking them.

bool MouseInputSource::hasMouseWheel ( ) const
noexcept

Returns true if this source may have a scroll wheel.

int MouseInputSource::getIndex ( ) const
noexcept

Returns this source's index in the global list of possible sources.

If the system only has a single mouse, there will only be a single MouseInputSource with an index of 0.

If the system supports multi-touch input, then the index will represent a finger number, starting from 0. When the first touch event begins, it will have finger number 0, and then if a second touch happens while the first is still down, it will have index 1, etc.

bool MouseInputSource::isDragging ( ) const
noexcept

Returns true if this device is currently being pressed.

Point<float> MouseInputSource::getScreenPosition ( ) const
noexcept

Returns the last-known screen position of this source.

ModifierKeys MouseInputSource::getCurrentModifiers ( ) const
noexcept

Returns a set of modifiers that indicate which buttons are currently held down on this device.

float MouseInputSource::getCurrentPressure ( ) const
noexcept

Returns the device's current touch or pen pressure.

The range is 0 (soft) to 1 (hard). If the input device doesn't provide any pressure data, it may return a negative value here, or 0.0 or 1.0, depending on the platform.

bool MouseInputSource::isPressureValid ( ) const
noexcept

Returns true if the current pressure value is meaningful.

Component* MouseInputSource::getComponentUnderMouse ( ) const

Returns the component that was last known to be under this pointer.

void MouseInputSource::triggerFakeMove ( ) const

Tells the device to dispatch a mouse-move or mouse-drag event.

This is asynchronous - the event will occur on the message thread.

int MouseInputSource::getNumberOfMultipleClicks ( ) const
noexcept

Returns the number of clicks that should be counted as belonging to the current mouse event.

So the mouse is currently down and it's the second click of a double-click, this will return 2.

Time MouseInputSource::getLastMouseDownTime ( ) const
noexcept

Returns the time at which the last mouse-down occurred.

Point<float> MouseInputSource::getLastMouseDownPosition ( ) const
noexcept

Returns the screen position at which the last mouse-down occurred.

bool MouseInputSource::hasMouseMovedSignificantlySincePressed ( ) const
noexcept

Returns true if this mouse is currently down, and if it has been dragged more than a couple of pixels from the place it was pressed.

bool MouseInputSource::hasMouseCursor ( ) const
noexcept

Returns true if this input source uses a visible mouse cursor.

void MouseInputSource::showMouseCursor ( const MouseCursor cursor)

Changes the mouse cursor, (if there is one).

void MouseInputSource::hideCursor ( )

Hides the mouse cursor (if there is one).

void MouseInputSource::revealCursor ( )

Un-hides the mouse cursor if it was hidden by hideCursor().

void MouseInputSource::forceMouseCursorUpdate ( )

Forces an update of the mouse cursor for whatever component it's currently over.

bool MouseInputSource::canDoUnboundedMovement ( ) const
noexcept

Returns true if this mouse can be moved indefinitely in any direction without running out of space.

void MouseInputSource::enableUnboundedMouseMovement ( bool  isEnabled,
bool  keepCursorVisibleUntilOffscreen = false 
) const

Allows the mouse to move beyond the edges of the screen.

Calling this method when the mouse button is currently pressed will remove the cursor from the screen and allow the mouse to (seem to) move beyond the edges of the screen.

This means that the coordinates returned to mouseDrag() will be unbounded, and this can be used for things like custom slider controls or dragging objects around, where movement would be otherwise be limited by the mouse hitting the edges of the screen.

The unbounded mode is automatically turned off when the mouse button is released, or it can be turned off explicitly by calling this method again.

Parameters
isEnabledwhether to turn this mode on or off
keepCursorVisibleUntilOffscreenif set to false, the cursor will immediately be hidden; if true, it will only be hidden when it is moved beyond the edge of the screen
bool MouseInputSource::isUnboundedMouseMovementEnabled ( ) const

Returns true if this source is currently in "unbounded" mode.

void MouseInputSource::setScreenPosition ( Point< float >  newPosition)

Attempts to set this mouse pointer's screen position.

Member Data Documentation

const float MouseInputSource::invalidPressure
static

A default value for pressure, which is used when a device doesn't support it, or for mouse-moves, mouse-ups, etc.


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