1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "cc/test/fake_scrollbar.h" 6 7#include "third_party/skia/include/core/SkCanvas.h" 8#include "ui/gfx/skia_util.h" 9 10namespace cc { 11 12FakeScrollbar::FakeScrollbar() 13 : paint_(false), 14 has_thumb_(false), 15 is_overlay_(false), 16 thumb_thickness_(10), 17 thumb_length_(5), 18 track_rect_(0, 0, 100, 10), 19 fill_color_(SK_ColorGREEN) {} 20 21FakeScrollbar::FakeScrollbar(bool paint, bool has_thumb, bool is_overlay) 22 : paint_(paint), 23 has_thumb_(has_thumb), 24 is_overlay_(is_overlay), 25 thumb_thickness_(10), 26 thumb_length_(5), 27 track_rect_(0, 0, 100, 10), 28 fill_color_(SK_ColorGREEN) {} 29 30FakeScrollbar::~FakeScrollbar() {} 31 32ScrollbarOrientation FakeScrollbar::Orientation() const { 33 return HORIZONTAL; 34} 35 36bool FakeScrollbar::IsLeftSideVerticalScrollbar() const { 37 return false; 38} 39 40gfx::Point FakeScrollbar::Location() const { return location_; } 41 42bool FakeScrollbar::IsOverlay() const { return is_overlay_; } 43 44bool FakeScrollbar::HasThumb() const { return has_thumb_; } 45 46int FakeScrollbar::ThumbThickness() const { 47 return thumb_thickness_; 48} 49 50int FakeScrollbar::ThumbLength() const { 51 return thumb_length_; 52} 53 54gfx::Rect FakeScrollbar::TrackRect() const { 55 return track_rect_; 56} 57 58void FakeScrollbar::PaintPart(SkCanvas* canvas, 59 ScrollbarPart part, 60 const gfx::Rect& content_rect) { 61 if (!paint_) 62 return; 63 64 // Fill the scrollbar with a different color each time. 65 fill_color_++; 66 SkPaint paint; 67 paint.setAntiAlias(false); 68 paint.setColor(paint_fill_color()); 69 paint.setStyle(SkPaint::kFill_Style); 70 71 // Emulate the how the real scrollbar works by using scrollbar's rect for 72 // TRACK and the given content_rect for the THUMB 73 SkRect rect = part == TRACK ? RectToSkRect(TrackRect()) 74 : RectToSkRect(content_rect); 75 canvas->drawRect(rect, paint); 76} 77 78} // namespace cc 79