| Index: cc/ScrollbarLayerChromium.cpp
|
| diff --git a/cc/ScrollbarLayerChromium.cpp b/cc/ScrollbarLayerChromium.cpp
|
| deleted file mode 100644
|
| index 4259b7bb2cddb0aaeb0ed8a5ba33f05f2a9d8862..0000000000000000000000000000000000000000
|
| --- a/cc/ScrollbarLayerChromium.cpp
|
| +++ /dev/null
|
| @@ -1,290 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "config.h"
|
| -
|
| -#if USE(ACCELERATED_COMPOSITING)
|
| -
|
| -#include "ScrollbarLayerChromium.h"
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "CCLayerTreeHost.h"
|
| -#include "CCScrollbarLayerImpl.h"
|
| -#include "CCTextureUpdateQueue.h"
|
| -#include "LayerPainterChromium.h"
|
| -#include "TraceEvent.h"
|
| -#include <public/WebRect.h>
|
| -
|
| -using WebKit::WebRect;
|
| -
|
| -namespace cc {
|
| -
|
| -scoped_ptr<CCLayerImpl> ScrollbarLayerChromium::createCCLayerImpl()
|
| -{
|
| - return CCScrollbarLayerImpl::create(id()).PassAs<CCLayerImpl>();
|
| -}
|
| -
|
| -scoped_refptr<ScrollbarLayerChromium> ScrollbarLayerChromium::create(PassOwnPtr<WebKit::WebScrollbar> scrollbar, WebKit::WebScrollbarThemePainter painter, PassOwnPtr<WebKit::WebScrollbarThemeGeometry> geometry, int scrollLayerId)
|
| -{
|
| - return make_scoped_refptr(new ScrollbarLayerChromium(scrollbar, painter, geometry, scrollLayerId));
|
| -}
|
| -
|
| -ScrollbarLayerChromium::ScrollbarLayerChromium(PassOwnPtr<WebKit::WebScrollbar> scrollbar, WebKit::WebScrollbarThemePainter painter, PassOwnPtr<WebKit::WebScrollbarThemeGeometry> geometry, int scrollLayerId)
|
| - : m_scrollbar(scrollbar)
|
| - , m_painter(painter)
|
| - , m_geometry(geometry)
|
| - , m_scrollLayerId(scrollLayerId)
|
| - , m_textureFormat(GraphicsContext3D::INVALID_ENUM)
|
| -{
|
| -}
|
| -
|
| -ScrollbarLayerChromium::~ScrollbarLayerChromium()
|
| -{
|
| -}
|
| -
|
| -void ScrollbarLayerChromium::pushPropertiesTo(CCLayerImpl* layer)
|
| -{
|
| - LayerChromium::pushPropertiesTo(layer);
|
| -
|
| - CCScrollbarLayerImpl* scrollbarLayer = static_cast<CCScrollbarLayerImpl*>(layer);
|
| -
|
| - if (!scrollbarLayer->scrollbarGeometry())
|
| - scrollbarLayer->setScrollbarGeometry(CCScrollbarGeometryFixedThumb::create(adoptPtr(m_geometry->clone())));
|
| -
|
| - scrollbarLayer->setScrollbarData(m_scrollbar.get());
|
| -
|
| - if (m_backTrack && m_backTrack->texture()->haveBackingTexture())
|
| - scrollbarLayer->setBackTrackResourceId(m_backTrack->texture()->resourceId());
|
| - else
|
| - scrollbarLayer->setBackTrackResourceId(0);
|
| -
|
| - if (m_foreTrack && m_foreTrack->texture()->haveBackingTexture())
|
| - scrollbarLayer->setForeTrackResourceId(m_foreTrack->texture()->resourceId());
|
| - else
|
| - scrollbarLayer->setForeTrackResourceId(0);
|
| -
|
| - if (m_thumb && m_thumb->texture()->haveBackingTexture())
|
| - scrollbarLayer->setThumbResourceId(m_thumb->texture()->resourceId());
|
| - else
|
| - scrollbarLayer->setThumbResourceId(0);
|
| -}
|
| -
|
| -ScrollbarLayerChromium* ScrollbarLayerChromium::toScrollbarLayerChromium()
|
| -{
|
| - return this;
|
| -}
|
| -
|
| -class ScrollbarBackgroundPainter : public LayerPainterChromium {
|
| -public:
|
| - static PassOwnPtr<ScrollbarBackgroundPainter> create(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| - {
|
| - return adoptPtr(new ScrollbarBackgroundPainter(scrollbar, painter, geometry, trackPart));
|
| - }
|
| -
|
| - virtual void paint(SkCanvas* skCanvas, const IntRect& contentRect, FloatRect&) OVERRIDE
|
| - {
|
| - WebKit::WebCanvas* canvas = skCanvas;
|
| - // The following is a simplification of ScrollbarThemeComposite::paint.
|
| - WebKit::WebRect contentWebRect(contentRect.x(), contentRect.y(), contentRect.width(), contentRect.height());
|
| - m_painter.paintScrollbarBackground(canvas, contentWebRect);
|
| -
|
| - if (m_geometry->hasButtons(m_scrollbar)) {
|
| - WebRect backButtonStartPaintRect = m_geometry->backButtonStartRect(m_scrollbar);
|
| - m_painter.paintBackButtonStart(canvas, backButtonStartPaintRect);
|
| -
|
| - WebRect backButtonEndPaintRect = m_geometry->backButtonEndRect(m_scrollbar);
|
| - m_painter.paintBackButtonEnd(canvas, backButtonEndPaintRect);
|
| -
|
| - WebRect forwardButtonStartPaintRect = m_geometry->forwardButtonStartRect(m_scrollbar);
|
| - m_painter.paintForwardButtonStart(canvas, forwardButtonStartPaintRect);
|
| -
|
| - WebRect forwardButtonEndPaintRect = m_geometry->forwardButtonEndRect(m_scrollbar);
|
| - m_painter.paintForwardButtonEnd(canvas, forwardButtonEndPaintRect);
|
| - }
|
| -
|
| - WebRect trackPaintRect = m_geometry->trackRect(m_scrollbar);
|
| - m_painter.paintTrackBackground(canvas, trackPaintRect);
|
| -
|
| - bool thumbPresent = m_geometry->hasThumb(m_scrollbar);
|
| - if (thumbPresent) {
|
| - if (m_trackPart == WebKit::WebScrollbar::ForwardTrackPart)
|
| - m_painter.paintForwardTrackPart(canvas, trackPaintRect);
|
| - else
|
| - m_painter.paintBackTrackPart(canvas, trackPaintRect);
|
| - }
|
| -
|
| - m_painter.paintTickmarks(canvas, trackPaintRect);
|
| - }
|
| -private:
|
| - ScrollbarBackgroundPainter(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| - : m_scrollbar(scrollbar)
|
| - , m_painter(painter)
|
| - , m_geometry(geometry)
|
| - , m_trackPart(trackPart)
|
| - {
|
| - }
|
| -
|
| - WebKit::WebScrollbar* m_scrollbar;
|
| - WebKit::WebScrollbarThemePainter m_painter;
|
| - WebKit::WebScrollbarThemeGeometry* m_geometry;
|
| - WebKit::WebScrollbar::ScrollbarPart m_trackPart;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScrollbarBackgroundPainter);
|
| -};
|
| -
|
| -bool ScrollbarLayerChromium::needsContentsScale() const
|
| -{
|
| - return true;
|
| -}
|
| -
|
| -IntSize ScrollbarLayerChromium::contentBounds() const
|
| -{
|
| - return IntSize(lroundf(bounds().width() * contentsScale()), lroundf(bounds().height() * contentsScale()));
|
| -}
|
| -
|
| -class ScrollbarThumbPainter : public LayerPainterChromium {
|
| -public:
|
| - static PassOwnPtr<ScrollbarThumbPainter> create(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| - {
|
| - return adoptPtr(new ScrollbarThumbPainter(scrollbar, painter, geometry));
|
| - }
|
| -
|
| - virtual void paint(SkCanvas* skCanvas, const IntRect& contentRect, FloatRect& opaque) OVERRIDE
|
| - {
|
| - WebKit::WebCanvas* canvas = skCanvas;
|
| -
|
| - // Consider the thumb to be at the origin when painting.
|
| - WebRect thumbRect = m_geometry->thumbRect(m_scrollbar);
|
| - thumbRect.x = 0;
|
| - thumbRect.y = 0;
|
| - m_painter.paintThumb(canvas, thumbRect);
|
| - }
|
| -
|
| -private:
|
| - ScrollbarThumbPainter(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| - : m_scrollbar(scrollbar)
|
| - , m_painter(painter)
|
| - , m_geometry(geometry)
|
| - {
|
| - }
|
| -
|
| - WebKit::WebScrollbar* m_scrollbar;
|
| - WebKit::WebScrollbarThemePainter m_painter;
|
| - WebKit::WebScrollbarThemeGeometry* m_geometry;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScrollbarThumbPainter);
|
| -};
|
| -
|
| -void ScrollbarLayerChromium::setLayerTreeHost(CCLayerTreeHost* host)
|
| -{
|
| - if (!host || host != layerTreeHost()) {
|
| - m_backTrackUpdater.clear();
|
| - m_backTrack.clear();
|
| - m_thumbUpdater.clear();
|
| - m_thumb.clear();
|
| - }
|
| -
|
| - LayerChromium::setLayerTreeHost(host);
|
| -}
|
| -
|
| -void ScrollbarLayerChromium::createTextureUpdaterIfNeeded()
|
| -{
|
| - m_textureFormat = layerTreeHost()->rendererCapabilities().bestTextureFormat;
|
| -
|
| - if (!m_backTrackUpdater)
|
| - m_backTrackUpdater = CachingBitmapCanvasLayerTextureUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter, m_geometry.get(), WebKit::WebScrollbar::BackTrackPart));
|
| - if (!m_backTrack)
|
| - m_backTrack = m_backTrackUpdater->createTexture(layerTreeHost()->contentsTextureManager());
|
| -
|
| - // Only create two-part track if we think the two parts could be different in appearance.
|
| - if (m_scrollbar->isCustomScrollbar()) {
|
| - if (!m_foreTrackUpdater)
|
| - m_foreTrackUpdater = CachingBitmapCanvasLayerTextureUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter, m_geometry.get(), WebKit::WebScrollbar::ForwardTrackPart));
|
| - if (!m_foreTrack)
|
| - m_foreTrack = m_foreTrackUpdater->createTexture(layerTreeHost()->contentsTextureManager());
|
| - }
|
| -
|
| - if (!m_thumbUpdater)
|
| - m_thumbUpdater = CachingBitmapCanvasLayerTextureUpdater::Create(ScrollbarThumbPainter::create(m_scrollbar.get(), m_painter, m_geometry.get()));
|
| - if (!m_thumb)
|
| - m_thumb = m_thumbUpdater->createTexture(layerTreeHost()->contentsTextureManager());
|
| -}
|
| -
|
| -void ScrollbarLayerChromium::updatePart(CachingBitmapCanvasLayerTextureUpdater* painter, LayerTextureUpdater::Texture* texture, const IntRect& rect, CCTextureUpdateQueue& queue, CCRenderingStats& stats)
|
| -{
|
| - // Skip painting and uploading if there are no invalidations and
|
| - // we already have valid texture data.
|
| - if (texture->texture()->haveBackingTexture()
|
| - && texture->texture()->size() == rect.size()
|
| - && m_updateRect.isEmpty())
|
| - return;
|
| -
|
| - // We should always have enough memory for UI.
|
| - ASSERT(texture->texture()->canAcquireBackingTexture());
|
| - if (!texture->texture()->canAcquireBackingTexture())
|
| - return;
|
| -
|
| - // Paint and upload the entire part.
|
| - float widthScale = static_cast<float>(contentBounds().width()) / bounds().width();
|
| - float heightScale = static_cast<float>(contentBounds().height()) / bounds().height();
|
| - IntRect paintedOpaqueRect;
|
| - painter->prepareToUpdate(rect, rect.size(), widthScale, heightScale, paintedOpaqueRect, stats);
|
| - if (!painter->pixelsDidChange() && texture->texture()->haveBackingTexture()) {
|
| - TRACE_EVENT_INSTANT0("cc","ScrollbarLayerChromium::updatePart no texture upload needed");
|
| - return;
|
| - }
|
| -
|
| - texture->prepareRect(rect, stats);
|
| -
|
| - IntSize destOffset(0, 0);
|
| - TextureUploader::Parameters upload = { texture, rect, destOffset };
|
| - queue.appendFullUpload(upload);
|
| -}
|
| -
|
| -
|
| -void ScrollbarLayerChromium::setTexturePriorities(const CCPriorityCalculator&)
|
| -{
|
| - if (contentBounds().isEmpty())
|
| - return;
|
| -
|
| - createTextureUpdaterIfNeeded();
|
| -
|
| - bool drawsToRoot = !renderTarget()->parent();
|
| - if (m_backTrack) {
|
| - m_backTrack->texture()->setDimensions(contentBounds(), m_textureFormat);
|
| - m_backTrack->texture()->setRequestPriority(CCPriorityCalculator::uiPriority(drawsToRoot));
|
| - }
|
| - if (m_foreTrack) {
|
| - m_foreTrack->texture()->setDimensions(contentBounds(), m_textureFormat);
|
| - m_foreTrack->texture()->setRequestPriority(CCPriorityCalculator::uiPriority(drawsToRoot));
|
| - }
|
| - if (m_thumb) {
|
| - IntSize thumbSize = layerRectToContentRect(m_geometry->thumbRect(m_scrollbar.get())).size();
|
| - m_thumb->texture()->setDimensions(thumbSize, m_textureFormat);
|
| - m_thumb->texture()->setRequestPriority(CCPriorityCalculator::uiPriority(drawsToRoot));
|
| - }
|
| -}
|
| -
|
| -void ScrollbarLayerChromium::update(CCTextureUpdateQueue& queue, const CCOcclusionTracker*, CCRenderingStats& stats)
|
| -{
|
| - if (contentBounds().isEmpty())
|
| - return;
|
| -
|
| - createTextureUpdaterIfNeeded();
|
| -
|
| - IntPoint scrollbarOrigin(m_scrollbar->location().x, m_scrollbar->location().y);
|
| - IntRect contentRect = layerRectToContentRect(WebKit::WebRect(scrollbarOrigin.x(), scrollbarOrigin.y(), bounds().width(), bounds().height()));
|
| - updatePart(m_backTrackUpdater.get(), m_backTrack.get(), contentRect, queue, stats);
|
| - if (m_foreTrack && m_foreTrackUpdater)
|
| - updatePart(m_foreTrackUpdater.get(), m_foreTrack.get(), contentRect, queue, stats);
|
| -
|
| - // Consider the thumb to be at the origin when painting.
|
| - WebKit::WebRect thumbRect = m_geometry->thumbRect(m_scrollbar.get());
|
| - IntRect originThumbRect = layerRectToContentRect(WebKit::WebRect(0, 0, thumbRect.width, thumbRect.height));
|
| - if (!originThumbRect.isEmpty())
|
| - updatePart(m_thumbUpdater.get(), m_thumb.get(), originThumbRect, queue, stats);
|
| -}
|
| -
|
| -}
|
| -#endif // USE(ACCELERATED_COMPOSITING)
|
|
|