// Copyright 2015 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.

[DartPackage="sky_services"]
module sky;

enum EventType {
  UNKNOWN,
  POINTER_CANCEL,
  POINTER_DOWN,
  POINTER_MOVE,
  POINTER_UP,
  GESTURE_FLING_CANCEL,
  GESTURE_FLING_START,
  GESTURE_LONG_PRESS,
  GESTURE_SCROLL_BEGIN,
  GESTURE_SCROLL_END,
  GESTURE_SCROLL_UPDATE,
  GESTURE_SHOW_PRESS,
  GESTURE_TAP,
  GESTURE_TAP_DOWN,
  BACK,
};

enum PointerKind {
  TOUCH,
};

struct PointerData {
  int32 pointer;
  PointerKind kind;
  float x;
  float y;
  int32 buttons;
  float pressure;
  float pressure_min;
  float pressure_max;
  float distance;
  float distance_min;
  float distance_max;
  float radius_major;
  float radius_minor;
  float radius_min;
  float radius_max;
  float orientation;
  float tilt;
};

struct GestureData {
  int32 primary_pointer;
  float x;
  float y;
  float dx;
  float dy;
  float velocityX;
  float velocityY;
};

// TODO(abarth): Should we have a malloc-free way of creating an input event
// message? What we have now could stress out the Android Java GC.
struct InputEvent {
  EventType type;
  int64 time_stamp;
  PointerData? pointer_data;
  GestureData? gesture_data;
};
