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