Source/WebCore/ChangeLog

 12012-08-02 Emil A Eklund <eae@chromium.org>
 2
 3 Remove dependency on LayoutTypes.h from transformation code
 4 https://bugs.webkit.org/show_bug.cgi?id=93037
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 TransformationMatrix and HitTestingTransformState includes LayoutTypes.h
 9 which is in rendering. This is a layering violation.
 10 Remove this dependency as it is no longer needed.
 11
 12 No new tests, no change in functionality.
 13
 14 * platform/FractionalLayoutUnit.h:
 15 (WebCore::FractionalLayoutUnit::clamp):
 16 Add FractionalLayoutUnit::clamp method that clamps a double to a
 17 FractionalLayoutUnit.
 18
 19 * platform/graphics/transforms/TransformationMatrix.cpp:
 20 (WebCore::clampEdgeValue):
 21 (WebCore::TransformationMatrix::clampedBoundsOfProjectedQuad):
 22 Use clamp/max/min from FractionalLayoutUnit instead of going through
 23 LayoutUnit abstraction.
 24
 25 * platform/graphics/transforms/TransformationMatrix.h:
 26 * rendering/HitTestingTransformState.cpp:
 27 * rendering/HitTestingTransformState.h:
 28 Replace use of LayoutRect with FractionalLayoutRect as LayoutRect maps to
 29 FractionalLayoutRect on all platforms.
 30
1312012-08-02 Ryosuke Niwa <rniwa@webkit.org>
232
333 scripts in formaction should be stripped upon paste
124527

Source/WebCore/platform/FractionalLayoutUnit.h

3535#include <limits>
3636#include <math.h>
3737#include <stdlib.h>
 38#include <wtf/MathExtras.h>
3839
3940#if PLATFORM(QT)
4041#include <QDataStream>

@@public:
181182 m.m_value = std::numeric_limits<int>::min();
182183 return m;
183184 }
 185 static FractionalLayoutUnit clamp(double value)
 186 {
 187 return clampTo<FractionalLayoutUnit>(value, FractionalLayoutUnit::min(), FractionalLayoutUnit::max());
 188 }
184189
185190private:
186191 static bool isInBounds(int value)
124516

Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp

2828#include "TransformationMatrix.h"
2929
3030#include "AffineTransform.h"
31 #include "FractionalLayoutRect.h"
3231#include "FloatPoint3D.h"
3332#include "FloatRect.h"
3433#include "FloatQuad.h"

@@FloatQuad TransformationMatrix::projectQ
614613static float clampEdgeValue(float f)
615614{
616615 ASSERT(!isnan(f));
617  return min<float>(max<float>(f, -MAX_LAYOUT_UNIT / 2), MAX_LAYOUT_UNIT / 2);
 616 return min<float>(max<float>(f, -FractionalLayoutUnit::max() / 2), FractionalLayoutUnit::max() / 2);
618617}
619618
620 LayoutRect TransformationMatrix::clampedBoundsOfProjectedQuad(const FloatQuad& q) const
 619FractionalLayoutRect TransformationMatrix::clampedBoundsOfProjectedQuad(const FloatQuad& q) const
621620{
622621 FloatRect mappedQuadBounds = projectQuad(q).boundingBox();
623622

@@LayoutRect TransformationMatrix::clamped
626625
627626 float right;
628627 if (isinf(mappedQuadBounds.x()) && isinf(mappedQuadBounds.width()))
629  right = MAX_LAYOUT_UNIT / 2;
 628 right = FractionalLayoutUnit::max() / 2;
630629 else
631630 right = clampEdgeValue(ceilf(mappedQuadBounds.maxX()));
632631
633632 float bottom;
634633 if (isinf(mappedQuadBounds.y()) && isinf(mappedQuadBounds.height()))
635  bottom = MAX_LAYOUT_UNIT / 2;
 634 bottom = FractionalLayoutUnit::max() / 2;
636635 else
637636 bottom = clampEdgeValue(ceilf(mappedQuadBounds.maxY()));
638 
639  return LayoutRect(clampToLayoutUnit(left), clampToLayoutUnit(top),
640  clampToLayoutUnit(right - left), clampToLayoutUnit(bottom - top));
 637
 638 return FractionalLayoutRect(FractionalLayoutUnit::clamp(left), FractionalLayoutUnit::clamp(top),
 639 FractionalLayoutUnit::clamp(right - left), FractionalLayoutUnit::clamp(bottom - top));
641640}
642641
643642FloatPoint TransformationMatrix::mapPoint(const FloatPoint& p) const
124516

Source/WebCore/platform/graphics/transforms/TransformationMatrix.h

2727#define TransformationMatrix_h
2828
2929#include "FloatPoint.h"
 30#include "FractionalLayoutRect.h"
3031#include "IntPoint.h"
31 #include "LayoutTypes.h"
3232#include <string.h> //for memcpy
3333#include <wtf/FastAllocBase.h>
3434

@@public:
167167 FloatQuad projectQuad(const FloatQuad&) const;
168168 // Projects the four corners of the quad and takes a bounding box,
169169 // while sanitizing values created when the w component is negative.
170  LayoutRect clampedBoundsOfProjectedQuad(const FloatQuad&) const;
 170 FractionalLayoutRect clampedBoundsOfProjectedQuad(const FloatQuad&) const;
171171
172172 double m11() const { return m_matrix[0][0]; }
173173 void setM11(double f) { m_matrix[0][0] = f; }
124516

Source/WebCore/rendering/HitTestingTransformState.cpp

@@FloatQuad HitTestingTransformState::mapp
7979 return m_accumulatedTransform.inverse().projectQuad(m_lastPlanarArea);
8080}
8181
82 LayoutRect HitTestingTransformState::boundsOfMappedArea() const
 82FractionalLayoutRect HitTestingTransformState::boundsOfMappedArea() const
8383{
8484 return m_accumulatedTransform.inverse().clampedBoundsOfProjectedQuad(m_lastPlanarArea);
8585}
124516

Source/WebCore/rendering/HitTestingTransformState.h

@@public:
5959 FloatPoint mappedPoint() const;
6060 FloatQuad mappedQuad() const;
6161 FloatQuad mappedArea() const;
62  LayoutRect boundsOfMappedArea() const;
 62 FractionalLayoutRect boundsOfMappedArea() const;
6363 void flatten();
6464
6565 FloatPoint m_lastPlanarPoint;
124516