// Copyright 2014 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 UI_VIEWS_MASKED_TARGETER_DELEGATE_H_
#define UI_VIEWS_MASKED_TARGETER_DELEGATE_H_

#include "base/macros.h"
#include "ui/base/ui_base_types.h"
#include "ui/views/view_targeter_delegate.h"
#include "ui/views/views_export.h"

namespace gfx {
class Path;
class Rect;
}

namespace views {
class View;

// Defines the default behaviour for hit-testing a rectangular region against
// the bounds of a View having a custom-shaped hit test mask. Views define
// such a mask by extending this class.
class VIEWS_EXPORT MaskedTargeterDelegate : public ViewTargeterDelegate {
 public:
  MaskedTargeterDelegate() {}
  ~MaskedTargeterDelegate() override {}

  // Sets the hit-test mask for the view which implements this interface,
  // in that view's local coordinate space. Returns whether a valid mask
  // has been set in |mask|.
  virtual bool GetHitTestMask(gfx::Path* mask) const = 0;

  // ViewTargeterDelegate:
  bool DoesIntersectRect(const View* target,
                         const gfx::Rect& rect) const override;

 private:
  DISALLOW_COPY_AND_ASSIGN(MaskedTargeterDelegate);
};

}  // namespace views

#endif  // UI_VIEWS_MASKED_TARGETER_DELEGATE_H_
