summaryrefslogtreecommitdiffstats
path: root/cc/tiled_layer_impl.cc
diff options
context:
space:
mode:
authorenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-20 04:17:54 +0000
committerenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-20 04:17:54 +0000
commit2990ff51b4d9c26f815911d92fd7814bb9e80949 (patch)
treec234cb9ab8b9a1f98b79968742c6bf6bfe2b84a1 /cc/tiled_layer_impl.cc
parent9c91fc2b8a286096e2914a55305aff5a8ad53c3c (diff)
downloadchromium_src-2990ff51b4d9c26f815911d92fd7814bb9e80949.zip
chromium_src-2990ff51b4d9c26f815911d92fd7814bb9e80949.tar.gz
chromium_src-2990ff51b4d9c26f815911d92fd7814bb9e80949.tar.bz2
cc: Make UV coords in TileDrawQuad a full RectF
Previously, TileDrawQuad assumed that texels were 1:1 with geometry, so it only needed an offset into the texture to calculate the UVs. For impl-side painting where multiple contents scales might be in play, a given texture rect isn't going to be 1:1 with geometry rects and also will not be necessarily integer aligned. Also, some things (like edge antialiasing) still need to know the texture size so that it can do half-texel offsets, so this new texture rect needs to stay in "texel space" rather than 0-1 "uv space". R=danakj@chromium.org BUG=155209 Review URL: https://chromiumcodereview.appspot.com/11348109 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168723 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/tiled_layer_impl.cc')
-rw-r--r--cc/tiled_layer_impl.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/cc/tiled_layer_impl.cc b/cc/tiled_layer_impl.cc
index 09b4b9f..3773542 100644
--- a/cc/tiled_layer_impl.cc
+++ b/cc/tiled_layer_impl.cc
@@ -172,6 +172,8 @@ void TiledLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad
// offset the same amount.
gfx::Vector2d displayOffset = tileRect.origin() - displayRect.origin();
gfx::Vector2d textureOffset = m_tiler->textureOffset(i, j) + displayOffset;
+ gfx::RectF texCoordRect = gfx::RectF(tileRect.size()) + textureOffset;
+
float tileWidth = static_cast<float>(m_tiler->tileSize().width());
float tileHeight = static_cast<float>(m_tiler->tileSize().height());
gfx::Size textureSize(tileWidth, tileHeight);
@@ -186,7 +188,7 @@ void TiledLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad
bool rightEdgeAA = i == m_tiler->numTilesX() - 1 && useAA;
bool bottomEdgeAA = j == m_tiler->numTilesY() - 1 && useAA;
- quadSink.append(TileDrawQuad::create(sharedQuadState, tileRect, tileOpaqueRect, tile->resourceId(), textureOffset, textureSize, tile->contentsSwizzled(), leftEdgeAA, topEdgeAA, rightEdgeAA, bottomEdgeAA).PassAs<DrawQuad>(), appendQuadsData);
+ quadSink.append(TileDrawQuad::create(sharedQuadState, tileRect, tileOpaqueRect, tile->resourceId(), texCoordRect, textureSize, tile->contentsSwizzled(), leftEdgeAA, topEdgeAA, rightEdgeAA, bottomEdgeAA).PassAs<DrawQuad>(), appendQuadsData);
}
}
}