1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 #ifndef mozilla_dom_WheelEvent_h_
8 #define mozilla_dom_WheelEvent_h_
9 
10 #include "mozilla/dom/MouseEvent.h"
11 #include "mozilla/dom/WheelEventBinding.h"
12 #include "mozilla/EventForwards.h"
13 
14 namespace mozilla {
15 namespace dom {
16 
17 class WheelEvent : public MouseEvent
18 {
19 public:
20   WheelEvent(EventTarget* aOwner,
21              nsPresContext* aPresContext,
22              WidgetWheelEvent* aWheelEvent);
23 
24   NS_DECL_ISUPPORTS_INHERITED
25 
26   // Forward to base class
27   NS_FORWARD_TO_MOUSEEVENT
28 
29   static
30   already_AddRefed<WheelEvent> Constructor(const GlobalObject& aGlobal,
31                                            const nsAString& aType,
32                                            const WheelEventInit& aParam,
33                                            ErrorResult& aRv);
34 
WrapObjectInternal(JSContext * aCx,JS::Handle<JSObject * > aGivenProto)35   virtual JSObject* WrapObjectInternal(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
36   {
37     return WheelEventBinding::Wrap(aCx, this, aGivenProto);
38   }
39 
40   // NOTE: DeltaX(), DeltaY() and DeltaZ() return CSS pixels when deltaMode is
41   //       DOM_DELTA_PIXEL. (The internal event's delta values are device pixels
42   //       if it's dispatched by widget)
43   double DeltaX();
44   double DeltaY();
45   double DeltaZ();
46   uint32_t DeltaMode();
47 
48   void
49   InitWheelEvent(const nsAString& aType, bool aCanBubble, bool aCancelable,
50                  nsGlobalWindow* aView, int32_t aDetail,
51                  int32_t aScreenX, int32_t aScreenY,
52                  int32_t aClientX, int32_t aClientY, uint16_t aButton,
53                  EventTarget* aRelatedTarget, const nsAString& aModifiersList,
54                  double aDeltaX, double aDeltaY, double aDeltaZ,
55                  uint32_t aDeltaMode);
56 
57 protected:
~WheelEvent()58   ~WheelEvent() {}
59 
60 private:
61   int32_t mAppUnitsPerDevPixel;
62 };
63 
64 } // namespace dom
65 } // namespace mozilla
66 
67 already_AddRefed<mozilla::dom::WheelEvent>
68 NS_NewDOMWheelEvent(mozilla::dom::EventTarget* aOwner,
69                     nsPresContext* aPresContext,
70                     mozilla::WidgetWheelEvent* aEvent);
71 
72 #endif // mozilla_dom_WheelEvent_h_
73