LMMS
Loading...
Searching...
No Matches
juce::MouseInputSource Class Referencefinal

#include <juce_MouseInputSource.h>

Classes

struct  SourceList

Public Types

enum  InputSourceType { mouse , touch , pen }

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
MouseInputSource::InputSourceType getType () const noexcept
bool isMouse () const noexcept
bool isTouch () const noexcept
bool isPen () const noexcept
bool canHover () const noexcept
bool hasMouseWheel () const noexcept
int getIndex () const noexcept
bool isDragging () const noexcept
Point< float > getScreenPosition () const noexcept
Point< float > getRawScreenPosition () const noexcept
ModifierKeys getCurrentModifiers () const noexcept
float getCurrentPressure () const noexcept
float getCurrentOrientation () const noexcept
float getCurrentRotation () const noexcept
float getCurrentTilt (bool tiltX) const noexcept
bool isPressureValid () const noexcept
bool isOrientationValid () const noexcept
bool isRotationValid () const noexcept
bool isTiltValid (bool tiltX) const noexcept
ComponentgetComponentUnderMouse () const
void triggerFakeMove () const
int getNumberOfMultipleClicks () const noexcept
Time getLastMouseDownTime () const noexcept
Point< float > getLastMouseDownPosition () const noexcept
bool isLongPressOrDrag () const noexcept
bool hasMovedSignificantlySincePressed () const noexcept
bool hasMouseCursor () const noexcept
void showMouseCursor (const MouseCursor &cursor)
void hideCursor ()
void revealCursor ()
void forceMouseCursorUpdate ()
bool canDoUnboundedMovement () const noexcept
void enableUnboundedMouseMovement (bool isEnabled, bool keepCursorVisibleUntilOffscreen=false) const
bool isUnboundedMouseMovementEnabled () const
void setScreenPosition (Point< float > newPosition)
bool hasMouseMovedSignificantlySincePressed () const noexcept

Static Public Attributes

static constexpr float defaultPressure = 0.0f
static constexpr float defaultOrientation = 0.0f
static constexpr float defaultRotation = 0.0f
static constexpr float defaultTiltX = 0.0f
static constexpr float defaultTiltY = 0.0f
static const float invalidPressure = 0.0f
static const float invalidOrientation = 0.0f
static const float invalidRotation = 0.0f
static const float invalidTiltX = 0.0f
static const float invalidTiltY = 0.0f
static const Point< float > offscreenMousePos { -10.0f, -10.0f }

Private Member Functions

 MouseInputSource (MouseInputSourceInternal *) noexcept
void handleEvent (ComponentPeer &, Point< float >, int64 time, ModifierKeys, float, float, const PenDetails &)
void handleWheel (ComponentPeer &, Point< float >, int64 time, const MouseWheelDetails &)
void handleMagnifyGesture (ComponentPeer &, Point< float >, int64 time, float scaleFactor)

Static Private Member Functions

static Point< float > getCurrentRawMousePosition ()
static void setRawMousePosition (Point< float >)

Private Attributes

MouseInputSourceInternalpimpl

Friends

class ComponentPeer
class Desktop
class MouseInputSourceInternal

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 objects 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

@tags{GUI}

Member Enumeration Documentation

◆ InputSourceType

enum juce::MouseInputSource::InputSourceType

Possible mouse input sources.

Enumerator
mouse 
touch 
pen 

Constructor & Destructor Documentation

◆ MouseInputSource() [1/2]

juce::MouseInputSource::MouseInputSource ( const MouseInputSource & other)
noexcept

◆ ~MouseInputSource()

juce::MouseInputSource::~MouseInputSource ( )
noexcept

◆ MouseInputSource() [2/2]

juce::MouseInputSource::MouseInputSource ( MouseInputSourceInternal * s)
explicitprivatenoexcept

Member Function Documentation

◆ canDoUnboundedMovement()

bool juce::MouseInputSource::canDoUnboundedMovement ( ) const
noexcept

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

◆ canHover()

bool juce::MouseInputSource::canHover ( ) const
noexcept

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

◆ enableUnboundedMouseMovement()

void juce::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

◆ forceMouseCursorUpdate()

