diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-10 22:29:09 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-10 22:29:09 +0000 |
commit | ab5a94478fe4d9f6e9c32a525eea652b7e743014 (patch) | |
tree | 705e2570e91130301a187d0b5386694c35589e26 /cc | |
parent | 695e0d4c84455f13115b9822e25f7ec3c857a6e1 (diff) | |
download | chromium_src-ab5a94478fe4d9f6e9c32a525eea652b7e743014.zip chromium_src-ab5a94478fe4d9f6e9c32a525eea652b7e743014.tar.gz chromium_src-ab5a94478fe4d9f6e9c32a525eea652b7e743014.tar.bz2 |
Revert 171850
> This patch makes quad-clipping to a scissor window an explicit operation at quad-generation time. If the transform for the quad is a scale and or a transform clipping is a simple bounding box intersection and uv-recomputation.
>
> BUG=161871
>
>
> Review URL: https://chromiumcodereview.appspot.com/11418297
TBR=whunt@chromium.org
BUG=164997
Review URL: https://codereview.chromium.org/11517007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172152 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/texture_draw_quad.cc | 44 | ||||
-rw-r--r-- | cc/texture_draw_quad.h | 2 | ||||
-rw-r--r-- | cc/texture_layer_impl.cc | 7 |
3 files changed, 1 insertions, 52 deletions
diff --git a/cc/texture_draw_quad.cc b/cc/texture_draw_quad.cc index 97bf86f..d552c39 100644 --- a/cc/texture_draw_quad.cc +++ b/cc/texture_draw_quad.cc @@ -58,48 +58,4 @@ const TextureDrawQuad* TextureDrawQuad::MaterialCast( return static_cast<const TextureDrawQuad*>(quad); } -bool TextureDrawQuad::PerformClipping() { - // This only occurs if the rect is only scaled and translated (and thus still - // axis aligned). - if (!quadTransform().IsScaleOrTranslation()) - return false; - - // Grab our scale and offset. - float x_scale = quadTransform().matrix().getDouble(0,0); - float y_scale = quadTransform().matrix().getDouble(1,1); - gfx::Vector2dF offset( - quadTransform().matrix().getDouble(0,3), - quadTransform().matrix().getDouble(1,3)); - - // Transform the rect by the scale and offset. - gfx::RectF rectF = rect; - rectF.Scale(x_scale, y_scale); - rectF += offset; - - // Perform clipping and check to see if the result is empty. - gfx::RectF clippedRect = IntersectRects(rectF, clipRect()); - if (clippedRect.IsEmpty()) { - rect = gfx::Rect(); - uv_rect = gfx::RectF(); - return true; - } - - // Create a new uv-rect by clipping the old one to the new bounds. - uv_rect = gfx::RectF( - uv_rect.x()+uv_rect.width ()/rectF.width ()*(clippedRect.x()-rectF.x()), - uv_rect.y()+uv_rect.height()/rectF.height()*(clippedRect.y()-rectF.y()), - uv_rect.width () / rectF.width () * clippedRect.width (), - uv_rect.height() / rectF.height() * clippedRect.height()); - - // Move the clipped rectangle back into its space. - clippedRect -= offset; - clippedRect.Scale(1.0f / x_scale, 1.0f / y_scale); - rect = gfx::Rect( - static_cast<int>(clippedRect.x() + 0.5f), - static_cast<int>(clippedRect.y() + 0.5f), - static_cast<int>(clippedRect.width() + 0.5f), - static_cast<int>(clippedRect.height() + 0.5f)); - return true; -} - } // namespace cc diff --git a/cc/texture_draw_quad.h b/cc/texture_draw_quad.h index 6ae0e57..177febf 100644 --- a/cc/texture_draw_quad.h +++ b/cc/texture_draw_quad.h @@ -40,8 +40,6 @@ class CC_EXPORT TextureDrawQuad : public DrawQuad { bool flipped; static const TextureDrawQuad* MaterialCast(const DrawQuad*); - - bool PerformClipping(); private: TextureDrawQuad(); }; diff --git a/cc/texture_layer_impl.cc b/cc/texture_layer_impl.cc index c45aa14..57e06a5 100644 --- a/cc/texture_layer_impl.cc +++ b/cc/texture_layer_impl.cc @@ -45,12 +45,7 @@ void TextureLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQu gfx::Rect opaqueRect(contentsOpaque() ? quadRect : gfx::Rect()); scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); quad->SetNew(sharedQuadState, quadRect, opaqueRect, m_externalTextureResource, m_premultipliedAlpha, m_uvRect, m_flipped); - - // Perform explicit clipping on a quad to avoid setting a scissor later. - if (sharedQuadState->is_clipped && quad->PerformClipping()) - sharedQuadState->is_clipped = false; - if (!quad->rect.IsEmpty()) - quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); + quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); } void TextureLayerImpl::didDraw(ResourceProvider* resourceProvider) |