|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef UI_GFX_SHADOW_VALUE_H_ | 
|  | #define UI_GFX_SHADOW_VALUE_H_ | 
|  |  | 
|  | #include <string> | 
|  | #include <vector> | 
|  |  | 
|  | #include "third_party/skia/include/core/SkColor.h" | 
|  | #include "ui/gfx/geometry/vector2d.h" | 
|  | #include "ui/gfx/gfx_export.h" | 
|  |  | 
|  | namespace gfx { | 
|  |  | 
|  | class Insets; | 
|  |  | 
|  | class ShadowValue; | 
|  | typedef std::vector<ShadowValue> ShadowValues; | 
|  |  | 
|  | // ShadowValue encapsulates parameters needed to define a shadow, including the | 
|  | // shadow's offset, blur amount and color. | 
|  | class GFX_EXPORT ShadowValue { | 
|  | public: | 
|  | ShadowValue(); | 
|  | ShadowValue(const gfx::Vector2d& offset, double blur, SkColor color); | 
|  | ~ShadowValue(); | 
|  |  | 
|  | int x() const { return offset_.x(); } | 
|  | int y() const { return offset_.y(); } | 
|  | const gfx::Vector2d& offset() const { return offset_; } | 
|  | double blur() const { return blur_; } | 
|  | SkColor color() const { return color_; } | 
|  |  | 
|  | ShadowValue Scale(float scale) const; | 
|  |  | 
|  | std::string ToString() const; | 
|  |  | 
|  | // Gets margin space needed for shadows. Note that values in returned Insets | 
|  | // are negative because shadow margins are outside a boundary. | 
|  | static Insets GetMargin(const ShadowValues& shadows); | 
|  |  | 
|  | private: | 
|  | gfx::Vector2d offset_; | 
|  |  | 
|  | // Blur amount of the shadow in pixels. If underlying implementation supports | 
|  | // (e.g. Skia), it can have fraction part such as 0.5 pixel. The value | 
|  | // defines a range from full shadow color at the start point inside the | 
|  | // shadow to fully transparent at the end point outside it. The range is | 
|  | // perpendicular to and centered on the shadow edge. For example, a blur | 
|  | // amount of 4.0 means to have a blurry shadow edge of 4 pixels that | 
|  | // transitions from full shadow color to fully transparent and with 2 pixels | 
|  | // inside the shadow and 2 pixels goes beyond the edge. | 
|  | double blur_; | 
|  |  | 
|  | SkColor color_; | 
|  | }; | 
|  |  | 
|  | }  // namespace gfx | 
|  |  | 
|  | #endif  // UI_GFX_SHADOW_VALUE_H_ |