void juce::MouseInputSource::forceMouseCursorUpdate ( )

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

◆ getComponentUnderMouse()

Component * juce::MouseInputSource::getComponentUnderMouse ( ) const

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

◆ getCurrentModifiers()

ModifierKeys juce::MouseInputSource::getCurrentModifiers ( ) const
noexcept

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

◆ getCurrentOrientation()

float juce::MouseInputSource::getCurrentOrientation ( ) const
noexcept

Returns the device's current orientation in radians. 0 indicates a touch pointer aligned with the x-axis and pointing from left to right; increasing values indicate rotation in the clockwise direction. Only reported by a touch pointer.

◆ getCurrentPressure()

float juce::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.

◆ getCurrentRawMousePosition()

Point< float > juce::MouseInputSource::getCurrentRawMousePosition ( )
staticprivate

◆ getCurrentRotation()

float juce::MouseInputSource::getCurrentRotation ( ) const
noexcept

Returns the device's current rotation. Indicates the clockwise rotation, or twist, of the pointer in radians. The default is 0. Only reported by a pen pointer.

◆ getCurrentTilt()

float juce::MouseInputSource::getCurrentTilt ( bool tiltX) const
noexcept

Returns the angle of tilt of the pointer in a range of -1.0 to 1.0 either in the x- or y-axis. The default is 0. If x-axis, a positive value indicates a tilt to the right and if y-axis, a positive value indicates a tilt toward the user. Only reported by a pen pointer.

◆ getIndex()

int juce::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.

◆ getLastMouseDownPosition()

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

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

◆ getLastMouseDownTime()

Time juce::MouseInputSource::getLastMouseDownTime ( ) const
noexcept

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

◆ getNumberOfMultipleClicks()

int juce::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.

◆ getRawScreenPosition()

Point< float > juce::MouseInputSource::getRawScreenPosition ( ) const
noexcept

Returns the last-known screen position of this source without any scaling applied.

◆ getScreenPosition()

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

Returns the last-known screen position of this source.

◆ getType()

MouseInputSource::InputSourceType juce::MouseInputSource::getType ( ) const
noexcept

Returns the type of input source that this object represents.

◆ handleEvent()

void juce::MouseInputSource::handleEvent ( ComponentPeer & peer,
Point< float > pos,
int64 time,
ModifierKeys mods,
float pressure,
float orientation,
const PenDetails & penDetails )
private

◆ handleMagnifyGesture()

void juce::MouseInputSource::handleMagnifyGesture ( ComponentPeer & peer,
Point< float > pos,
int64 time,
float scaleFactor )
private

◆ handleWheel()

void juce::MouseInputSource::handleWheel ( ComponentPeer & peer,
Point< float > pos,
int64 time,
const MouseWheelDetails & wheel )
private

◆ hasMouseCursor()

bool juce::MouseInputSource::hasMouseCursor ( ) const
noexcept

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

◆ hasMouseMovedSignificantlySincePressed()

bool juce::MouseInputSource::hasMouseMovedSignificantlySincePressed ( ) const
noexcept

◆ hasMouseWheel()

bool juce::MouseInputSource::hasMouseWheel ( ) const
noexcept

Returns true if this source may have a scroll wheel.

◆ hasMovedSignificantlySincePressed()

bool juce::MouseInputSource::hasMovedSignificantlySincePressed ( ) const
noexcept

Returns true if this input source has been dragged more than a couple of pixels from the place it was pressed.

◆ hideCursor()

void juce::MouseInputSource::hideCursor ( )

Hides the mouse cursor (if there is one).

◆ isDragging()

bool juce::MouseInputSource::isDragging ( ) const
noexcept

Returns true if this device is currently being pressed.

◆ isLongPressOrDrag()

bool juce::MouseInputSource::isLongPressOrDrag ( ) const
noexcept

Returns true if this input source represents a long-press or drag interaction i.e. it has been held down for a significant amount of time or it has been dragged more than a couple of pixels from the place it was pressed.

◆ isMouse()

bool juce::MouseInputSource::isMouse ( ) const
noexcept

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

◆ isOrientationValid()

bool juce::MouseInputSource::isOrientationValid ( ) const
noexcept

