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

Unified Diff: ui/native_theme/native_theme_base.cc

Issue 143953007: Changes look for scrollbars on windows (2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 11 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/native_theme/native_theme_base.h ('k') | ui/native_theme/native_theme_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/native_theme/native_theme_base.cc
diff --git a/ui/native_theme/native_theme_base.cc b/ui/native_theme/native_theme_base.cc
index 3b2bdd2471a31c63fd53b53dbf8c58f716f07269..cc0bacbadf26c894938f01601b3bebd20e20eaa2 100644
--- a/ui/native_theme/native_theme_base.cc
+++ b/ui/native_theme/native_theme_base.cc
@@ -247,18 +247,20 @@ NativeThemeBase::NativeThemeBase()
NativeThemeBase::~NativeThemeBase() {
}
+// static
+scoped_ptr<gfx::Canvas> NativeThemeBase::CreateCanvas(SkCanvas* sk_canvas) {
+ // TODO(pkotwicz): Do something better and don't infer device
+ // scale factor from canvas scale.
+ SkMatrix m = sk_canvas->getTotalMatrix();
+ float device_scale = static_cast<float>(SkScalarAbs(m.getScaleX()));
+ return scoped_ptr<gfx::Canvas>(
+ gfx::Canvas::CreateCanvasWithoutScaling(sk_canvas, device_scale));
+}
+
void NativeThemeBase::PaintArrowButton(
SkCanvas* canvas,
const gfx::Rect& rect, Part direction, State state) const {
- int widthMiddle, lengthMiddle;
SkPaint paint;
- if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) {
- widthMiddle = rect.width() / 2 + 1;
- lengthMiddle = rect.height() / 2 + 1;
- } else {
- lengthMiddle = rect.width() / 2 + 1;
- widthMiddle = rect.height() / 2 + 1;
- }
// Calculate button color.
SkScalar trackHSV[3];
@@ -333,11 +335,24 @@ void NativeThemeBase::PaintArrowButton(
paint.setColor(OutlineColor(trackHSV, thumbHSV));
canvas->drawPath(outline, paint);
- // If the button is disabled or read-only, the arrow is drawn with the
- // outline color.
- if (state != kDisabled)
- paint.setColor(SK_ColorBLACK);
+ PaintArrow(canvas, rect, direction, GetArrowColor(state));
+}
+
+void NativeThemeBase::PaintArrow(SkCanvas* gc,
+ const gfx::Rect& rect,
+ Part direction,
+ SkColor color) const {
+ int width_middle, length_middle;
+ if (direction == kScrollbarUpArrow || direction == kScrollbarDownArrow) {
+ width_middle = rect.width() / 2 + 1;
+ length_middle = rect.height() / 2 + 1;
+ } else {
+ length_middle = rect.width() / 2 + 1;
+ width_middle = rect.height() / 2 + 1;
+ }
+ SkPaint paint;
+ paint.setColor(color);
paint.setAntiAlias(false);
paint.setStyle(SkPaint::kFill_Style);
@@ -346,22 +361,22 @@ void NativeThemeBase::PaintArrowButton(
// looking arrows without anti-aliasing.
switch (direction) {
case kScrollbarUpArrow:
- path.moveTo(rect.x() + widthMiddle - 4, rect.y() + lengthMiddle + 2);
+ path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle + 2);
path.rLineTo(7, 0);
path.rLineTo(-4, -4);
break;
case kScrollbarDownArrow:
- path.moveTo(rect.x() + widthMiddle - 4, rect.y() + lengthMiddle - 3);
+ path.moveTo(rect.x() + width_middle - 4, rect.y() + length_middle - 3);
path.rLineTo(7, 0);
path.rLineTo(-4, 4);
break;
case kScrollbarRightArrow:
- path.moveTo(rect.x() + lengthMiddle - 3, rect.y() + widthMiddle - 4);
+ path.moveTo(rect.x() + length_middle - 3, rect.y() + width_middle - 4);
path.rLineTo(0, 7);
path.rLineTo(4, -4);
break;
case kScrollbarLeftArrow:
- path.moveTo(rect.x() + lengthMiddle + 1, rect.y() + widthMiddle - 5);
+ path.moveTo(rect.x() + length_middle + 1, rect.y() + width_middle - 5);
path.rLineTo(0, 9);
path.rLineTo(-4, -4);
break;
@@ -370,7 +385,7 @@ void NativeThemeBase::PaintArrowButton(
}
path.close();
- canvas->drawPath(path, paint);
+ gc->drawPath(path, paint);
}
void NativeThemeBase::PaintScrollbarTrack(SkCanvas* canvas,
@@ -999,12 +1014,7 @@ void NativeThemeBase::DrawImageInt(
SkCanvas* sk_canvas, const gfx::ImageSkia& image,
int src_x, int src_y, int src_w, int src_h,
int dest_x, int dest_y, int dest_w, int dest_h) const {
- // TODO(pkotwicz): Do something better and don't infer device
- // scale factor from canvas scale.
- SkMatrix m = sk_canvas->getTotalMatrix();
- float device_scale = static_cast<float>(SkScalarAbs(m.getScaleX()));
- scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
- sk_canvas, device_scale));
+ scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas));
canvas->DrawImageInt(image, src_x, src_y, src_w, src_h,
dest_x, dest_y, dest_w, dest_h, true);
}
@@ -1013,12 +1023,7 @@ void NativeThemeBase::DrawTiledImage(SkCanvas* sk_canvas,
const gfx::ImageSkia& image,
int src_x, int src_y, float tile_scale_x, float tile_scale_y,
int dest_x, int dest_y, int w, int h) const {
- // TODO(pkotwicz): Do something better and don't infer device
- // scale factor from canvas scale.
- SkMatrix m = sk_canvas->getTotalMatrix();
- float device_scale = static_cast<float>(SkScalarAbs(m.getScaleX()));
- scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
- sk_canvas, device_scale));
+ scoped_ptr<gfx::Canvas> canvas(CreateCanvas(sk_canvas));
canvas->TileImageInt(image, src_x, src_y, tile_scale_x,
tile_scale_y, dest_x, dest_y, w, h);
}
@@ -1033,6 +1038,17 @@ SkColor NativeThemeBase::SaturateAndBrighten(SkScalar* hsv,
return SkHSVToColor(color);
}
+SkColor NativeThemeBase::GetArrowColor(State state) const {
+ if (state != kDisabled)
+ return SK_ColorBLACK;
+
+ SkScalar track_hsv[3];
+ SkColorToHSV(track_color_, track_hsv);
+ SkScalar thumb_hsv[3];
+ SkColorToHSV(thumb_inactive_color_, thumb_hsv);
+ return OutlineColor(track_hsv, thumb_hsv);
+}
+
void NativeThemeBase::DrawVertLine(SkCanvas* canvas,
int x,
int y1,
« no previous file with comments | « ui/native_theme/native_theme_base.h ('k') | ui/native_theme/native_theme_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698