| Index: cc/CCMathUtil.h
|
| diff --git a/cc/CCMathUtil.h b/cc/CCMathUtil.h
|
| index ed3848e6f4b7fbdfe8b6b5264d59340b45438231..945ffe8072bc5a9981a06c6f95ea1caddc59b9c0 100644
|
| --- a/cc/CCMathUtil.h
|
| +++ b/cc/CCMathUtil.h
|
| @@ -2,106 +2,5 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CCMathUtil_h
|
| -#define CCMathUtil_h
|
| -
|
| -#include "FloatPoint.h"
|
| -#include "FloatPoint3D.h"
|
| -
|
| -namespace WebKit {
|
| -class WebTransformationMatrix;
|
| -}
|
| -
|
| -namespace cc {
|
| -
|
| -class IntRect;
|
| -class FloatRect;
|
| -class FloatQuad;
|
| -
|
| -struct HomogeneousCoordinate {
|
| - HomogeneousCoordinate(double newX, double newY, double newZ, double newW)
|
| - : x(newX)
|
| - , y(newY)
|
| - , z(newZ)
|
| - , w(newW)
|
| - {
|
| - }
|
| -
|
| - bool shouldBeClipped() const
|
| - {
|
| - return w <= 0;
|
| - }
|
| -
|
| - FloatPoint cartesianPoint2d() const
|
| - {
|
| - if (w == 1)
|
| - return FloatPoint(x, y);
|
| -
|
| - // For now, because this code is used privately only by CCMathUtil, it should never be called when w == 0, and we do not yet need to handle that case.
|
| - ASSERT(w);
|
| - double invW = 1.0 / w;
|
| - return FloatPoint(x * invW, y * invW);
|
| - }
|
| -
|
| - FloatPoint3D cartesianPoint3d() const
|
| - {
|
| - if (w == 1)
|
| - return FloatPoint3D(x, y, z);
|
| -
|
| - // For now, because this code is used privately only by CCMathUtil, it should never be called when w == 0, and we do not yet need to handle that case.
|
| - ASSERT(w);
|
| - double invW = 1.0 / w;
|
| - return FloatPoint3D(x * invW, y * invW, z * invW);
|
| - }
|
| -
|
| - double x;
|
| - double y;
|
| - double z;
|
| - double w;
|
| -};
|
| -
|
| -class CCMathUtil {
|
| -public:
|
| -
|
| - // Background: WebTransformationMatrix code in WebCore does not do the right thing in
|
| - // mapRect / mapQuad / projectQuad when there is a perspective projection that causes
|
| - // one of the transformed vertices to go to w < 0. In those cases, it is necessary to
|
| - // perform clipping in homogeneous coordinates, after applying the transform, before
|
| - // dividing-by-w to convert to cartesian coordinates.
|
| - //
|
| - // These functions return the axis-aligned rect that encloses the correctly clipped,
|
| - // transformed polygon.
|
| - static IntRect mapClippedRect(const WebKit::WebTransformationMatrix&, const IntRect&);
|
| - static FloatRect mapClippedRect(const WebKit::WebTransformationMatrix&, const FloatRect&);
|
| - static FloatRect projectClippedRect(const WebKit::WebTransformationMatrix&, const FloatRect&);
|
| -
|
| - // Returns an array of vertices that represent the clipped polygon. After returning, indexes from
|
| - // 0 to numVerticesInClippedQuad are valid in the clippedQuad array. Note that
|
| - // numVerticesInClippedQuad may be zero, which means the entire quad was clipped, and
|
| - // none of the vertices in the array are valid.
|
| - static void mapClippedQuad(const WebKit::WebTransformationMatrix&, const FloatQuad& srcQuad, FloatPoint clippedQuad[8], int& numVerticesInClippedQuad);
|
| -
|
| - static FloatRect computeEnclosingRectOfVertices(FloatPoint vertices[], int numVertices);
|
| - static FloatRect computeEnclosingClippedRect(const HomogeneousCoordinate& h1, const HomogeneousCoordinate& h2, const HomogeneousCoordinate& h3, const HomogeneousCoordinate& h4);
|
| -
|
| - // NOTE: These functions do not do correct clipping against w = 0 plane, but they
|
| - // correctly detect the clipped condition via the boolean clipped.
|
| - static FloatQuad mapQuad(const WebKit::WebTransformationMatrix&, const FloatQuad&, bool& clipped);
|
| - static FloatPoint mapPoint(const WebKit::WebTransformationMatrix&, const FloatPoint&, bool& clipped);
|
| - static FloatPoint3D mapPoint(const WebKit::WebTransformationMatrix&, const FloatPoint3D&, bool& clipped);
|
| - static FloatQuad projectQuad(const WebKit::WebTransformationMatrix&, const FloatQuad&, bool& clipped);
|
| - static FloatPoint projectPoint(const WebKit::WebTransformationMatrix&, const FloatPoint&, bool& clipped);
|
| -
|
| - static void flattenTransformTo2d(WebKit::WebTransformationMatrix&);
|
| -
|
| - // Returns the smallest angle between the given two vectors in degrees. Neither vector is
|
| - // assumed to be normalized.
|
| - static float smallestAngleBetweenVectors(const FloatSize&, const FloatSize&);
|
| -
|
| - // Projects the |source| vector onto |destination|. Neither vector is assumed to be normalized.
|
| - static FloatSize projectVector(const FloatSize& source, const FloatSize& destination);
|
| -};
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // #define CCMathUtil_h
|
| +// Temporary forwarding header
|
| +#include "cc/math_util.h"
|
|
|