Index: ui/gfx/win/rect_util.h |
diff --git a/ui/gfx/win/rect_util.h b/ui/gfx/win/rect_util.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c6484af9a9e8c9e15fdaf2c2110192e4cbc85e4c |
--- /dev/null |
+++ b/ui/gfx/win/rect_util.h |
@@ -0,0 +1,73 @@ |
+// Copyright 2016 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_WIN_RECT_UTIL_H_ |
+#define UI_GFX_WIN_RECT_UTIL_H_ |
+ |
+#include <stdint.h> |
+ |
+#include "ui/gfx/gfx_export.h" |
+ |
+namespace gfx { |
+ |
+class Rect; |
+ |
+namespace win { |
+ |
+enum class RectEdge { |
+ BOTTOM = 0, |
+ LEFT = 1, |
+ TOP = 2, |
+ RIGHT = 3, |
+ NONE = 4, |
+}; |
+ |
+// Returns |ref|'s RectEdge touching |test|. |
+RectEdge GFX_EXPORT RectTouch(gfx::Rect ref, gfx::Rect test); |
+ |
+// Returns a scaled and positioned rect based off of target_rect and context. |
+// The reference rectangle and target rectangle may scale at different rates. |
+// This function attempts to preserve the relative positioning of the target |
+// rectangle with respect to the scaled rectangle in the face of differing |
+// scale factors. |
+// |
+// Examples: |
+// +--------------+ Since both rectangles are of the same |
+// | | scale factor, positions and sizes |
+// | | remain the same. |
+// | REF 1x +----------+ |
+// | | | |
+// +--------------+ 1x | |
+// | | |
+// +----------+ |
+// |
+// Original |
+// +--------------+ The 2x rectangle is scaled down while |
+// | | maintaining a similar neighboring relationship |
+// | | with the 1x rectangle. |
+// | REF 1x +----------+ |
+// | | | |
+// +--------------+ 2x | |
+// | | |
+// +----------+ |
+// Scaled |
+// +--------------+ |
+// | | |
+// | | |
+// | REF 1x | |
+// | +-----+ |
+// +--------------+ 2x | |
+// +-----+ |
+gfx::Rect GFX_EXPORT ScaleAndPositionRect(gfx::Rect ref_scaled_rect, |
+ gfx::Rect ref_original_rect, |
+ gfx::Rect target_rect, |
+ float target_scale_factor); |
+ |
+// Returns the squared distance between two rects. |
+int64_t GFX_EXPORT SquaredDistanceBetweenRects(gfx::Rect ref, gfx::Rect rect); |
+ |
+} // namespace win |
+} // namespace gfx |
+ |
+#endif // UI_GFX_WIN_RECT_UTIL_H_ |