| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VIEWS_BUBBLE_BUBBLE_BORDER_H_ | 5 #ifndef VIEWS_BUBBLE_BUBBLE_BORDER_H_ |
| 6 #define VIEWS_BUBBLE_BUBBLE_BORDER_H_ | 6 #define VIEWS_BUBBLE_BUBBLE_BORDER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "third_party/skia/include/core/SkColor.h" | 9 #include "third_party/skia/include/core/SkColor.h" |
| 10 #include "views/background.h" | 10 #include "views/background.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 BOTTOM_LEFT = 2, | 28 BOTTOM_LEFT = 2, |
| 29 BOTTOM_RIGHT = 3, | 29 BOTTOM_RIGHT = 3, |
| 30 LEFT_TOP = 4, | 30 LEFT_TOP = 4, |
| 31 RIGHT_TOP = 5, | 31 RIGHT_TOP = 5, |
| 32 LEFT_BOTTOM = 6, | 32 LEFT_BOTTOM = 6, |
| 33 RIGHT_BOTTOM = 7, | 33 RIGHT_BOTTOM = 7, |
| 34 NONE = 8, // No arrow. Positioned under the supplied rect. | 34 NONE = 8, // No arrow. Positioned under the supplied rect. |
| 35 FLOAT = 9 // No arrow. Centered over the supplied rect. | 35 FLOAT = 9 // No arrow. Centered over the supplied rect. |
| 36 }; | 36 }; |
| 37 | 37 |
| 38 // The position of the bubble in relation to the anchor. |
| 39 enum BubbleAlignment { |
| 40 // The tip of the arrow points to the middle of the anchor. |
| 41 ALIGN_ARROW_TO_MID_ANCHOR, |
| 42 // The edge nearest to the arrow is lined up with the edge of the anchor. |
| 43 ALIGN_EDGE_TO_ANCHOR_EDGE |
| 44 }; |
| 45 |
| 38 explicit BubbleBorder(ArrowLocation arrow_location) | 46 explicit BubbleBorder(ArrowLocation arrow_location) |
| 39 : override_arrow_offset_(0), | 47 : override_arrow_offset_(0), |
| 40 arrow_location_(arrow_location), | 48 arrow_location_(arrow_location), |
| 49 alignment_(ALIGN_ARROW_TO_MID_ANCHOR), |
| 41 background_color_(SK_ColorWHITE) { | 50 background_color_(SK_ColorWHITE) { |
| 42 InitClass(); | 51 InitClass(); |
| 43 } | 52 } |
| 44 | 53 |
| 45 // Returns the radius of the corner of the border. | 54 // Returns the radius of the corner of the border. |
| 46 static int GetCornerRadius() { | 55 static int GetCornerRadius() { |
| 47 // We can't safely calculate a border radius by comparing the sizes of the | 56 // We can't safely calculate a border radius by comparing the sizes of the |
| 48 // side and corner images, because either may have been extended in various | 57 // side and corner images, because either may have been extended in various |
| 49 // directions in order to do more subtle dropshadow fading or other effects. | 58 // directions in order to do more subtle dropshadow fading or other effects. |
| 50 // So we hardcode the most accurate value. | 59 // So we hardcode the most accurate value. |
| 51 return 4; | 60 return 4; |
| 52 } | 61 } |
| 53 | 62 |
| 54 // Sets the location for the arrow. | 63 // Sets the location for the arrow. |
| 55 void set_arrow_location(ArrowLocation arrow_location) { | 64 void set_arrow_location(ArrowLocation arrow_location) { |
| 56 arrow_location_ = arrow_location; | 65 arrow_location_ = arrow_location; |
| 57 } | 66 } |
| 58 ArrowLocation arrow_location() const { return arrow_location_; } | 67 ArrowLocation arrow_location() const { return arrow_location_; } |
| 59 | 68 |
| 69 // Sets the alignment. |
| 70 void set_alignment(BubbleAlignment alignment) { alignment_ = alignment; } |
| 71 BubbleAlignment alignment() const { return alignment_; } |
| 72 |
| 60 static ArrowLocation horizontal_mirror(ArrowLocation loc) { | 73 static ArrowLocation horizontal_mirror(ArrowLocation loc) { |
| 61 return loc >= NONE ? loc : static_cast<ArrowLocation>(loc ^ 1); | 74 return loc >= NONE ? loc : static_cast<ArrowLocation>(loc ^ 1); |
| 62 } | 75 } |
| 63 | 76 |
| 64 static ArrowLocation vertical_mirror(ArrowLocation loc) { | 77 static ArrowLocation vertical_mirror(ArrowLocation loc) { |
| 65 return loc >= NONE ? loc : static_cast<ArrowLocation>(loc ^ 2); | 78 return loc >= NONE ? loc : static_cast<ArrowLocation>(loc ^ 2); |
| 66 } | 79 } |
| 67 | 80 |
| 68 static bool has_arrow(ArrowLocation loc) { | 81 static bool has_arrow(ArrowLocation loc) { |
| 69 return loc >= NONE ? false : true; | 82 return loc >= NONE ? false : true; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 static SkBitmap* right_arrow_; | 157 static SkBitmap* right_arrow_; |
| 145 static SkBitmap* bottom_arrow_; | 158 static SkBitmap* bottom_arrow_; |
| 146 | 159 |
| 147 // Minimal offset of the arrow from the closet edge of bounding rect. | 160 // Minimal offset of the arrow from the closet edge of bounding rect. |
| 148 static int arrow_offset_; | 161 static int arrow_offset_; |
| 149 | 162 |
| 150 // If specified, overrides the pre-calculated |arrow_offset_| of the arrow. | 163 // If specified, overrides the pre-calculated |arrow_offset_| of the arrow. |
| 151 int override_arrow_offset_; | 164 int override_arrow_offset_; |
| 152 | 165 |
| 153 ArrowLocation arrow_location_; | 166 ArrowLocation arrow_location_; |
| 167 BubbleAlignment alignment_; |
| 154 SkColor background_color_; | 168 SkColor background_color_; |
| 155 | 169 |
| 156 DISALLOW_COPY_AND_ASSIGN(BubbleBorder); | 170 DISALLOW_COPY_AND_ASSIGN(BubbleBorder); |
| 157 }; | 171 }; |
| 158 | 172 |
| 159 // A Background that clips itself to the specified BubbleBorder and uses | 173 // A Background that clips itself to the specified BubbleBorder and uses |
| 160 // the background color of the BubbleBorder. | 174 // the background color of the BubbleBorder. |
| 161 class VIEWS_EXPORT BubbleBackground : public views::Background { | 175 class VIEWS_EXPORT BubbleBackground : public views::Background { |
| 162 public: | 176 public: |
| 163 explicit BubbleBackground(BubbleBorder* border) : border_(border) {} | 177 explicit BubbleBackground(BubbleBorder* border) : border_(border) {} |
| 164 | 178 |
| 165 // Background overrides. | 179 // Background overrides. |
| 166 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; | 180 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; |
| 167 | 181 |
| 168 private: | 182 private: |
| 169 BubbleBorder* border_; | 183 BubbleBorder* border_; |
| 170 | 184 |
| 171 DISALLOW_COPY_AND_ASSIGN(BubbleBackground); | 185 DISALLOW_COPY_AND_ASSIGN(BubbleBackground); |
| 172 }; | 186 }; |
| 173 | 187 |
| 174 } // namespace views | 188 } // namespace views |
| 175 | 189 |
| 176 #endif // VIEWS_BUBBLE_BUBBLE_BORDER_H_ | 190 #endif // VIEWS_BUBBLE_BUBBLE_BORDER_H_ |
| OLD | NEW |