Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: ui/gfx/shadow_value.cc

Issue 2550593002: Update WM shadows for MD. (Closed)
Patch Set: fix border for small windows Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/shadow_value.h ('k') | ui/wm/core/shadow.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ui/gfx/shadow_value.h ('k') | ui/wm/core/shadow.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698