Index: chrome/browser/chromeos/login/rounded_view.h |
diff --git a/chrome/browser/chromeos/login/rounded_view.h b/chrome/browser/chromeos/login/rounded_view.h |
index a0ee675a38f46a21eaa7f92cdf98ce15edf5e489..0b407e82c0a476858dbddc4c56239fef6ea8f7bf 100644 |
--- a/chrome/browser/chromeos/login/rounded_view.h |
+++ b/chrome/browser/chromeos/login/rounded_view.h |
@@ -10,10 +10,10 @@ namespace chromeos { |
namespace rounded_view { |
// Corner radius of the RoundedView. |
-const int kCornerRadius = 5; |
+const SkScalar kCornerRadius = SkIntToScalar(5); |
// Stroke width to be used by the RoundedView. |
-const int kStrokeWidth = 1; |
+const SkScalar kStrokeWidth = SkIntToScalar(1); |
// Color of the inner frame of the RoundedView. |
const SkColor kInnerFrameColor = SK_ColorWHITE; |
@@ -53,6 +53,7 @@ class RoundedView: public C { |
template <typename C> |
void RoundedView<C>::ProcessPaint(gfx::Canvas* canvas) { |
+ //canvas->AsCanvasSkia()->drawColor(0xFFFFFFFF); |
Nikita (slow)
2010/12/07 09:32:40
Remove?
altimofeev
2010/12/10 10:25:25
Done.
|
// Setup clip region. |
canvas->Save(); |
canvas->AsCanvasSkia()->clipPath(GetClipPath()); |
@@ -69,8 +70,13 @@ SkPath RoundedView<C>::GetClipPath() const { |
SkRect view_rect = GetViewRect(); |
view_rect.inset(2 * rounded_view::kStrokeWidth, |
2 * rounded_view::kStrokeWidth); |
+ // 3 is used instead of 2 to avoid empty points between the clip and |
+ // the frame. |
round_view.addRoundRect( |
- GetViewRect(), rounded_view::kCornerRadius, rounded_view::kCornerRadius); |
+ view_rect, |
+ rounded_view::kCornerRadius - 3 * rounded_view::kStrokeWidth, |
+ rounded_view::kCornerRadius - 3 * rounded_view::kStrokeWidth); |
+ |
return round_view; |
} |
@@ -92,14 +98,26 @@ void RoundedView<C>::DrawFrame(gfx::Canvas* canvas) { |
paint.setAntiAlias(true); |
SkRect view_rect = GetViewRect(); |
+ // Used to make nested rounded rects look better. |
+ const SkScalar kOriginShift = 1.0; |
+ const SkScalar kDelta = 0.3; |
+ |
// Draw inner frame. |
+ view_rect.fLeft -= kOriginShift; |
+ view_rect.fTop -= kOriginShift; |
view_rect.inset(rounded_view::kStrokeWidth, rounded_view::kStrokeWidth); |
paint.setColor(rounded_view::kInnerFrameColor); |
- canvas->AsCanvasSkia()->drawRoundRect(view_rect, rounded_view::kCornerRadius, |
- rounded_view::kCornerRadius, paint); |
+ canvas->AsCanvasSkia()-> |
+ drawRoundRect(view_rect, |
+ rounded_view::kCornerRadius - rounded_view::kStrokeWidth, |
+ rounded_view::kCornerRadius - rounded_view::kStrokeWidth, |
+ paint); |
// Draw outer frame. |
- view_rect.inset(-rounded_view::kStrokeWidth, -rounded_view::kStrokeWidth); |
+ view_rect.fLeft -= kDelta; |
+ view_rect.fTop -= kDelta; |
+ view_rect.offset(rounded_view::kStrokeWidth - kDelta, |
+ rounded_view::kStrokeWidth - kDelta); |
paint.setColor(rounded_view::kOuterFrameColor); |
canvas->AsCanvasSkia()->drawRoundRect(view_rect, rounded_view::kCornerRadius, |
rounded_view::kCornerRadius, paint); |