 Chromium Code Reviews
 Chromium Code Reviews Issue 11369043:
  ui: Create the gfx::QuadF class.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 11369043:
  ui: Create the gfx::QuadF class.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: ui/gfx/quad_f.h | 
| diff --git a/ui/gfx/quad_f.h b/ui/gfx/quad_f.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..ab16b4036322218fd072ed3938497b3fae7bdacd | 
| --- /dev/null | 
| +++ b/ui/gfx/quad_f.h | 
| @@ -0,0 +1,93 @@ | 
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef UI_GFX_QUAD_F_H_ | 
| +#define UI_GFX_QUAD_F_H_ | 
| + | 
| +#include <string> | 
| + | 
| +#include "ui/base/ui_export.h" | 
| +#include "ui/gfx/point_f.h" | 
| +#include "ui/gfx/rect_f.h" | 
| + | 
| +namespace gfx { | 
| + | 
| +// A Quad is defined by four corners, allowing it to have edges that are not | 
| +// axis-aligned, unlike a Rect. | 
| +class UI_EXPORT QuadF { | 
| + public: | 
| + QuadF(); | 
| + QuadF(const PointF& p1, const PointF& p2, const PointF& p3, const PointF& p4); | 
| + explicit QuadF(const RectF& rect); | 
| + ~QuadF(); | 
| + | 
| + void operator=(const QuadF& quad); | 
| + void operator=(const RectF& rect); | 
| + | 
| + void set_p1(const PointF& p) { p1_ = p; } | 
| + void set_p2(const PointF& p) { p2_ = p; } | 
| + void set_p3(const PointF& p) { p3_ = p; } | 
| + void set_p4(const PointF& p) { p4_ = p; } | 
| + | 
| + PointF p1() const { return p1_; } | 
| 
sky
2012/11/02 15:49:43
const PointF&
 
tfarina
2012/11/02 15:53:30
See my email to Peter about this.
The subject is:
 
danakj
2012/11/02 15:55:00
Done.
 | 
| + PointF p2() const { return p2_; } | 
| + PointF p3() const { return p3_; } | 
| + PointF p4() const { return p4_; } | 
| + | 
| + // Returns true if the quad is an axis-aligned rectangle. | 
| + bool IsRectilinear() const; | 
| + | 
| + // Returns true if the points of the quad are in counter-clockwise order. This | 
| + // assumes that the quad is convex, and that no three points are collinear. | 
| + bool IsCounterClockwise() const; | 
| + | 
| + // Returns true if the |point| is contained within the quad, or lies on on | 
| + // edge of the quad. | 
| + bool Contains(const gfx::PointF& point) const; | 
| + | 
| + // Returns a rectangle that bounds the four points of the quad. The points of | 
| + // the quad may lie on the right/bottom edge of the resulting rectangle, | 
| + // rather than being strictly inside it. | 
| + RectF BoundingBox() const; | 
| + | 
| + // Add a vector to the quad, offseting each point in the quad by the vector. | 
| + void operator+=(const Vector2dF& rhs); | 
| + // Subtract a vector from the quad, offseting each point in the quad by the | 
| + // inverse of the vector. | 
| + void operator-=(const Vector2dF& rhs); | 
| + | 
| + // Scale each point in the quad by the |scale| factor. | 
| + void Scale(float scale) { Scale(scale, scale); } | 
| + | 
| + // Scale each point in the quad by the scale factors along each axis. | 
| + void Scale(float x_scale, float y_scale); | 
| + | 
| + // Returns a string representation of quad. | 
| + std::string ToString() const; | 
| + | 
| + private: | 
| + PointF p1_; | 
| + PointF p2_; | 
| + PointF p3_; | 
| + PointF p4_; | 
| +}; | 
| + | 
| +inline bool operator==(const QuadF& lhs, const QuadF& rhs) { | 
| + return lhs.p1() == rhs.p1() && lhs.p2() == rhs.p2() | 
| + && lhs.p3() == rhs.p3() && lhs.p4() == rhs.p4(); | 
| 
sky
2012/11/02 15:49:43
&& on previous side.
 
danakj
2012/11/02 15:55:00
Done.
 | 
| +} | 
| + | 
| +inline bool operator!=(const QuadF& lhs, const QuadF& rhs) { | 
| + return !(lhs == rhs); | 
| +} | 
| + | 
| +// Add a vector to a quad, offseting each point in the quad by the vector. | 
| +UI_EXPORT QuadF operator+(const QuadF& lhs, const Vector2dF& rhs); | 
| +// Subtract a vector from a quad, offseting each point in the quad by the | 
| +// inverse of the vector. | 
| +UI_EXPORT QuadF operator-(const QuadF& lhs, const Vector2dF& rhs); | 
| + | 
| +} // namespace gfx | 
| + | 
| +#endif // UI_GFX_QUAD_F_H_ |