Home | History | Annotate | Download | only in views
      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:
     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