1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_VIEWS_MASKED_TARGETER_DELEGATE_H_
6#define UI_VIEWS_MASKED_TARGETER_DELEGATE_H_
7
8#include "ui/base/ui_base_types.h"
9#include "ui/views/view_targeter_delegate.h"
10#include "ui/views/views_export.h"
11
12namespace gfx {
13class Path;
14class Rect;
15}
16
17namespace views {
18class View;
19
20// Defines the default behaviour for hit-testing a rectangular region against
21// the bounds of a View having a custom-shaped hit test mask. Views define
22// such a mask by extending this class.
23class VIEWS_EXPORT MaskedTargeterDelegate : public ViewTargeterDelegate {
24 public:
25  MaskedTargeterDelegate() {}
26  virtual ~MaskedTargeterDelegate() {}
27
28  // Sets the hit-test mask for the view which implements this interface,
29  // in that view's local coordinate space. Returns whether a valid mask
30  // has been set in |mask|.
31  virtual bool GetHitTestMask(gfx::Path* mask) const = 0;
32
33  // ViewTargeterDelegate:
34  virtual bool DoesIntersectRect(const View* target,
35                                 const gfx::Rect& rect) const OVERRIDE;
36
37 private:
38  DISALLOW_COPY_AND_ASSIGN(MaskedTargeterDelegate);
39};
40
41}  // namespace views
42
43#endif  // UI_VIEWS_MASKED_TARGETER_DELEGATE_H_
44