Commit 0a45355b authored by jongdeok.kim's avatar jongdeok.kim Committed by Commit Bot

Add a border color to views::Border as a member.

This CL adds a border color to views::Border, and remove a color memeber in subclasses.

Bug: None
Change-Id: I5598325d4baac305c145b933889fea96de6d3bb9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1985635Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732957}
parent d066baec
......@@ -20,15 +20,15 @@ constexpr int kBorderPadding = 2;
} // namespace
DesksBarItemBorder::DesksBarItemBorder(int corner_radius)
: corner_radius_(corner_radius) {}
: views::Border(SK_ColorTRANSPARENT), corner_radius_(corner_radius) {}
void DesksBarItemBorder::Paint(const views::View& view, gfx::Canvas* canvas) {
if (color_ == SK_ColorTRANSPARENT)
if (color() == SK_ColorTRANSPARENT)
return;
cc::PaintFlags flags;
flags.setStrokeWidth(kBorderSize);
flags.setColor(color_);
flags.setColor(color());
flags.setStyle(cc::PaintFlags::kStroke_Style);
flags.setAntiAlias(true);
......
......@@ -21,8 +21,6 @@ class DesksBarItemBorder : public views::Border {
explicit DesksBarItemBorder(int corner_radius);
~DesksBarItemBorder() override = default;
void set_color(SkColor color) { color_ = color; }
// views::Border:
void Paint(const views::View& view, gfx::Canvas* canvas) override;
gfx::Insets GetInsets() const override;
......@@ -31,8 +29,6 @@ class DesksBarItemBorder : public views::Border {
private:
const int corner_radius_;
SkColor color_ = SK_ColorTRANSPARENT;
DISALLOW_COPY_AND_ASSIGN(DesksBarItemBorder);
};
......
......@@ -120,7 +120,7 @@ constexpr int kDangerIconOffset = 8;
class SeparatorBorder : public views::Border {
public:
explicit SeparatorBorder(SkColor separator_color)
: separator_color_(separator_color) {}
: views::Border(separator_color) {}
~SeparatorBorder() override {}
void Paint(const views::View& view, gfx::Canvas* canvas) override {
......@@ -130,7 +130,7 @@ class SeparatorBorder : public views::Border {
int end_x = base::i18n::IsRTL() ? 0 : view.width() - 1;
canvas->DrawLine(gfx::Point(end_x, kTopBottomPadding),
gfx::Point(end_x, view.height() - kTopBottomPadding),
separator_color_);
color());
}
gfx::Insets GetInsets() const override { return gfx::Insets(0, 0, 0, 1); }
......@@ -139,9 +139,6 @@ class SeparatorBorder : public views::Border {
return gfx::Size(1, 2 * kTopBottomPadding + 1);
}
private:
SkColor separator_color_;
DISALLOW_COPY_AND_ASSIGN(SeparatorBorder);
};
......
......@@ -26,7 +26,7 @@ ArrowBorder::ArrowBorder(int thickness,
SkColor background_color,
const gfx::VectorIcon& arrow_icon,
const Properties* properties)
: color_(color),
: views::Border(color),
insets_(gfx::Insets(thickness) + properties->insets),
arrow_border_insets_(properties->arrow_border_insets),
arrow_(gfx::CreateVectorIcon(arrow_icon, background_color)) {
......@@ -73,7 +73,7 @@ void ArrowBorder::Paint(const views::View& view, gfx::Canvas* canvas) {
arrow_bounds.Inset(arrow_border_insets_.Scale(dsf));
canvas->sk_canvas()->clipRect(gfx::RectToSkRect(arrow_bounds),
SkClipOp::kDifference, true);
canvas->DrawColor(color_);
canvas->DrawColor(color());
}
// Paint the arrow.
......
......@@ -67,9 +67,6 @@ class ArrowBorder : public views::Border {
gfx::Insets GetInsets() const override;
gfx::Size GetMinimumSize() const override;
// The color of the border.
const SkColor color_;
// The region occupied by the border.
const gfx::Insets insets_;
......
......@@ -33,15 +33,12 @@ class SolidSidedBorder : public Border {
private:
const gfx::Insets insets_;
const SkColor color_;
DISALLOW_COPY_AND_ASSIGN(SolidSidedBorder);
};
SolidSidedBorder::SolidSidedBorder(const gfx::Insets& insets, SkColor color)
: insets_(insets),
color_(color) {
}
: Border(color), insets_(insets) {}
void SolidSidedBorder::Paint(const View& view, gfx::Canvas* canvas) {
// Undo DSF so that we can be sure to draw an integral number of pixels for
......@@ -63,7 +60,7 @@ void SolidSidedBorder::Paint(const View& view, gfx::Canvas* canvas) {
scaled_bounds.Inset(insets_.Scale(dsf));
canvas->sk_canvas()->clipRect(gfx::RectFToSkRect(scaled_bounds),
SkClipOp::kDifference, true);
canvas->DrawColor(color_);
canvas->DrawColor(color());
}
gfx::Insets SolidSidedBorder::GetInsets() const {
......@@ -91,7 +88,6 @@ class RoundedRectBorder : public Border {
const int thickness_;
const int corner_radius_;
const gfx::Insets paint_insets_;
const SkColor color_;
DISALLOW_COPY_AND_ASSIGN(RoundedRectBorder);
};
......@@ -100,15 +96,15 @@ RoundedRectBorder::RoundedRectBorder(int thickness,
int corner_radius,
const gfx::Insets& paint_insets,
SkColor color)
: thickness_(thickness),
: Border(color),
thickness_(thickness),
corner_radius_(corner_radius),
paint_insets_(paint_insets),
color_(color) {}
paint_insets_(paint_insets) {}
void RoundedRectBorder::Paint(const View& view, gfx::Canvas* canvas) {
cc::PaintFlags flags;
flags.setStrokeWidth(thickness_);
flags.setColor(color_);
flags.setColor(color());
flags.setStyle(cc::PaintFlags::kStroke_Style);
flags.setAntiAlias(true);
......@@ -228,6 +224,8 @@ gfx::Size BorderPainter::GetMinimumSize() const {
Border::Border() = default;
Border::Border(SkColor color) : color_(color) {}
Border::~Border() = default;
std::unique_ptr<Border> NullBorder() {
......
......@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/views/views_export.h"
......@@ -41,6 +42,7 @@ class View;
class VIEWS_EXPORT Border {
public:
Border();
explicit Border(SkColor color);
virtual ~Border();
// Renders the border for the specified view.
......@@ -57,7 +59,14 @@ class VIEWS_EXPORT Border {
// content laid out relative to these images.
virtual gfx::Size GetMinimumSize() const = 0;
SkColor color() const { return color_; }
// Sets the border color.
void set_color(SkColor color) { color_ = color; }
private:
SkColor color_ = gfx::kPlaceholderColor;
DISALLOW_COPY_AND_ASSIGN(Border);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment