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