diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 04:17:54 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 04:17:54 +0000 |
commit | 2990ff51b4d9c26f815911d92fd7814bb9e80949 (patch) | |
tree | c234cb9ab8b9a1f98b79968742c6bf6bfe2b84a1 /cc/tiled_layer_impl.cc | |
parent | 9c91fc2b8a286096e2914a55305aff5a8ad53c3c (diff) | |
download | chromium_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.cc | 4 |
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); } } } |