0

Create abstract common base class for impl scrollbars.

BUG=None

NOTRY=true

Review URL: https://chromiumcodereview.appspot.com/11573015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173466 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
wjmaclean@chromium.org
2012-12-17 15:12:36 +00:00
parent 28f8bcc928
commit 6cdaff796b
4 changed files with 58 additions and 8 deletions

@ -212,6 +212,7 @@
'scrollbar_layer.h',
'scrollbar_layer_impl.cc',
'scrollbar_layer_impl.h',
'scrollbar_layer_impl_base.h',
'shader.cc',
'shader.h',
'shared_quad_state.cc',

@ -20,7 +20,7 @@ scoped_ptr<ScrollbarLayerImpl> ScrollbarLayerImpl::create(LayerTreeImpl* treeImp
}
ScrollbarLayerImpl::ScrollbarLayerImpl(LayerTreeImpl* treeImpl, int id)
: LayerImpl(treeImpl, id)
: ScrollbarLayerImplBase(treeImpl, id)
, m_scrollbar(this)
, m_backTrackResourceId(0)
, m_foreTrackResourceId(0)
@ -65,6 +65,26 @@ void ScrollbarLayerImpl::setScrollbarData(WebScrollbar* scrollbar)
m_geometry->update(scrollbar);
}
float ScrollbarLayerImpl::currentPos() const
{
return m_currentPos;
}
int ScrollbarLayerImpl::totalSize() const
{
return m_totalSize;
}
int ScrollbarLayerImpl::maximum() const
{
return m_maximum;
}
WebKit::WebScrollbar::Orientation ScrollbarLayerImpl::orientation() const
{
return m_orientation;
}
static gfx::RectF toUVRect(const gfx::Rect& r, const gfx::Rect& bounds)
{
return gfx::ScaleRect(r, 1.0 / bounds.width(), 1.0 / bounds.height());

@ -6,17 +6,16 @@
#define CC_SCROLLBAR_LAYER_IMPL_H_
#include "cc/cc_export.h"
#include "cc/layer_impl.h"
#include "cc/scrollbar_geometry_fixed_thumb.h"
#include "cc/scrollbar_layer_impl_base.h"
#include <public/WebRect.h>
#include <public/WebScrollbar.h>
#include <public/WebVector.h>
namespace cc {
class ScrollView;
class CC_EXPORT ScrollbarLayerImpl : public LayerImpl {
class CC_EXPORT ScrollbarLayerImpl : public ScrollbarLayerImplBase {
public:
static scoped_ptr<ScrollbarLayerImpl> create(LayerTreeImpl* treeImpl, int id);
virtual ~ScrollbarLayerImpl();
@ -29,16 +28,16 @@ public:
void setForeTrackResourceId(ResourceProvider::ResourceId id) { m_foreTrackResourceId = id; }
void setThumbResourceId(ResourceProvider::ResourceId id) { m_thumbResourceId = id; }
float currentPos() const { return m_currentPos; }
virtual float currentPos() const OVERRIDE;
void setCurrentPos(float currentPos) { m_currentPos = currentPos; }
int totalSize() const { return m_totalSize; }
virtual int totalSize() const OVERRIDE;
void setTotalSize(int totalSize) { m_totalSize = totalSize; }
int maximum() const { return m_maximum; }
virtual int maximum() const OVERRIDE;
void setMaximum(int maximum) { m_maximum = maximum; }
WebKit::WebScrollbar::Orientation orientation() const { return m_orientation; }
virtual WebKit::WebScrollbar::Orientation orientation() const OVERRIDE;
virtual void appendQuads(QuadSink&, AppendQuadsData&) OVERRIDE;

@ -0,0 +1,30 @@
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_SCROLLBAR_LAYER_IMPL_BASE_H_
#define CC_SCROLLBAR_LAYER_IMPL_BASE_H_
#include "cc/cc_export.h"
#include "cc/layer_impl.h"
#include <public/WebScrollbar.h>
namespace cc {
class CC_EXPORT ScrollbarLayerImplBase : public LayerImpl {
public:
virtual ~ScrollbarLayerImplBase() { }
virtual float currentPos() const = 0;
virtual int totalSize() const = 0;
virtual int maximum() const = 0;
virtual WebKit::WebScrollbar::Orientation orientation() const = 0;
protected:
ScrollbarLayerImplBase(LayerTreeImpl* treeImpl, int id)
: LayerImpl(treeImpl, id) { }
};
} // namespace cc
#endif // CC_SCROLLBAR_LAYER_IMPL_BASE_H_