| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/views/round_rect_painter.h" |
| |
| #include "cc/paint/paint_canvas.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/skia_util.h" |
| |
| namespace views { |
| |
| RoundRectPainter::RoundRectPainter(SkColor border_color, int corner_radius) |
| : border_color_(border_color), |
| corner_radius_(corner_radius) { |
| } |
| |
| RoundRectPainter::~RoundRectPainter() = default; |
| |
| gfx::Size RoundRectPainter::GetMinimumSize() const { |
| return gfx::Size(1, 1); |
| } |
| |
| void RoundRectPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) { |
| cc::PaintFlags flags; |
| flags.setColor(border_color_); |
| flags.setStyle(cc::PaintFlags::kStroke_Style); |
| flags.setStrokeWidth(kBorderWidth); |
| flags.setAntiAlias(true); |
| gfx::Rect rect(size); |
| rect.Inset(0, 0, kBorderWidth, kBorderWidth); |
| SkRect skia_rect = gfx::RectToSkRect(rect); |
| skia_rect.offset(kBorderWidth / 2.f, kBorderWidth / 2.f); |
| canvas->sk_canvas()->drawRoundRect(skia_rect, SkIntToScalar(corner_radius_), |
| SkIntToScalar(corner_radius_), flags); |
| } |
| |
| } // namespace views |