Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Unified Diff: ui/base/touch/selection_bound.cc

Issue 759433002: Reland: Move TouchSelectionController from content to ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Excluded ui/touch_selection from Windows GN build Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/touch/selection_bound.h ('k') | ui/base/touch/selection_bound_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/touch/selection_bound.cc
diff --git a/ui/base/touch/selection_bound.cc b/ui/base/touch/selection_bound.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2102ef24c094becd2e83126dbed4120b637e7e2c
--- /dev/null
+++ b/ui/base/touch/selection_bound.cc
@@ -0,0 +1,93 @@
+// Copyright 2014 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.
+
+#include <algorithm>
+
+#include "base/macros.h"
+#include "cc/output/viewport_selection_bound.h"
+#include "ui/base/touch/selection_bound.h"
+#include "ui/gfx/geometry/point_conversions.h"
+#include "ui/gfx/rect.h"
+
+namespace ui {
+
+namespace {
+
+SelectionBound::Type ConvertToSelectionBoundType(cc::SelectionBoundType type) {
+ switch (type) {
+ case cc::SELECTION_BOUND_LEFT:
+ return SelectionBound::LEFT;
+ case cc::SELECTION_BOUND_RIGHT:
+ return SelectionBound::RIGHT;
+ case cc::SELECTION_BOUND_CENTER:
+ return SelectionBound::CENTER;
+ case cc::SELECTION_BOUND_EMPTY:
+ return SelectionBound::EMPTY;
+ }
+ NOTREACHED() << "Unknown selection bound type";
+ return SelectionBound::EMPTY;
+}
+
+} // namespace
+
+SelectionBound::SelectionBound() : type_(EMPTY), visible_(false) {
+}
+
+SelectionBound::SelectionBound(const cc::ViewportSelectionBound& bound)
+ : type_(ConvertToSelectionBoundType(bound.type)),
+ visible_(bound.visible) {
+ if (type_ != EMPTY)
+ SetEdge(bound.edge_top, bound.edge_bottom);
+}
+
+SelectionBound::~SelectionBound() {
+}
+
+void SelectionBound::SetEdgeTop(const gfx::PointF& value) {
+ edge_top_ = value;
+ edge_top_rounded_ = gfx::ToRoundedPoint(value);
+}
+
+void SelectionBound::SetEdgeBottom(const gfx::PointF& value) {
+ edge_bottom_ = value;
+ edge_bottom_rounded_ = gfx::ToRoundedPoint(value);
+}
+
+void SelectionBound::SetEdge(const gfx::PointF& top,
+ const gfx::PointF& bottom) {
+ SetEdgeTop(top);
+ SetEdgeBottom(bottom);
+}
+
+int SelectionBound::GetHeight() const {
+ return edge_bottom_rounded_.y() - edge_top_rounded_.y();
+}
+
+bool operator==(const SelectionBound& lhs, const SelectionBound& rhs) {
+ return lhs.type() == rhs.type() && lhs.visible() == rhs.visible() &&
+ 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) {
+ gfx::Point top_left(b1.edge_top_rounded());
+ top_left.SetToMin(b1.edge_bottom_rounded());
+ top_left.SetToMin(b2.edge_top_rounded());
+ top_left.SetToMin(b2.edge_bottom_rounded());
+
+ gfx::Point bottom_right(b1.edge_top_rounded());
+ bottom_right.SetToMax(b1.edge_bottom_rounded());
+ bottom_right.SetToMax(b2.edge_top_rounded());
+ bottom_right.SetToMax(b2.edge_bottom_rounded());
+
+ gfx::Vector2d diff = bottom_right - top_left;
+ return gfx::Rect(top_left, gfx::Size(diff.x(), diff.y()));
+}
+
+} // namespace ui
« no previous file with comments | « ui/base/touch/selection_bound.h ('k') | ui/base/touch/selection_bound_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698