| Index: cc/CCTiledLayerImpl.cpp
|
| diff --git a/cc/CCTiledLayerImpl.cpp b/cc/CCTiledLayerImpl.cpp
|
| deleted file mode 100644
|
| index faa8ef87b9f699f4bfef7ee6de0687abec3be717..0000000000000000000000000000000000000000
|
| --- a/cc/CCTiledLayerImpl.cpp
|
| +++ /dev/null
|
| @@ -1,253 +0,0 @@
|
| -// Copyright 2011 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 "CCTiledLayerImpl.h"
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/stringprintf.h"
|
| -#include "CCAppendQuadsData.h"
|
| -#include "CCCheckerboardDrawQuad.h"
|
| -#include "CCDebugBorderDrawQuad.h"
|
| -#include "CCLayerTilingData.h"
|
| -#include "CCMathUtil.h"
|
| -#include "CCQuadSink.h"
|
| -#include "CCSolidColorDrawQuad.h"
|
| -#include "CCTileDrawQuad.h"
|
| -#include "FloatQuad.h"
|
| -#include "GraphicsContext3D.h"
|
| -#include "SkColor.h"
|
| -
|
| -using namespace std;
|
| -using WebKit::WebTransformationMatrix;
|
| -
|
| -namespace cc {
|
| -
|
| -static const int debugTileBorderWidth = 1;
|
| -static const int debugTileBorderAlpha = 100;
|
| -static const int debugTileBorderColorRed = 80;
|
| -static const int debugTileBorderColorGreen = 200;
|
| -static const int debugTileBorderColorBlue = 200;
|
| -static const int debugTileBorderMissingTileColorRed = 255;
|
| -static const int debugTileBorderMissingTileColorGreen = 0;
|
| -static const int debugTileBorderMissingTileColorBlue = 0;
|
| -
|
| -static const int defaultCheckerboardColorRed = 241;
|
| -static const int defaultCheckerboardColorGreen = 241;
|
| -static const int defaultCheckerboardColorBlue = 241;
|
| -static const int debugTileEvictedCheckerboardColorRed = 255;
|
| -static const int debugTileEvictedCheckerboardColorGreen = 200;
|
| -static const int debugTileEvictedCheckerboardColorBlue = 200;
|
| -static const int debugTileInvalidatedCheckerboardColorRed = 128;
|
| -static const int debugTileInvalidatedCheckerboardColorGreen = 200;
|
| -static const int debugTileInvalidatedCheckerboardColorBlue = 245;
|
| -
|
| -class DrawableTile : public CCLayerTilingData::Tile {
|
| -public:
|
| - static PassOwnPtr<DrawableTile> create() { return adoptPtr(new DrawableTile()); }
|
| -
|
| - CCResourceProvider::ResourceId resourceId() const { return m_resourceId; }
|
| - void setResourceId(CCResourceProvider::ResourceId resourceId) { m_resourceId = resourceId; }
|
| -
|
| -private:
|
| - DrawableTile() : m_resourceId(0) { }
|
| -
|
| - CCResourceProvider::ResourceId m_resourceId;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DrawableTile);
|
| -};
|
| -
|
| -CCTiledLayerImpl::CCTiledLayerImpl(int id)
|
| - : CCLayerImpl(id)
|
| - , m_skipsDraw(true)
|
| - , m_contentsSwizzled(false)
|
| -{
|
| -}
|
| -
|
| -CCTiledLayerImpl::~CCTiledLayerImpl()
|
| -{
|
| -}
|
| -
|
| -CCResourceProvider::ResourceId CCTiledLayerImpl::contentsResourceId() const
|
| -{
|
| - // This function is only valid for single texture layers, e.g. masks.
|
| - ASSERT(m_tiler);
|
| - ASSERT(m_tiler->numTilesX() == 1);
|
| - ASSERT(m_tiler->numTilesY() == 1);
|
| -
|
| - DrawableTile* tile = tileAt(0, 0);
|
| - CCResourceProvider::ResourceId resourceId = tile ? tile->resourceId() : 0;
|
| - return resourceId;
|
| -}
|
| -
|
| -void CCTiledLayerImpl::dumpLayerProperties(std::string* str, int indent) const
|
| -{
|
| - str->append(indentString(indent));
|
| - base::StringAppendF(str, "skipsDraw: %d\n", (!m_tiler || m_skipsDraw));
|
| - CCLayerImpl::dumpLayerProperties(str, indent);
|
| -}
|
| -
|
| -bool CCTiledLayerImpl::hasTileAt(int i, int j) const
|
| -{
|
| - return m_tiler->tileAt(i, j);
|
| -}
|
| -
|
| -bool CCTiledLayerImpl::hasResourceIdForTileAt(int i, int j) const
|
| -{
|
| - return hasTileAt(i, j) && tileAt(i, j)->resourceId();
|
| -}
|
| -
|
| -DrawableTile* CCTiledLayerImpl::tileAt(int i, int j) const
|
| -{
|
| - return static_cast<DrawableTile*>(m_tiler->tileAt(i, j));
|
| -}
|
| -
|
| -DrawableTile* CCTiledLayerImpl::createTile(int i, int j)
|
| -{
|
| - OwnPtr<DrawableTile> tile(DrawableTile::create());
|
| - DrawableTile* addedTile = tile.get();
|
| - m_tiler->addTile(tile.release(), i, j);
|
| - return addedTile;
|
| -}
|
| -
|
| -void CCTiledLayerImpl::appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuadsData)
|
| -{
|
| - const IntRect& contentRect = visibleContentRect();
|
| -
|
| - if (!m_tiler || m_tiler->hasEmptyBounds() || contentRect.isEmpty())
|
| - return;
|
| -
|
| - CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQuadState());
|
| - appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData);
|
| -
|
| - int left, top, right, bottom;
|
| - m_tiler->contentRectToTileIndices(contentRect, left, top, right, bottom);
|
| -
|
| - if (hasDebugBorders()) {
|
| - for (int j = top; j <= bottom; ++j) {
|
| - for (int i = left; i <= right; ++i) {
|
| - DrawableTile* tile = tileAt(i, j);
|
| - IntRect tileRect = m_tiler->tileBounds(i, j);
|
| - SkColor borderColor;
|
| -
|
| - if (m_skipsDraw || !tile || !tile->resourceId())
|
| - borderColor = SkColorSetARGB(debugTileBorderAlpha, debugTileBorderMissingTileColorRed, debugTileBorderMissingTileColorGreen, debugTileBorderMissingTileColorBlue);
|
| - else
|
| - borderColor = SkColorSetARGB(debugTileBorderAlpha, debugTileBorderColorRed, debugTileBorderColorGreen, debugTileBorderColorBlue);
|
| - quadSink.append(CCDebugBorderDrawQuad::create(sharedQuadState, tileRect, borderColor, debugTileBorderWidth).PassAs<CCDrawQuad>(), appendQuadsData);
|
| - }
|
| - }
|
| - }
|
| -
|
| - if (m_skipsDraw)
|
| - return;
|
| -
|
| - for (int j = top; j <= bottom; ++j) {
|
| - for (int i = left; i <= right; ++i) {
|
| - DrawableTile* tile = tileAt(i, j);
|
| - IntRect tileRect = m_tiler->tileBounds(i, j);
|
| - IntRect displayRect = tileRect;
|
| - tileRect.intersect(contentRect);
|
| -
|
| - // Skip empty tiles.
|
| - if (tileRect.isEmpty())
|
| - continue;
|
| -
|
| - if (!tile || !tile->resourceId()) {
|
| - if (drawCheckerboardForMissingTiles()) {
|
| - SkColor defaultColor = SkColorSetRGB(defaultCheckerboardColorRed, defaultCheckerboardColorGreen, defaultCheckerboardColorBlue);
|
| - SkColor evictedColor = SkColorSetRGB(debugTileEvictedCheckerboardColorRed, debugTileEvictedCheckerboardColorGreen, debugTileEvictedCheckerboardColorBlue);
|
| - SkColor invalidatedColor = SkColorSetRGB(debugTileInvalidatedCheckerboardColorRed, debugTileEvictedCheckerboardColorGreen, debugTileEvictedCheckerboardColorBlue);
|
| -
|
| - SkColor checkerColor;
|
| - if (hasDebugBorders())
|
| - checkerColor = tile ? invalidatedColor : evictedColor;
|
| - else
|
| - checkerColor = defaultColor;
|
| -
|
| - appendQuadsData.hadMissingTiles |= quadSink.append(CCCheckerboardDrawQuad::create(sharedQuadState, tileRect, checkerColor).PassAs<CCDrawQuad>(), appendQuadsData);
|
| - } else
|
| - appendQuadsData.hadMissingTiles |= quadSink.append(CCSolidColorDrawQuad::create(sharedQuadState, tileRect, backgroundColor()).PassAs<CCDrawQuad>(), appendQuadsData);
|
| - continue;
|
| - }
|
| -
|
| - IntRect tileOpaqueRect = tile->opaqueRect();
|
| - tileOpaqueRect.intersect(contentRect);
|
| -
|
| - // Keep track of how the top left has moved, so the texture can be
|
| - // offset the same amount.
|
| - IntSize displayOffset = tileRect.minXMinYCorner() - displayRect.minXMinYCorner();
|
| - IntPoint textureOffset = m_tiler->textureOffset(i, j) + displayOffset;
|
| - float tileWidth = static_cast<float>(m_tiler->tileSize().width());
|
| - float tileHeight = static_cast<float>(m_tiler->tileSize().height());
|
| - IntSize textureSize(tileWidth, tileHeight);
|
| -
|
| - bool clipped = false;
|
| - FloatQuad visibleContentInTargetQuad = CCMathUtil::mapQuad(drawTransform(), FloatQuad(visibleContentRect()), clipped);
|
| - bool isAxisAlignedInTarget = !clipped && visibleContentInTargetQuad.isRectilinear();
|
| - bool useAA = m_tiler->hasBorderTexels() && !isAxisAlignedInTarget;
|
| -
|
| - bool leftEdgeAA = !i && useAA;
|
| - bool topEdgeAA = !j && useAA;
|
| - bool rightEdgeAA = i == m_tiler->numTilesX() - 1 && useAA;
|
| - bool bottomEdgeAA = j == m_tiler->numTilesY() - 1 && useAA;
|
| -
|
| - const GC3Dint textureFilter = m_tiler->hasBorderTexels() ? GraphicsContext3D::LINEAR : GraphicsContext3D::NEAREST;
|
| - quadSink.append(CCTileDrawQuad::create(sharedQuadState, tileRect, tileOpaqueRect, tile->resourceId(), textureOffset, textureSize, textureFilter, contentsSwizzled(), leftEdgeAA, topEdgeAA, rightEdgeAA, bottomEdgeAA).PassAs<CCDrawQuad>(), appendQuadsData);
|
| - }
|
| - }
|
| -}
|
| -
|
| -void CCTiledLayerImpl::setTilingData(const CCLayerTilingData& tiler)
|
| -{
|
| - if (m_tiler)
|
| - m_tiler->reset();
|
| - else
|
| - m_tiler = CCLayerTilingData::create(tiler.tileSize(), tiler.hasBorderTexels() ? CCLayerTilingData::HasBorderTexels : CCLayerTilingData::NoBorderTexels);
|
| - *m_tiler = tiler;
|
| -}
|
| -
|
| -void CCTiledLayerImpl::pushTileProperties(int i, int j, CCResourceProvider::ResourceId resourceId, const IntRect& opaqueRect)
|
| -{
|
| - DrawableTile* tile = tileAt(i, j);
|
| - if (!tile)
|
| - tile = createTile(i, j);
|
| - tile->setResourceId(resourceId);
|
| - tile->setOpaqueRect(opaqueRect);
|
| -}
|
| -
|
| -void CCTiledLayerImpl::pushInvalidTile(int i, int j)
|
| -{
|
| - DrawableTile* tile = tileAt(i, j);
|
| - if (!tile)
|
| - tile = createTile(i, j);
|
| - tile->setResourceId(0);
|
| - tile->setOpaqueRect(IntRect());
|
| -}
|
| -
|
| -Region CCTiledLayerImpl::visibleContentOpaqueRegion() const
|
| -{
|
| - if (m_skipsDraw)
|
| - return Region();
|
| - if (contentsOpaque())
|
| - return visibleContentRect();
|
| - return m_tiler->opaqueRegionInContentRect(visibleContentRect());
|
| -}
|
| -
|
| -void CCTiledLayerImpl::didLoseContext()
|
| -{
|
| - m_tiler->reset();
|
| -}
|
| -
|
| -const char* CCTiledLayerImpl::layerTypeAsString() const
|
| -{
|
| - return "ContentLayer";
|
| -}
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // USE(ACCELERATED_COMPOSITING)
|
|
|