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 kTopRight, 30 kNoArrow, 31 }; 32 33 enum BubbleAlignment { 34 // The tip of the arrow points to the anchor point. 35 kAlignArrowToAnchor, 36 // The edge nearest to the arrow is lined up with the anchor point. 37 kAlignEdgeToAnchorEdge, 38 // Align the right edge to the anchor point. 39 kAlignRightEdgeToAnchorEdge, 40 // Align the left edge to the anchor point. 41 kAlignLeftEdgeToAnchorEdge, 42 }; 43 44 } // namespace info_bubble 45 46 // Content view for a bubble with an arrow showing arbitrary content. 47 // This is where nonrectangular drawing happens. 48 @interface InfoBubbleView : NSView { 49 @private 50 info_bubble::BubbleArrowLocation arrowLocation_; 51 info_bubble::BubbleAlignment alignment_; 52 info_bubble::CornerFlags cornerFlags_; 53 base::scoped_nsobject<NSColor> backgroundColor_; 54 } 55 56 @property(assign, nonatomic) info_bubble::BubbleArrowLocation arrowLocation; 57 @property(assign, nonatomic) info_bubble::BubbleAlignment alignment; 58 @property(assign, nonatomic) info_bubble::CornerFlags cornerFlags; 59 60 // Returns the point location in view coordinates of the tip of the arrow. 61 - (NSPoint)arrowTip; 62 63 // Gets and sets the bubble's background color. 64 - (NSColor*)backgroundColor; 65 - (void)setBackgroundColor:(NSColor*)backgroundColor; 66 67 @end 68 69 #endif // CHROME_BROWSER_UI_COCOA_INFO_BUBBLE_VIEW_H_ 70