1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_
6 #define CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_
8 #import <Cocoa/Cocoa.h>
10 #include "base/mac/scoped_nsobject.h"
12 namespace info_bubble
{
14 // These values are in view coordinates.
15 const CGFloat kBubbleArrowHeight
= 8.0;
16 const CGFloat kBubbleArrowWidth
= 15.0;
17 const CGFloat kBubbleCornerRadius
= 2.0;
18 const CGFloat kBubbleArrowXOffset
= kBubbleArrowWidth
+ kBubbleCornerRadius
;
20 // Constants that define where the bubble will have rounded corners.
22 kRoundedTopCorners
= 1,
23 kRoundedBottomCorners
= 1 << 1,
24 kRoundedAllCorners
= kRoundedTopCorners
| kRoundedBottomCorners
,
27 enum BubbleArrowLocation
{
34 enum BubbleAlignment
{
35 // The tip of the arrow points to the anchor point.
37 // The edge nearest to the arrow is lined up with the anchor point.
38 kAlignEdgeToAnchorEdge
,
39 // Align the right edge to the anchor point.
40 kAlignRightEdgeToAnchorEdge
,
41 // Align the left edge to the anchor point.
42 kAlignLeftEdgeToAnchorEdge
,
45 } // namespace info_bubble
47 // Content view for a bubble with an arrow showing arbitrary content.
48 // This is where nonrectangular drawing happens.
49 @interface InfoBubbleView
: NSView
{
51 info_bubble::BubbleArrowLocation arrowLocation_
;
52 info_bubble::BubbleAlignment alignment_
;
53 info_bubble::CornerFlags cornerFlags_
;
54 base::scoped_nsobject
<NSColor
> backgroundColor_
;
57 @
property(assign
, nonatomic
) info_bubble::BubbleArrowLocation arrowLocation
;
58 @
property(assign
, nonatomic
) info_bubble::BubbleAlignment alignment
;
59 @
property(assign
, nonatomic
) info_bubble::CornerFlags cornerFlags
;
61 // Returns the point location in view coordinates of the tip of the arrow.
64 // Gets and sets the bubble's background color.
65 - (NSColor
*)backgroundColor
;
66 - (void)setBackgroundColor
:(NSColor
*)backgroundColor
;
70 #endif // CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_