• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_
6 #define CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_
7 
8 #import <Cocoa/Cocoa.h>
9 
10 #include "base/mac/scoped_nsobject.h"
11 
12 namespace info_bubble {
13 
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;
19 
20 // Constants that define where the bubble will have rounded corners.
21 enum CornerFlags {
22   kRoundedTopCorners = 1,
23   kRoundedBottomCorners = 1 << 1,
24   kRoundedAllCorners = kRoundedTopCorners | kRoundedBottomCorners,
25 };
26 
27 enum BubbleArrowLocation {
28   kTopLeft,
29   kTopCenter,
30   kTopRight,
31   kNoArrow,
32 };
33 
34 enum BubbleAlignment {
35   // The tip of the arrow points to the anchor point.
36   kAlignArrowToAnchor,
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,
43 };
44 
45 }  // namespace info_bubble
46 
47 // Content view for a bubble with an arrow showing arbitrary content.
48 // This is where nonrectangular drawing happens.
49 @interface InfoBubbleView : NSView {
50  @private
51   info_bubble::BubbleArrowLocation arrowLocation_;
52   info_bubble::BubbleAlignment alignment_;
53   info_bubble::CornerFlags cornerFlags_;
54   base::scoped_nsobject<NSColor> backgroundColor_;
55 }
56 
57 @property(assign, nonatomic) info_bubble::BubbleArrowLocation arrowLocation;
58 @property(assign, nonatomic) info_bubble::BubbleAlignment alignment;
59 @property(assign, nonatomic) info_bubble::CornerFlags cornerFlags;
60 
61 // Returns the point location in view coordinates of the tip of the arrow.
62 - (NSPoint)arrowTip;
63 
64 // Gets and sets the bubble's background color.
65 - (NSColor*)backgroundColor;
66 - (void)setBackgroundColor:(NSColor*)backgroundColor;
67 
68 @end
69 
70 #endif  // CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_
71