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

Side by Side Diff: components/view_manager/view_coordinate_conversions.cc

Issue 1344573002: Mandoline: Rename components/view_manager to components/mus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 3 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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 "components/view_manager/view_coordinate_conversions.h"
6
7 #include "components/view_manager/server_view.h"
8 #include "ui/gfx/geometry/point.h"
9 #include "ui/gfx/geometry/point_conversions.h"
10 #include "ui/gfx/geometry/point_f.h"
11 #include "ui/gfx/geometry/rect.h"
12 #include "ui/gfx/geometry/vector2d.h"
13 #include "ui/gfx/geometry/vector2d_f.h"
14
15 namespace view_manager {
16
17 namespace {
18
19 gfx::Vector2dF CalculateOffsetToAncestor(const ServerView* view,
20 const ServerView* ancestor) {
21 DCHECK(ancestor->Contains(view));
22 gfx::Vector2d result;
23 for (const ServerView* v = view; v != ancestor; v = v->parent())
24 result += v->bounds().OffsetFromOrigin();
25 return gfx::Vector2dF(result.x(), result.y());
26 }
27
28 } // namespace
29
30 gfx::Point ConvertPointBetweenViews(const ServerView* from,
31 const ServerView* to,
32 const gfx::Point& point) {
33 return gfx::ToFlooredPoint(
34 ConvertPointFBetweenViews(from, to, gfx::PointF(point.x(), point.y())));
35 }
36
37 gfx::PointF ConvertPointFBetweenViews(const ServerView* from,
38 const ServerView* to,
39 const gfx::PointF& point) {
40 DCHECK(from);
41 DCHECK(to);
42 if (from == to)
43 return point;
44
45 if (from->Contains(to)) {
46 const gfx::Vector2dF offset(CalculateOffsetToAncestor(to, from));
47 return point - offset;
48 }
49 DCHECK(to->Contains(from));
50 const gfx::Vector2dF offset(CalculateOffsetToAncestor(from, to));
51 return point + offset;
52 }
53
54 gfx::Rect ConvertRectBetweenViews(const ServerView* from,
55 const ServerView* to,
56 const gfx::Rect& rect) {
57 DCHECK(from);
58 DCHECK(to);
59 if (from == to)
60 return rect;
61
62 const gfx::Point top_left(ConvertPointBetweenViews(from, to, rect.origin()));
63 const gfx::Point bottom_right(gfx::ToCeiledPoint(ConvertPointFBetweenViews(
64 from, to, gfx::PointF(rect.right(), rect.bottom()))));
65 return gfx::Rect(top_left.x(), top_left.y(), bottom_right.x() - top_left.x(),
66 bottom_right.y() - top_left.y());
67 }
68
69 } // namespace view_manager
OLDNEW
« no previous file with comments | « components/view_manager/view_coordinate_conversions.h ('k') | components/view_manager/view_coordinate_conversions_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698