• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/gfx/geometry/rect_f.h"
6 
7 #include <algorithm>
8 
9 #include "base/logging.h"
10 #include "base/strings/stringprintf.h"
11 #include "ui/gfx/geometry/insets_f.h"
12 #include "ui/gfx/geometry/rect_base_impl.h"
13 #include "ui/gfx/geometry/safe_integer_conversions.h"
14 
15 namespace gfx {
16 
17 template class RectBase<RectF, PointF, SizeF, InsetsF, Vector2dF, float>;
18 
19 typedef class RectBase<RectF, PointF, SizeF, InsetsF, Vector2dF,
20                        float> RectBaseT;
21 
IsExpressibleAsRect() const22 bool RectF::IsExpressibleAsRect() const {
23   return IsExpressibleAsInt(x()) && IsExpressibleAsInt(y()) &&
24       IsExpressibleAsInt(width()) && IsExpressibleAsInt(height()) &&
25       IsExpressibleAsInt(right()) && IsExpressibleAsInt(bottom());
26 }
27 
ToString() const28 std::string RectF::ToString() const {
29   return base::StringPrintf("%s %s",
30                             origin().ToString().c_str(),
31                             size().ToString().c_str());
32 }
33 
IntersectRects(const RectF & a,const RectF & b)34 RectF IntersectRects(const RectF& a, const RectF& b) {
35   RectF result = a;
36   result.Intersect(b);
37   return result;
38 }
39 
UnionRects(const RectF & a,const RectF & b)40 RectF UnionRects(const RectF& a, const RectF& b) {
41   RectF result = a;
42   result.Union(b);
43   return result;
44 }
45 
SubtractRects(const RectF & a,const RectF & b)46 RectF SubtractRects(const RectF& a, const RectF& b) {
47   RectF result = a;
48   result.Subtract(b);
49   return result;
50 }
51 
BoundingRect(const PointF & p1,const PointF & p2)52 RectF BoundingRect(const PointF& p1, const PointF& p2) {
53   float rx = std::min(p1.x(), p2.x());
54   float ry = std::min(p1.y(), p2.y());
55   float rr = std::max(p1.x(), p2.x());
56   float rb = std::max(p1.y(), p2.y());
57   return RectF(rx, ry, rr - rx, rb - ry);
58 }
59 
60 }  // namespace gfx
61