| Index: ui/gfx/shadow_value.cc
|
| diff --git a/ui/gfx/shadow_value.cc b/ui/gfx/shadow_value.cc
|
| index 2599fdbe446cd4089540533ed7477f4170190a0a..a8ab3f894366b49aab025aa317397c28a2aa2736 100644
|
| --- a/ui/gfx/shadow_value.cc
|
| +++ b/ui/gfx/shadow_value.cc
|
| @@ -14,19 +14,43 @@
|
|
|
| namespace gfx {
|
|
|
| -ShadowValue::ShadowValue()
|
| - : blur_(0),
|
| - color_(0) {
|
| +namespace {
|
| +
|
| +Insets GetInsets(const ShadowValues& shadows, bool include_inner_blur) {
|
| + int left = 0;
|
| + int top = 0;
|
| + int right = 0;
|
| + int bottom = 0;
|
| +
|
| + for (size_t i = 0; i < shadows.size(); ++i) {
|
| + const ShadowValue& shadow = shadows[i];
|
| +
|
| + double blur = shadow.blur();
|
| + if (!include_inner_blur)
|
| + blur /= 2;
|
| + // Add 0.5 to round up to the next integer.
|
| + int blur_length = static_cast<int>(blur + 0.5);
|
| +
|
| + left = std::max(left, blur_length - shadow.x());
|
| + top = std::max(top, blur_length - shadow.y());
|
| + right = std::max(right, blur_length + shadow.x());
|
| + bottom = std::max(bottom, blur_length + shadow.y());
|
| + }
|
| +
|
| + return Insets(top, left, bottom, right);
|
| }
|
|
|
| +} // namespace
|
| +
|
| +ShadowValue::ShadowValue() : blur_(0), color_(0) {}
|
| +
|
| ShadowValue::ShadowValue(const gfx::Vector2d& offset,
|
| double blur,
|
| SkColor color)
|
| : offset_(offset), blur_(blur), color_(color) {
|
| }
|
|
|
| -ShadowValue::~ShadowValue() {
|
| -}
|
| +ShadowValue::~ShadowValue() {}
|
|
|
| ShadowValue ShadowValue::Scale(float scale) const {
|
| gfx::Vector2d scaled_offset =
|
| @@ -47,24 +71,13 @@ std::string ShadowValue::ToString() const {
|
|
|
| // static
|
| Insets ShadowValue::GetMargin(const ShadowValues& shadows) {
|
| - int left = 0;
|
| - int top = 0;
|
| - int right = 0;
|
| - int bottom = 0;
|
| -
|
| - for (size_t i = 0; i < shadows.size(); ++i) {
|
| - const ShadowValue& shadow = shadows[i];
|
| -
|
| - // Add 0.5 to round up to the next integer.
|
| - int blur = static_cast<int>(shadow.blur() / 2 + 0.5);
|
| -
|
| - left = std::max(left, blur - shadow.x());
|
| - top = std::max(top, blur - shadow.y());
|
| - right = std::max(right, blur + shadow.x());
|
| - bottom = std::max(bottom, blur + shadow.y());
|
| - }
|
| + gfx::Insets margins = GetInsets(shadows, false);
|
| + return -margins;
|
| +}
|
|
|
| - return Insets(-top, -left, -bottom, -right);
|
| +// static
|
| +Insets ShadowValue::GetBlurRegion(const ShadowValues& shadows) {
|
| + return GetInsets(shadows, true);
|
| }
|
|
|
| } // namespace gfx
|
|
|