// Copyright 2017 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 COMPONENTS_EXO_POINTER_GESTURE_PINCH_DELEGATE_H_
#define COMPONENTS_EXO_POINTER_GESTURE_PINCH_DELEGATE_H_

#include "base/time/time.h"

namespace exo {
class Pointer;

// Handles pinch event details on pointers. Used as an extension to the
// PointerDelegate.
class PointerGesturePinchDelegate {
 public:
  // Called at the top of the pointer's destructor, to give observers a
  // chance to remove themselves.
  virtual void OnPointerDestroying(Pointer* pointer) = 0;

  virtual void OnPointerPinchBegin(uint32_t unique_touch_event_id,
                                   base::TimeTicks time_stamp,
                                   Surface* surface) = 0;

  virtual void OnPointerPinchUpdate(base::TimeTicks time_stamp,
                                    float scale) = 0;

  virtual void OnPointerPinchEnd(uint32_t unique_touch_event_id,
                                 base::TimeTicks time_stamp) = 0;

 protected:
  virtual ~PointerGesturePinchDelegate() {}
};

}  // namespace exo

#endif  // COMPONENTS_EXO_POINTER_GESTURE_PINCH_DELEGATE_H_
