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

Unified Diff: ui/views/shadow_border.cc

Issue 900163002: Make ShadowBorder use ShadowValue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_animations
Patch Set: Created 5 years, 10 months 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/views/shadow_border.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/shadow_border.cc
diff --git a/ui/views/shadow_border.cc b/ui/views/shadow_border.cc
index 3d5235cf84f690e479f9b9fd96b631299347dd41..fe744721f38fe0e8c146163e2914372eeea105d7 100644
--- a/ui/views/shadow_border.cc
+++ b/ui/views/shadow_border.cc
@@ -7,50 +7,51 @@
#include "ui/gfx/canvas.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/shadow_value.h"
#include "ui/gfx/skia_util.h"
#include "ui/views/view.h"
namespace views {
-ShadowBorder::ShadowBorder(int blur,
- SkColor color,
- int vertical_offset,
- int horizontal_offset)
+namespace {
+
+gfx::Insets GetInsetsFromShadowValue(const gfx::ShadowValue& shadow) {
+ std::vector<gfx::ShadowValue> shadows;
+ shadows.push_back(shadow);
+ return -gfx::ShadowValue::GetMargin(shadows);
+}
+
+} // namespace
+
+ShadowBorder::ShadowBorder(const gfx::ShadowValue& shadow)
: views::Border(),
- blur_(blur),
- color_(color),
- vertical_offset_(vertical_offset),
- horizontal_offset_(horizontal_offset) {}
+ shadow_value_(shadow),
+ insets_(GetInsetsFromShadowValue(shadow)) {
+}
-ShadowBorder::~ShadowBorder() {}
+ShadowBorder::~ShadowBorder() {
+}
// TODO(sidharthms): Re-painting a shadow looper on every paint call may yield
// poor performance. Ideally we should be caching the border to bitmaps.
void ShadowBorder::Paint(const views::View& view, gfx::Canvas* canvas) {
SkPaint paint;
std::vector<gfx::ShadowValue> shadows;
- shadows.push_back(gfx::ShadowValue(gfx::Point(), blur_, color_));
+ shadows.push_back(shadow_value_);
skia::RefPtr<SkDrawLooper> looper = gfx::CreateShadowDrawLooper(shadows);
paint.setLooper(looper.get());
paint.setColor(SK_ColorTRANSPARENT);
paint.setStrokeJoin(SkPaint::kRound_Join);
gfx::Rect bounds(view.size());
- // TODO(pkasting): This isn't right if one of the offsets is larger than
- // (blur_ / 2).
- bounds.Inset(gfx::Insets(blur_ / 2, blur_ / 2, blur_ / 2, blur_ / 2));
+ bounds.Inset(-gfx::ShadowValue::GetMargin(shadows));
canvas->DrawRect(bounds, paint);
}
gfx::Insets ShadowBorder::GetInsets() const {
- return gfx::Insets(blur_ / 2 - vertical_offset_,
- blur_ / 2 - horizontal_offset_,
- blur_ / 2 + vertical_offset_,
- blur_ / 2 + horizontal_offset_);
+ return insets_;
}
gfx::Size ShadowBorder::GetMinimumSize() const {
- return gfx::Size(blur_, blur_);
+ return gfx::Size(shadow_value_.blur(), shadow_value_.blur());
}
} // namespace views
« no previous file with comments | « ui/views/shadow_border.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698