blob: e742b4cf9293ad20686a4f6dc93ecbacf84bb10b [file] [log] [blame]
// Copyright 2017 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef COBALT_DOM_WHEEL_EVENT_H_
#define COBALT_DOM_WHEEL_EVENT_H_
#include <string>
#include "cobalt/base/token.h"
#include "cobalt/dom/mouse_event.h"
#include "cobalt/dom/wheel_event_init.h"
namespace cobalt {
namespace dom {
// The WheelEvent provides specific contextual information associated with
// wheel devices. Wheels are devices that can be rotated in one or more spatial
// dimensions, and which can be associated with a pointer device
// https://www.w3.org/TR/2016/WD-uievents-20160804/#events-wheelevents
class WheelEvent : public MouseEvent {
public:
// Web API: WheelEvent
// DeltaMode values as defined by Web API Node.nodeType.
typedef uint32 DeltaMode; // Work around lack of strongly-typed enums
// in C++03.
enum DeltaModeInternal { // A name is given only to pacify the compiler.
// Use |DeltaMode| instead.
kDomDeltaPixel = 0x00,
kDomDeltaLine = 0x01,
kDomDeltaPage = 0x02,
};
explicit WheelEvent(const std::string& type);
WheelEvent(const std::string& type, const WheelEventInit& init_dict);
WheelEvent(base::Token type, const scoped_refptr<Window>& view,
const WheelEventInit& init_dict);
// Creates an event with its "initialized flag" unset.
explicit WheelEvent(UninitializedFlag uninitialized_flag);
void InitWheelEvent(const std::string& type, bool bubbles, bool cancelable,
const scoped_refptr<Window>& view, int32 detail,
int32 screen_x, int32 screen_y, int32 client_x,
int32 client_y, uint16 button,
const scoped_refptr<EventTarget>& related_target,
const std::string& modifierslist, double delta_x,
double delta_y, double delta_z, uint32 delta_mode);
double delta_x() const { return delta_x_; }
double delta_y() const { return delta_y_; }
double delta_z() const { return delta_z_; }
DeltaMode delta_mode() const { return delta_mode_; }
DEFINE_WRAPPABLE_TYPE(WheelEvent);
private:
double delta_x_;
double delta_y_;
double delta_z_;
DeltaMode delta_mode_;
~WheelEvent() override {}
};
} // namespace dom
} // namespace cobalt
#endif // COBALT_DOM_WHEEL_EVENT_H_