//
// WheelEvent.cpp
// script-engine/src
//
// Created by Stephen Birarda on 2014-10-27.
// Copyright 2014 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#include "WheelEvent.h"
#include "ScriptEngine.h"
#include "ScriptValue.h"
WheelEvent::WheelEvent() :
x(0.0f),
y(0.0f),
delta(0.0f),
orientation("UNKNOwN"),
isLeftButton(false),
isRightButton(false),
isMiddleButton(false),
isShifted(false),
isControl(false),
isMeta(false),
isAlt(false)
{
}
WheelEvent::WheelEvent(const QWheelEvent& event) {
x = event.position().x();
y = event.position().y();
if (event.angleDelta().x() != 0) {
orientation = "HORIZONTAL";
} else {
orientation = "VERTICAL";
}
// button pressed state
isLeftButton = (event.buttons().testFlag(Qt::LeftButton));
isRightButton = (event.buttons().testFlag(Qt::RightButton));
isMiddleButton = (event.buttons().testFlag(Qt::MiddleButton));
// keyboard modifiers
isShifted = event.modifiers().testFlag(Qt::ShiftModifier);
isMeta = event.modifiers().testFlag(Qt::MetaModifier);
isControl = event.modifiers().testFlag(Qt::ControlModifier);
isAlt = event.modifiers().testFlag(Qt::AltModifier);
}
/*@jsdoc
* A mouse wheel event.
* @typedef {object} WheelEvent
* @property {number} x - Integer x-coordinate of the event on the Interface window or HMD HUD.
* @property {number} y - Integer y-coordinate of the event on the Interface window or HMD HUD.
* @property {number} delta - Integer number indicating the direction and speed to scroll: positive numbers to scroll up, and
* negative numers to scroll down.
* @property {string} orientation - The orientation of the wheel: "VERTICAL"
for a typical mouse;
* "HORIZONTAL"
for a "horizontal" wheel.
* @property {boolean} isLeftButton - true
if the left button was pressed when the event was generated, otherwise
* false
.
* @property {boolean} isMiddleButton - true
if the middle button was pressed when the event was generated,
* otherwise false
.
* @property {boolean} isRightButton - true
if the right button was pressed when the event was generated,
* otherwise false
.
* @property {boolean} isShifted - true
if the Shift key was pressed when the event was generated, otherwise
* false
.
* @property {boolean} isMeta - true
if the "meta" key was pressed when the event was generated, otherwise
* false
. On Windows the "meta" key is the Windows key; on OSX it is the Control (Splat) key.
* @property {boolean} isControl - true
if the "control" key was pressed when the event was generated, otherwise
* false
. On Windows the "control" key is the Ctrl key; on OSX it is the Command key.
* @property {boolean} isAlt - true
if the Alt key was pressed when the event was generated, otherwise
* false
.
* @example