190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "cc/test/fake_scrollbar.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "third_party/skia/include/core/SkCanvas.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/gfx/skia_util.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace cc { 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)FakeScrollbar::FakeScrollbar() 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : paint_(false), 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) has_thumb_(false), 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) is_overlay_(false), 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) thumb_thickness_(10), 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) thumb_length_(5), 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) track_rect_(0, 0, 100, 10), 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fill_color_(SK_ColorGREEN) {} 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)FakeScrollbar::FakeScrollbar(bool paint, bool has_thumb, bool is_overlay) 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : paint_(paint), 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) has_thumb_(has_thumb), 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) is_overlay_(is_overlay), 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) thumb_thickness_(10), 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) thumb_length_(5), 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) track_rect_(0, 0, 100, 10), 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fill_color_(SK_ColorGREEN) {} 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)FakeScrollbar::~FakeScrollbar() {} 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ScrollbarOrientation FakeScrollbar::Orientation() const { 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return HORIZONTAL; 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool FakeScrollbar::IsLeftSideVerticalScrollbar() const { 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return false; 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Point FakeScrollbar::Location() const { return location_; } 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeScrollbar::IsOverlay() const { return is_overlay_; } 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeScrollbar::HasThumb() const { return has_thumb_; } 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int FakeScrollbar::ThumbThickness() const { 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return thumb_thickness_; 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)int FakeScrollbar::ThumbLength() const { 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return thumb_length_; 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Rect FakeScrollbar::TrackRect() const { 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return track_rect_; 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void FakeScrollbar::PaintPart(SkCanvas* canvas, 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ScrollbarPart part, 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& content_rect) { 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (!paint_) 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return; 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Fill the scrollbar with a different color each time. 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fill_color_++; 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SkPaint paint; 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) paint.setAntiAlias(false); 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) paint.setColor(paint_fill_color()); 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) paint.setStyle(SkPaint::kFill_Style); 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Emulate the how the real scrollbar works by using scrollbar's rect for 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // TRACK and the given content_rect for the THUMB 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SkRect rect = part == TRACK ? RectToSkRect(TrackRect()) 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : RectToSkRect(content_rect); 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) canvas->drawRect(rect, paint); 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace cc 79