Index: ui/base/touch/touch_editing_controller.cc |
diff --git a/ui/base/touch/touch_editing_controller.cc b/ui/base/touch/touch_editing_controller.cc |
index 1b84ed929bf2af8ad365bd6974d87ec7e3866bb7..f3c4c243a90d8fdc9ec4688980efb90c6b0ae3c8 100644 |
--- a/ui/base/touch/touch_editing_controller.cc |
+++ b/ui/base/touch/touch_editing_controller.cc |
@@ -9,6 +9,45 @@ |
namespace { |
TouchSelectionControllerFactory* g_shared_instance = NULL; |
} // namespace |
+ |
+SelectionBound::SelectionBound() |
+ : type(ui::SelectionBound::EMPTY) { |
+} |
+ |
+SelectionBound::~SelectionBound() { |
+} |
+ |
+int SelectionBound::GetHeight() const { |
+ return edge_bottom.y() - edge_top.y(); |
+} |
+ |
+bool operator==(const SelectionBound& lhs, const SelectionBound& rhs) { |
+ return lhs.type == rhs.type && lhs.edge_top == rhs.edge_top && |
+ lhs.edge_bottom == rhs.edge_bottom; |
+} |
+ |
+bool operator!=(const SelectionBound& lhs, const SelectionBound& rhs) { |
+ return !(lhs == rhs); |
+} |
+ |
+gfx::Rect RectBetweenSelectionBounds(const SelectionBound& b1, |
+ const SelectionBound& b2) { |
+ int all_x[] ={ |
+ b1.edge_top.x(), b2.edge_top.x(), b1.edge_bottom.x(), b2.edge_bottom.x() |
+ }; |
+ int all_y[] = { |
+ b1.edge_top.y(), b2.edge_top.y(), b1.edge_bottom.y(), b2.edge_bottom.y() |
+ }; |
+ const int num_elements = arraysize(all_x); |
+ COMPILE_ASSERT(arraysize(all_y) == num_elements, array_size_mismatch); |
+ |
+ int left = *std::min_element(all_x, all_x + num_elements); |
+ int top = *std::min_element(all_y, all_y + num_elements); |
+ int right = *std::max_element(all_x, all_x + num_elements); |
+ int bottom = *std::max_element(all_y, all_y + num_elements); |
+ |
+ return gfx::Rect(left, top, right - left, bottom - top); |
+} |
TouchSelectionController* TouchSelectionController::create( |
TouchEditable* client_view) { |