77 lines
2.3 KiB
C++
77 lines
2.3 KiB
C++
// This file is part of VSTGUI. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this
|
|
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
|
|
|
|
#include "events.h"
|
|
#include "platform/platformfactory.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace VSTGUI {
|
|
namespace EventPrivate {
|
|
static uint64_t counter = 0;
|
|
} // EventPrivate
|
|
|
|
//------------------------------------------------------------------------
|
|
Event::Event () noexcept
|
|
: id (++EventPrivate::counter), timestamp (getPlatformFactory ().getTicks ())
|
|
{
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
CButtonState buttonStateFromEventModifiers (const Modifiers& mods)
|
|
{
|
|
CButtonState state;
|
|
if (mods.has (ModifierKey::Control))
|
|
state |= kControl;
|
|
if (mods.has (ModifierKey::Shift))
|
|
state |= kShift;
|
|
if (mods.has (ModifierKey::Alt))
|
|
state |= kAlt;
|
|
return state;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
CButtonState buttonStateFromMouseEvent (const MouseEvent& event)
|
|
{
|
|
CButtonState state = buttonStateFromEventModifiers (event.modifiers);
|
|
if (event.buttonState.has (MouseButton::Left))
|
|
state |= kLButton;
|
|
if (event.buttonState.has (MouseButton::Right))
|
|
state |= kRButton;
|
|
if (event.buttonState.has (MouseButton::Middle))
|
|
state |= kMButton;
|
|
if (event.buttonState.has (MouseButton::Fourth))
|
|
state |= kButton4;
|
|
if (event.buttonState.has (MouseButton::Fifth))
|
|
state |= kButton5;
|
|
if (auto downEvent = asMouseDownEvent (event))
|
|
{
|
|
if (downEvent->clickCount > 1)
|
|
state |= kDoubleClick;
|
|
}
|
|
return state;
|
|
}
|
|
|
|
#if VSTGUI_ENABLE_DEPRECATED_METHODS
|
|
//------------------------------------------------------------------------
|
|
VstKeyCode toVstKeyCode (const KeyboardEvent& event)
|
|
{
|
|
VstKeyCode keyCode {};
|
|
keyCode.character = event.character;
|
|
keyCode.virt = toVstVirtualKey (event.virt);
|
|
if (event.modifiers.has (ModifierKey::Shift))
|
|
keyCode.modifier |= MODIFIER_SHIFT;
|
|
if (event.modifiers.has (ModifierKey::Alt))
|
|
keyCode.modifier |= MODIFIER_ALTERNATE;
|
|
if (event.modifiers.has (ModifierKey::Control))
|
|
keyCode.modifier |= MODIFIER_CONTROL;
|
|
if (event.modifiers.has (ModifierKey::Super))
|
|
keyCode.modifier |= MODIFIER_COMMAND;
|
|
return keyCode;
|
|
}
|
|
#endif
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
} // VSTGUI
|