| OLD | NEW |
| (Empty) |
| 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 UI_VIEWS_BACKGROUND_H_ | |
| 6 #define UI_VIEWS_BACKGROUND_H_ | |
| 7 | |
| 8 #include "build/build_config.h" | |
| 9 | |
| 10 #if defined(OS_WIN) | |
| 11 #include <windows.h> | |
| 12 #endif // defined(OS_WIN) | |
| 13 | |
| 14 #include "base/basictypes.h" | |
| 15 #include "third_party/skia/include/core/SkColor.h" | |
| 16 #include "ui/views/views_export.h" | |
| 17 | |
| 18 namespace gfx { | |
| 19 class Canvas; | |
| 20 } | |
| 21 | |
| 22 namespace views { | |
| 23 | |
| 24 class Painter; | |
| 25 class View; | |
| 26 | |
| 27 ///////////////////////////////////////////////////////////////////////////// | |
| 28 // | |
| 29 // Background class | |
| 30 // | |
| 31 // A background implements a way for views to paint a background. The | |
| 32 // background can be either solid or based on a gradient. Of course, | |
| 33 // Background can be subclassed to implement various effects. | |
| 34 // | |
| 35 // Any View can have a background. See View::SetBackground() and | |
| 36 // View::OnPaintBackground() | |
| 37 // | |
| 38 ///////////////////////////////////////////////////////////////////////////// | |
| 39 class VIEWS_EXPORT Background { | |
| 40 public: | |
| 41 Background(); | |
| 42 virtual ~Background(); | |
| 43 | |
| 44 // Creates a background that fills the canvas in the specified color. | |
| 45 static Background* CreateSolidBackground(SkColor color); | |
| 46 | |
| 47 // Creates a background that fills the canvas in the specified color. | |
| 48 static Background* CreateSolidBackground(int r, int g, int b) { | |
| 49 return CreateSolidBackground(SkColorSetRGB(r, g, b)); | |
| 50 } | |
| 51 | |
| 52 // Creates a background that fills the canvas in the specified color. | |
| 53 static Background* CreateSolidBackground(int r, int g, int b, int a) { | |
| 54 return CreateSolidBackground(SkColorSetARGB(a, r, g, b)); | |
| 55 } | |
| 56 | |
| 57 // Creates a background that contains a vertical gradient that varies | |
| 58 // from |color1| to |color2| | |
| 59 static Background* CreateVerticalGradientBackground(SkColor color1, | |
| 60 SkColor color2); | |
| 61 | |
| 62 // Creates a background that contains a vertical gradient. The gradient can | |
| 63 // have multiple |colors|. The |pos| array contains the relative positions of | |
| 64 // each corresponding color. |colors| and |pos| must be the same size. The | |
| 65 // first element in |pos| must be 0.0 and the last element must be 1.0. | |
| 66 // |count| contains the number of elements in |colors| and |pos|. | |
| 67 static Background* CreateVerticalMultiColorGradientBackground(SkColor* colors, | |
| 68 SkScalar* pos, | |
| 69 size_t count); | |
| 70 | |
| 71 // Creates Chrome's standard panel background | |
| 72 static Background* CreateStandardPanelBackground(); | |
| 73 | |
| 74 // Creates a Background from the specified Painter. If owns_painter is | |
| 75 // true, the Painter is deleted when the Border is deleted. | |
| 76 static Background* CreateBackgroundPainter(bool owns_painter, | |
| 77 Painter* painter); | |
| 78 | |
| 79 // Render the background for the provided view | |
| 80 virtual void Paint(gfx::Canvas* canvas, View* view) const = 0; | |
| 81 | |
| 82 // Set a solid, opaque color to be used when drawing backgrounds of native | |
| 83 // controls. Unfortunately alpha=0 is not an option. | |
| 84 void SetNativeControlColor(SkColor color); | |
| 85 | |
| 86 // Returns the "background color". This is equivalent to the color set in | |
| 87 // SetNativeControlColor(). For solid backgrounds, this is the color; for | |
| 88 // gradient backgrounds, it's the midpoint of the gradient; for painter | |
| 89 // backgrounds, this is not useful (returns a default color). | |
| 90 SkColor get_color() const { return color_; } | |
| 91 | |
| 92 #if defined(OS_WIN) | |
| 93 // TODO(port): Make GetNativeControlBrush portable (currently uses HBRUSH). | |
| 94 | |
| 95 // Get the brush that was specified by SetNativeControlColor | |
| 96 HBRUSH GetNativeControlBrush() const; | |
| 97 #endif // defined(OS_WIN) | |
| 98 | |
| 99 private: | |
| 100 SkColor color_; | |
| 101 #if defined(OS_WIN) | |
| 102 // TODO(port): Create portable replacement for HBRUSH. | |
| 103 mutable HBRUSH native_control_brush_; | |
| 104 #endif // defined(OS_WIN) | |
| 105 | |
| 106 DISALLOW_COPY_AND_ASSIGN(Background); | |
| 107 }; | |
| 108 | |
| 109 } // namespace views | |
| 110 | |
| 111 #endif // UI_VIEWS_BACKGROUND_H_ | |
| OLD | NEW |