• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 namespace gfx {
13 class Path;
14 class Rect;
15 }
16 
17 namespace views {
18 class 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.
23 class VIEWS_EXPORT MaskedTargeterDelegate : public ViewTargeterDelegate {
24  public:
MaskedTargeterDelegate()25   MaskedTargeterDelegate() {}
~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