diff options
author | Mike Reed <reed@google.com> | 2009-06-10 16:48:35 -0400 |
---|---|---|
committer | Mike Reed <reed@google.com> | 2009-06-11 10:26:06 -0400 |
commit | 353e1e16ed060c0ea11f2dea6dea8b565ac71533 (patch) | |
tree | 02d0e35aa82c733ad6834b133ecceac0222733b6 /WebCore/rendering | |
parent | 5f95030b683afa83909e9de4ac8ba908ca15112c (diff) | |
download | external_webkit-353e1e16ed060c0ea11f2dea6dea8b565ac71533.zip external_webkit-353e1e16ed060c0ea11f2dea6dea8b565ac71533.tar.gz external_webkit-353e1e16ed060c0ea11f2dea6dea8b565ac71533.tar.bz2 |
speedup some common matrix operations, to be submitted back
Diffstat (limited to 'WebCore/rendering')
-rw-r--r-- | WebCore/rendering/RenderLayer.cpp | 5 | ||||
-rw-r--r-- | WebCore/rendering/RenderObject.cpp | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp index fd88120..78fe7d8 100644 --- a/WebCore/rendering/RenderLayer.cpp +++ b/WebCore/rendering/RenderLayer.cpp @@ -1956,9 +1956,14 @@ RenderLayer::paintLayer(RenderLayer* rootLayer, GraphicsContext* p, int x = 0; int y = 0; convertToLayerCoords(rootLayer, x, y); +#ifdef ANDROID_FASTER_MATRIX + TransformationMatrix transform(*m_transform); + transform.translateRight(x, y); +#else TransformationMatrix transform; transform.translate(x, y); transform = *m_transform * transform; +#endif // Apply the transform. p->save(); diff --git a/WebCore/rendering/RenderObject.cpp b/WebCore/rendering/RenderObject.cpp index bb98c9f..a9f6693 100644 --- a/WebCore/rendering/RenderObject.cpp +++ b/WebCore/rendering/RenderObject.cpp @@ -1703,11 +1703,22 @@ void RenderObject::mapAbsoluteToLocalPoint(bool fixed, bool useTransforms, Trans TransformationMatrix RenderObject::transformFromContainer(const RenderObject* containerObject, const IntSize& offsetInContainer) const { TransformationMatrix containerTransform; +#ifdef ANDROID_FASTER_MATRIX + RenderLayer* layer; + const double tx = offsetInContainer.width(); + const double ty = offsetInContainer.height(); + if (hasLayer() && (layer = toRenderBox(this)->layer()) && layer->transform()) { + containerTransform = layer->currentTransform(); + containerTransform.translateRight(tx, ty); + } else + containerTransform.translate(tx, ty); +#else containerTransform.translate(offsetInContainer.width(), offsetInContainer.height()); RenderLayer* layer; if (hasLayer() && (layer = toRenderBox(this)->layer()) && layer->transform()) containerTransform.multLeft(layer->currentTransform()); - +#endif + #if ENABLE(3D_RENDERING) if (containerObject && containerObject->style()->hasPerspective()) { // Perpsective on the container affects us, so we have to factor it in here. |