Returns true if the current orientation value is meaningful.

◆ isPen()

bool juce::MouseInputSource::isPen ( ) const
noexcept

Returns true if this object represents a pen device.

◆ isPressureValid()

bool juce::MouseInputSource::isPressureValid ( ) const
noexcept

Returns true if the current pressure value is meaningful.

◆ isRotationValid()

bool juce::MouseInputSource::isRotationValid ( ) const
noexcept

Returns true if the current rotation value is meaningful.

◆ isTiltValid()

bool juce::MouseInputSource::isTiltValid ( bool tiltX) const
noexcept

Returns true if the current tilt value (either x- or y-axis) is meaningful.

◆ isTouch()

bool juce::MouseInputSource::isTouch ( ) const
noexcept

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

◆ isUnboundedMouseMovementEnabled()

bool juce::MouseInputSource::isUnboundedMouseMovementEnabled ( ) const

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

◆ operator!=()

bool juce::MouseInputSource::operator!= ( const MouseInputSource & other) const
inlinenoexcept

◆ operator=()

MouseInputSource & juce::MouseInputSource::operator= ( const MouseInputSource & other)
noexcept

◆ operator==()

bool juce::MouseInputSource::operator== ( const MouseInputSource & other) const
inlinenoexcept

◆ revealCursor()

void juce::MouseInputSource::revealCursor ( )

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

◆ setRawMousePosition()

void juce::MouseInputSource::setRawMousePosition ( Point< float > newPosition)
staticprivate

◆ setScreenPosition()

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

Attempts to set this mouse pointer's screen position.

◆ showMouseCursor()

void juce::MouseInputSource::showMouseCursor ( const MouseCursor & cursor)

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

◆ triggerFakeMove()

void juce::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.

◆ ComponentPeer

friend class ComponentPeer
friend

◆ Desktop

friend class Desktop
friend

◆ MouseInputSourceInternal

friend class MouseInputSourceInternal
friend

Member Data Documentation

◆ defaultOrientation

float juce::MouseInputSource::defaultOrientation = 0.0f
staticconstexpr

A default value for orientation, which is used when a device doesn't support it

◆ defaultPressure

float juce::MouseInputSource::defaultPressure = 0.0f
staticconstexpr

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

◆ defaultRotation

float juce::MouseInputSource::defaultRotation = 0.0f
staticconstexpr

A default value for rotation, which is used when a device doesn't support it

◆ defaultTiltX

float juce::MouseInputSource::defaultTiltX = 0.0f
staticconstexpr

Default values for tilt, which are used when a device doesn't support it

◆ defaultTiltY

float juce::MouseInputSource::defaultTiltY = 0.0f
staticconstexpr

◆ invalidOrientation

const float juce::MouseInputSource::invalidOrientation = 0.0f
static

A default value for orientation, which is used when a device doesn't support it.

This is a valid value, returning true when calling isOrientationValid() hence the deprecation. Use defaultOrientation instead.

◆ invalidPressure

const float juce::MouseInputSource::invalidPressure = 0.0f
static

A default value for pressure, which is used when a device doesn't support it.

This is a valid value, returning true when calling isPressureValid() hence the deprecation. Use defaultPressure instead.

◆ invalidRotation

const float juce::MouseInputSource::invalidRotation = 0.0f
static

A default value for rotation, which is used when a device doesn't support it.

This is a valid value, returning true when calling isRotationValid() hence the deprecation. Use defaultRotation instead.

◆ invalidTiltX

const float juce::MouseInputSource::invalidTiltX = 0.0f
static

Default values for tilt, which are used when a device doesn't support it

These are valid values, returning true when calling isTiltValid() hence the deprecation. Use defaultTiltX and defaultTiltY instead.

◆ invalidTiltY

const float juce::MouseInputSource::invalidTiltY = 0.0f
static

◆ offscreenMousePos

const Point< float > juce::MouseInputSource::offscreenMousePos { -10.0f, -10.0f }
static

An offscreen mouse position used when triggering mouse exits where we don't want to move the cursor over an existing component.

◆ pimpl

MouseInputSourceInternal* juce::MouseInputSource::pimpl
private

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