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.
5 #ifndef UI_GFX_SHADOW_VALUE_H_
6 #define UI_GFX_SHADOW_VALUE_H_
11 #include "third_party/skia/include/core/SkColor.h"
12 #include "ui/gfx/geometry/vector2d.h"
13 #include "ui/gfx/gfx_export.h"
20 typedef std::vector
<ShadowValue
> ShadowValues
;
22 // ShadowValue encapsulates parameters needed to define a shadow, including the
23 // shadow's offset, blur amount and color.
24 class GFX_EXPORT ShadowValue
{
27 ShadowValue(const gfx::Vector2d
& offset
, double blur
, SkColor color
);
30 int x() const { return offset_
.x(); }
31 int y() const { return offset_
.y(); }
32 const gfx::Vector2d
& offset() const { return offset_
; }
33 double blur() const { return blur_
; }
34 SkColor
color() const { return color_
; }
36 ShadowValue
Scale(float scale
) const;
38 std::string
ToString() const;
40 // Gets margin space needed for shadows. Note that values in returned Insets
41 // are negative because shadow margins are outside a boundary.
42 static Insets
GetMargin(const ShadowValues
& shadows
);
45 gfx::Vector2d offset_
;
47 // Blur amount of the shadow in pixels. If underlying implementation supports
48 // (e.g. Skia), it can have fraction part such as 0.5 pixel. The value
49 // defines a range from full shadow color at the start point inside the
50 // shadow to fully transparent at the end point outside it. The range is
51 // perpendicular to and centered on the shadow edge. For example, a blur
52 // amount of 4.0 means to have a blurry shadow edge of 4 pixels that
53 // transitions from full shadow color to fully transparent and with 2 pixels
54 // inside the shadow and 2 pixels goes beyond the edge.
62 #endif // UI_GFX_SHADOW_VALUE_H_