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 12namespace info_bubble { 13 14// These values are in view coordinates. 15const CGFloat kBubbleArrowHeight = 8.0; 16const CGFloat kBubbleArrowWidth = 15.0; 17const CGFloat kBubbleCornerRadius = 2.0; 18const CGFloat kBubbleArrowXOffset = kBubbleArrowWidth + kBubbleCornerRadius; 19 20// Constants that define where the bubble will have rounded corners. 21enum CornerFlags { 22 kRoundedTopCorners = 1, 23 kRoundedBottomCorners = 1 << 1, 24 kRoundedAllCorners = kRoundedTopCorners | kRoundedBottomCorners, 25}; 26 27enum BubbleArrowLocation { 28 kTopLeft, 29 kTopCenter, 30 kTopRight, 31 kNoArrow, 32}; 33 34enum 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