summaryrefslogtreecommitdiffstats
path: root/ui/gfx/vector2d_f.cc
Commit message (Collapse)AuthorAgeFilesLines
* ui: Add non-member Vector2dScale() and Vector3dScale() methods to create ↵danakj@chromium.org2012-11-091-0/+6
| | | | | | | | | | | | | | | | | scaled vectors These behave like similar methods for Rect/Point/Size. Tests: ui_unittests:Vector2dTest.Scale ui_unittests:Vector3dTest.Scale R=sky BUG=160158 Review URL: https://codereview.chromium.org/11293193 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166993 0039d316-1c4b-4281-b951-d872f2087c98
* ui: Create the gfx::QuadF class.danakj@chromium.org2012-11-021-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class is composed of four points representing its corners. It does not have to be axis-aligned, unlike a rectangle. The class supports the following operations: IsRectilinear() - True if the quad is an axis-aligned rectangle. IsCounterClockwise() - True if the points of the quad are in counter-clockwise order. Contains(Point) - True if Point is inside the quad or on its boundary. BoundingBox() - A Rectangle whose edges are defined by the four points of the quad. Scale() - Scales each point on the quad by the given scale factors. operator+/- - Moves each point in the quad by the given offset. The operations on this class are inspired by, but not copied from, the FloatQuad class in WebCore. I've written my own implementation to match those in WebCore for each of them, with exception of IsRectilinear() as I also wrote the current method in WebCore. Tests: ui_unittests:QuadTest.Construction ui_unittests:QuadTest.AddingVectors ui_unittests:QuadTest.IsRectilinear ui_unittests:QuadTest.IsCounterClockwise ui_unittests:QuadTest.BoundingBox ui_unittests:QuadTest.ContainsPoint ui_unittests:QuadTest.Scale BUG=147395 R=sky,pkasting Review URL: https://codereview.chromium.org/11369043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165689 0039d316-1c4b-4281-b951-d872f2087c98
* Add Vector2d classes that represent offsets, instead of using Point.danakj@chromium.org2012-10-311-0/+54
Previously Point served two purposes, to be a position in 2d space, and also an offset from the origin. This introduces a Vector2d class to represent an offset, allowing typesafety checks for geometric operations. The following are now the case: Point +/- Vector = Point - A point plus/minus an offset gives you a point at a position offset by the vector. Vector +/- Vector = Vector - Two offsets can be added together to make a new offset. Point - Point = Vector - Subtracting one point from another gives you the offset between the two points. We add some new methods to perform these operations: Rect::OffsetFromOrigin() gives the offset between the position of the rect and the origin. Point::OffsetFromOrigin() gives the offset between the point and the origin. PointAtOffsetFromOrigin(Vector2d) converts a Vector2d to a Point at the given offset away from the origin. Rect::Offset(), Point::Add(), and Point::Subtract() now receive a Vector2d instead of a point. BUG=147395 R=sky Review URL: https://codereview.chromium.org/11269022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165198 0039d316-1c4b-4281-b951-d872f2087c98