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/point.h" 6 7 #include "base/strings/stringprintf.h" 8 #include "build/build_config.h" 9 #include "ui/gfx/geometry/point_conversions.h" 10 #include "ui/gfx/geometry/point_f.h" 11 12 #if defined(OS_WIN) 13 #include <windows.h> 14 #elif defined(OS_IOS) 15 #include <CoreGraphics/CoreGraphics.h> 16 #elif defined(OS_MACOSX) 17 #include <ApplicationServices/ApplicationServices.h> 18 #endif 19 20 namespace gfx { 21 22 #if defined(OS_WIN) 23 Point::Point(DWORD point) { 24 POINTS points = MAKEPOINTS(point); 25 x_ = points.x; 26 y_ = points.y; 27 } 28 29 Point::Point(const POINT& point) : x_(point.x), y_(point.y) { 30 } 31 32 Point& Point::operator=(const POINT& point) { 33 x_ = point.x; 34 y_ = point.y; 35 return *this; 36 } 37 #elif defined(OS_MACOSX) 38 Point::Point(const CGPoint& point) : x_(point.x), y_(point.y) { 39 } 40 #endif 41 42 #if defined(OS_WIN) 43 POINT Point::ToPOINT() const { 44 POINT p; 45 p.x = x(); 46 p.y = y(); 47 return p; 48 } 49 #elif defined(OS_MACOSX) 50 CGPoint Point::ToCGPoint() const { 51 return CGPointMake(x(), y()); 52 } 53 #endif 54 55 void Point::SetToMin(const Point& other) { 56 x_ = x_ <= other.x_ ? x_ : other.x_; 57 y_ = y_ <= other.y_ ? y_ : other.y_; 58 } 59 60 void Point::SetToMax(const Point& other) { 61 x_ = x_ >= other.x_ ? x_ : other.x_; 62 y_ = y_ >= other.y_ ? y_ : other.y_; 63 } 64 65 std::string Point::ToString() const { 66 return base::StringPrintf("%d,%d", x(), y()); 67 } 68 69 Point ScaleToCeiledPoint(const Point& point, float x_scale, float y_scale) { 70 if (x_scale == 1.f && y_scale == 1.f) 71 return point; 72 return ToCeiledPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); 73 } 74 75 Point ScaleToCeiledPoint(const Point& point, float scale) { 76 if (scale == 1.f) 77 return point; 78 return ToCeiledPoint(ScalePoint(gfx::PointF(point), scale, scale)); 79 } 80 81 Point ScaleToFlooredPoint(const Point& point, float x_scale, float y_scale) { 82 if (x_scale == 1.f && y_scale == 1.f) 83 return point; 84 return ToFlooredPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); 85 } 86 87 Point ScaleToFlooredPoint(const Point& point, float scale) { 88 if (scale == 1.f) 89 return point; 90 return ToFlooredPoint(ScalePoint(gfx::PointF(point), scale, scale)); 91 } 92 93 Point ScaleToRoundedPoint(const Point& point, float x_scale, float y_scale) { 94 if (x_scale == 1.f && y_scale == 1.f) 95 return point; 96 return ToRoundedPoint(ScalePoint(gfx::PointF(point), x_scale, y_scale)); 97 } 98 99 Point ScaleToRoundedPoint(const Point& point, float scale) { 100 if (scale == 1.f) 101 return point; 102 return ToRoundedPoint(ScalePoint(gfx::PointF(point), scale, scale)); 103 } 104 105 } // namespace gfx 106