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