| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_CONTROLS_BUTTON_IMAGE_BUTTON_H_ | 5 #ifndef VIEWS_CONTROLS_BUTTON_IMAGE_BUTTON_H_ |
| 6 #define VIEWS_CONTROLS_BUTTON_IMAGE_BUTTON_H_ | 6 #define VIEWS_CONTROLS_BUTTON_IMAGE_BUTTON_H_ |
| 7 | 7 |
| 8 #include "third_party/skia/include/core/SkBitmap.h" | 8 #include "third_party/skia/include/core/SkBitmap.h" |
| 9 #include "views/controls/button/custom_button.h" | 9 #include "views/controls/button/custom_button.h" |
| 10 | 10 |
| 11 namespace views { | 11 namespace views { |
| 12 | 12 |
| 13 // An image button. | 13 // An image button. |
| 14 | 14 |
| 15 // Note that this type of button is not focusable by default and will not be | 15 // Note that this type of button is not focusable by default and will not be |
| 16 // part of the focus chain. Call SetFocusable(true) to make it part of the | 16 // part of the focus chain. Call SetFocusable(true) to make it part of the |
| 17 // focus chain. | 17 // focus chain. |
| 18 | 18 |
| 19 class ImageButton : public CustomButton { | 19 class ImageButton : public CustomButton { |
| 20 public: | 20 public: |
| 21 explicit ImageButton(ButtonListener* listener); | 21 explicit ImageButton(ButtonListener* listener); |
| 22 virtual ~ImageButton(); | 22 virtual ~ImageButton(); |
| 23 | 23 |
| 24 // Set the image the button should use for the provided state. | 24 // Set the image the button should use for the provided state. |
| 25 virtual void SetImage(ButtonState aState, SkBitmap* anImage); | 25 virtual void SetImage(ButtonState aState, const SkBitmap* anImage); |
| 26 | 26 |
| 27 // Set the background details. | 27 // Set the background details. |
| 28 virtual void SetBackground(SkColor color, SkBitmap* image, SkBitmap* mask); | 28 void SetBackground(SkColor color, |
| 29 const SkBitmap* image, |
| 30 const SkBitmap* mask); |
| 29 | 31 |
| 30 enum HorizontalAlignment { ALIGN_LEFT = 0, | 32 enum HorizontalAlignment { ALIGN_LEFT = 0, |
| 31 ALIGN_CENTER, | 33 ALIGN_CENTER, |
| 32 ALIGN_RIGHT, }; | 34 ALIGN_RIGHT, }; |
| 33 | 35 |
| 34 enum VerticalAlignment { ALIGN_TOP = 0, | 36 enum VerticalAlignment { ALIGN_TOP = 0, |
| 35 ALIGN_MIDDLE, | 37 ALIGN_MIDDLE, |
| 36 ALIGN_BOTTOM }; | 38 ALIGN_BOTTOM }; |
| 37 | 39 |
| 38 // Sets how the image is laid out within the button's bounds. | 40 // Sets how the image is laid out within the button's bounds. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 // | 72 // |
| 71 //////////////////////////////////////////////////////////////////////////////// | 73 //////////////////////////////////////////////////////////////////////////////// |
| 72 class ToggleImageButton : public ImageButton { | 74 class ToggleImageButton : public ImageButton { |
| 73 public: | 75 public: |
| 74 explicit ToggleImageButton(ButtonListener* listener); | 76 explicit ToggleImageButton(ButtonListener* listener); |
| 75 virtual ~ToggleImageButton(); | 77 virtual ~ToggleImageButton(); |
| 76 | 78 |
| 77 // Change the toggled state. | 79 // Change the toggled state. |
| 78 void SetToggled(bool toggled); | 80 void SetToggled(bool toggled); |
| 79 | 81 |
| 80 // Like Button::SetImage(), but to set the graphics used for the | 82 // Like ImageButton::SetImage(), but to set the graphics used for the |
| 81 // "has been toggled" state. Must be called for each button state | 83 // "has been toggled" state. Must be called for each button state |
| 82 // before the button is toggled. | 84 // before the button is toggled. |
| 83 void SetToggledImage(ButtonState state, SkBitmap* image); | 85 void SetToggledImage(ButtonState state, const SkBitmap* image); |
| 84 | 86 |
| 85 // Set the tooltip text displayed when the button is toggled. | 87 // Set the tooltip text displayed when the button is toggled. |
| 86 void SetToggledTooltipText(const std::wstring& tooltip); | 88 void SetToggledTooltipText(const std::wstring& tooltip); |
| 87 | 89 |
| 88 // Overridden from ImageButton: | 90 // Overridden from ImageButton: |
| 89 virtual void SetImage(ButtonState aState, SkBitmap* anImage); | 91 virtual void SetImage(ButtonState aState, const SkBitmap* anImage); |
| 90 | 92 |
| 91 // Overridden from View: | 93 // Overridden from View: |
| 92 virtual bool GetTooltipText(const gfx::Point& p, std::wstring* tooltip); | 94 virtual bool GetTooltipText(const gfx::Point& p, std::wstring* tooltip); |
| 93 | 95 |
| 94 private: | 96 private: |
| 95 // The parent class's images_ member is used for the current images, | 97 // The parent class's images_ member is used for the current images, |
| 96 // and this array is used to hold the alternative images. | 98 // and this array is used to hold the alternative images. |
| 97 // We swap between the two when toggling. | 99 // We swap between the two when toggling. |
| 98 SkBitmap alternate_images_[BS_COUNT]; | 100 SkBitmap alternate_images_[BS_COUNT]; |
| 99 | 101 |
| 100 // True if the button is currently toggled. | 102 // True if the button is currently toggled. |
| 101 bool toggled_; | 103 bool toggled_; |
| 102 | 104 |
| 103 // The parent class's tooltip_text_ is displayed when not toggled, and | 105 // The parent class's tooltip_text_ is displayed when not toggled, and |
| 104 // this one is shown when toggled. | 106 // this one is shown when toggled. |
| 105 std::wstring toggled_tooltip_text_; | 107 std::wstring toggled_tooltip_text_; |
| 106 | 108 |
| 107 DISALLOW_COPY_AND_ASSIGN(ToggleImageButton); | 109 DISALLOW_COPY_AND_ASSIGN(ToggleImageButton); |
| 108 }; | 110 }; |
| 109 | 111 |
| 110 } // namespace views | 112 } // namespace views |
| 111 | 113 |
| 112 #endif // VIEWS_CONTROLS_BUTTON_IMAGE_BUTTON_H_ | 114 #endif // VIEWS_CONTROLS_BUTTON_IMAGE_BUTTON_H_ |
| OLD | NEW |