summaryrefslogtreecommitdiffstats
path: root/ui/views/painter.cc
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-17 17:56:26 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-17 17:56:26 +0000
commitef1e4cd23440f9ce72248becc7ae2fd119dea0e3 (patch)
tree1dfd77084e9b10f1864af23b83a897ba7e7faa40 /ui/views/painter.cc
parentc6de4d8e6b2349e44742d81d6c8d4c1a8b23a8dd (diff)
downloadchromium_src-ef1e4cd23440f9ce72248becc7ae2fd119dea0e3.zip
chromium_src-ef1e4cd23440f9ce72248becc7ae2fd119dea0e3.tar.gz
chromium_src-ef1e4cd23440f9ce72248becc7ae2fd119dea0e3.tar.bz2
Add GetMinimumSize() to Painter. This makes it easier for users of any Painter
(not just HorizontalPainter) to tell how tall/wide/etc. the background images are. BUG=231005 TEST=none R=sky@chromium.org Review URL: https://codereview.chromium.org/14710016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200849 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/painter.cc')
-rw-r--r--ui/views/painter.cc25
1 files changed, 19 insertions, 6 deletions
diff --git a/ui/views/painter.cc b/ui/views/painter.cc
index 9f8d220..ce84a58 100644
--- a/ui/views/painter.cc
+++ b/ui/views/painter.cc
@@ -32,6 +32,7 @@ class GradientPainter : public Painter {
virtual ~GradientPainter();
// Painter:
+ virtual gfx::Size GetMinimumSize() const OVERRIDE;
virtual void Paint(gfx::Canvas* canvas, const gfx::Size& size) OVERRIDE;
private:
@@ -64,6 +65,10 @@ GradientPainter::GradientPainter(bool horizontal,
GradientPainter::~GradientPainter() {
}
+gfx::Size GradientPainter::GetMinimumSize() const {
+ return gfx::Size();
+}
+
void GradientPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) {
SkPaint paint;
SkPoint p[2];
@@ -102,6 +107,7 @@ class VIEWS_EXPORT ImagePainter : public Painter {
bool IsEmpty() const;
// Painter:
+ virtual gfx::Size GetMinimumSize() const OVERRIDE;
virtual void Paint(gfx::Canvas* canvas, const gfx::Size& size) OVERRIDE;
private:
@@ -156,6 +162,12 @@ bool ImagePainter::IsEmpty() const {
return images_[0].isNull();
}
+gfx::Size ImagePainter::GetMinimumSize() const {
+ return IsEmpty() ? gfx::Size() : gfx::Size(
+ images_[0].width() + images_[1].width() + images_[2].width(),
+ images_[0].height() + images_[3].height() + images_[6].height());
+}
+
void ImagePainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) {
if (IsEmpty())
return;
@@ -276,9 +288,14 @@ HorizontalPainter::HorizontalPainter(const int image_resource_names[]) {
HorizontalPainter::~HorizontalPainter() {
}
+gfx::Size HorizontalPainter::GetMinimumSize() const {
+ return gfx::Size(
+ images_[LEFT]->width() + images_[CENTER]->width() +
+ images_[RIGHT]->width(), images_[LEFT]->height());
+}
+
void HorizontalPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) {
- if (size.width() < (images_[LEFT]->width() + images_[CENTER]->width() +
- images_[RIGHT]->width()))
+ if (size.width() < GetMinimumSize().width())
return; // No room to paint.
canvas->DrawImageInt(*images_[LEFT], 0, 0);
@@ -290,8 +307,4 @@ void HorizontalPainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) {
images_[LEFT]->height());
}
-int HorizontalPainter::height() const {
- return images_[LEFT]->height();
-}
-
} // namespace views