// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef FLUTTER_LIB_UI_WINDOW_POINTER_DATA_H_
#define FLUTTER_LIB_UI_WINDOW_POINTER_DATA_H_

#include <stdint.h>

namespace blink {

// This structure is unpacked by hooks.dart.
struct alignas(8) PointerData {
  // Must match the PointerChange enum in pointer.dart.
  enum class Change : int64_t {
    kCancel,
    kAdd,
    kRemove,
    kHover,
    kDown,
    kMove,
    kUp,
  };

  // Must match the PointerDeviceKind enum in pointer.dart.
  enum class DeviceKind : int64_t {
    kTouch,
    kMouse,
    kStylus,
    kInvertedStylus,
  };

  int64_t time_stamp;
  Change change;
  DeviceKind kind;
  int64_t device;
  double physical_x;
  double physical_y;
  int64_t buttons;
  int64_t obscured;
  double pressure;
  double pressure_min;
  double pressure_max;
  double distance;
  double distance_max;
  double radius_major;
  double radius_minor;
  double radius_min;
  double radius_max;
  double orientation;
  double tilt;

  void Clear();
};

}  // namespace blink

#endif  // FLUTTER_LIB_UI_WINDOW_POINTER_DATA_H_
