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

Side by Side Diff: ui/views/view.cc

Issue 11418040: gfx::Transform API clean-up (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/corewm/image_grid.cc ('k') | ui/views/view_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first.
6
5 #include "ui/views/view.h" 7 #include "ui/views/view.h"
6 8
7 #include <algorithm> 9 #include <algorithm>
10 #include <cmath>
8 11
9 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 13 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
12 #include "base/message_loop.h" 15 #include "base/message_loop.h"
13 #include "base/stringprintf.h" 16 #include "base/stringprintf.h"
14 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
15 #include "third_party/skia/include/core/SkRect.h" 18 #include "third_party/skia/include/core/SkRect.h"
16 #include "ui/base/accessibility/accessibility_types.h" 19 #include "ui/base/accessibility/accessibility_types.h"
17 #include "ui/base/dragdrop/drag_drop_types.h" 20 #include "ui/base/dragdrop/drag_drop_types.h"
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 gfx::Rect View::GetVisibleBounds() const { 328 gfx::Rect View::GetVisibleBounds() const {
326 if (!IsDrawn()) 329 if (!IsDrawn())
327 return gfx::Rect(); 330 return gfx::Rect();
328 gfx::Rect vis_bounds(GetLocalBounds()); 331 gfx::Rect vis_bounds(GetLocalBounds());
329 gfx::Rect ancestor_bounds; 332 gfx::Rect ancestor_bounds;
330 const View* view = this; 333 const View* view = this;
331 gfx::Transform transform; 334 gfx::Transform transform;
332 335
333 while (view != NULL && !vis_bounds.IsEmpty()) { 336 while (view != NULL && !vis_bounds.IsEmpty()) {
334 transform.ConcatTransform(view->GetTransform()); 337 transform.ConcatTransform(view->GetTransform());
335 transform.ConcatTranslate(static_cast<float>(view->GetMirroredX()), 338 gfx::Transform translation;
336 static_cast<float>(view->y())); 339 translation.Translate(static_cast<float>(view->GetMirroredX()),
340 static_cast<float>(view->y()));
341 transform.ConcatTransform(translation);
337 342
338 vis_bounds = view->ConvertRectToParent(vis_bounds); 343 vis_bounds = view->ConvertRectToParent(vis_bounds);
339 const View* ancestor = view->parent_; 344 const View* ancestor = view->parent_;
340 if (ancestor != NULL) { 345 if (ancestor != NULL) {
341 ancestor_bounds.SetRect(0, 0, ancestor->width(), ancestor->height()); 346 ancestor_bounds.SetRect(0, 0, ancestor->width(), ancestor->height());
342 vis_bounds.Intersect(ancestor_bounds); 347 vis_bounds.Intersect(ancestor_bounds);
343 } else if (!view->GetWidget()) { 348 } else if (!view->GetWidget()) {
344 // If the view has no Widget, we're not visible. Return an empty rect. 349 // If the view has no Widget, we're not visible. Return an empty rect.
345 return gfx::Rect(); 350 return gfx::Rect();
346 } 351 }
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
1425 1430
1426 base::snprintf(bounds_buffer, 1431 base::snprintf(bounds_buffer,
1427 arraysize(bounds_buffer), 1432 arraysize(bounds_buffer),
1428 "\\n bounds: (%d, %d), (%dx%d)", 1433 "\\n bounds: (%d, %d), (%dx%d)",
1429 bounds().x(), 1434 bounds().x(),
1430 bounds().y(), 1435 bounds().y(),
1431 bounds().width(), 1436 bounds().width(),
1432 bounds().height()); 1437 bounds().height());
1433 result.append(bounds_buffer); 1438 result.append(bounds_buffer);
1434 1439
1435 if (!GetTransform().IsIdentity()) { 1440 gfx::DecomposedTransform decomp;
1436 gfx::Point translation; 1441 if (!GetTransform().IsIdentity() &&
1437 float rotation; 1442 gfx::DecomposeTransform(&decomp, GetTransform())) {
1438 gfx::Point3F scale; 1443 base::snprintf(bounds_buffer,
1439 if (ui::InterpolatedTransform::FactorTRS(GetTransform(), 1444 arraysize(bounds_buffer),
1440 &translation, 1445 "\\n translation: (%f, %f)",
1441 &rotation, 1446 decomp.translate[0],
1442 &scale)) { 1447 decomp.translate[1]);
1443 if (!translation.IsOrigin()) { 1448 result.append(bounds_buffer);
1444 base::snprintf(bounds_buffer,
1445 arraysize(bounds_buffer),
1446 "\\n translation: (%d, %d)",
1447 translation.x(),
1448 translation.y());
1449 result.append(bounds_buffer);
1450 }
1451 1449
1452 if (fabs(rotation) > 1e-5) { 1450 base::snprintf(bounds_buffer,
1453 base::snprintf(bounds_buffer, 1451 arraysize(bounds_buffer),
1454 arraysize(bounds_buffer), 1452 "\\n rotation: %3.2f",
1455 "\\n rotation: %3.2f", rotation); 1453 std::acos(decomp.quaternion[3]) * 360.0 / M_PI);
1456 result.append(bounds_buffer); 1454 result.append(bounds_buffer);
1457 }
1458 1455
1459 if (!gfx::ToFlooredPoint(scale.AsPointF()).IsOrigin()) { 1456 base::snprintf(bounds_buffer,
1460 base::snprintf(bounds_buffer, 1457 arraysize(bounds_buffer),
1461 arraysize(bounds_buffer), 1458 "\\n scale: (%2.4f, %2.4f)",
1462 "\\n scale: (%2.4f, %2.4f)", 1459 decomp.scale[0],
1463 scale.x(), 1460 decomp.scale[1]);
1464 scale.y()); 1461 result.append(bounds_buffer);
1465 result.append(bounds_buffer);
1466 }
1467 }
1468 } 1462 }
1469 1463
1470 result.append("\""); 1464 result.append("\"");
1471 if (!parent_) 1465 if (!parent_)
1472 result.append(", shape=box"); 1466 result.append(", shape=box");
1473 if (layer()) { 1467 if (layer()) {
1474 if (layer()->texture()) 1468 if (layer()->texture())
1475 result.append(", color=green"); 1469 result.append(", color=green");
1476 else 1470 else
1477 result.append(", color=red"); 1471 result.append(", color=red");
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1791 } 1785 }
1792 1786
1793 // Transformations ------------------------------------------------------------- 1787 // Transformations -------------------------------------------------------------
1794 1788
1795 bool View::GetTransformRelativeTo(const View* ancestor, 1789 bool View::GetTransformRelativeTo(const View* ancestor,
1796 gfx::Transform* transform) const { 1790 gfx::Transform* transform) const {
1797 const View* p = this; 1791 const View* p = this;
1798 1792
1799 while (p && p != ancestor) { 1793 while (p && p != ancestor) {
1800 transform->ConcatTransform(p->GetTransform()); 1794 transform->ConcatTransform(p->GetTransform());
1801 transform->ConcatTranslate(static_cast<float>(p->GetMirroredX()), 1795 gfx::Transform translation;
1802 static_cast<float>(p->y())); 1796 translation.Translate(static_cast<float>(p->GetMirroredX()),
1797 static_cast<float>(p->y()));
1798 transform->ConcatTransform(translation);
1803 1799
1804 p = p->parent_; 1800 p = p->parent_;
1805 } 1801 }
1806 1802
1807 return p == ancestor; 1803 return p == ancestor;
1808 } 1804 }
1809 1805
1810 // Coordinate conversion ------------------------------------------------------- 1806 // Coordinate conversion -------------------------------------------------------
1811 1807
1812 bool View::ConvertPointForAncestor(const View* ancestor, 1808 bool View::ConvertPointForAncestor(const View* ancestor,
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
2156 ConvertPointToWidget(this, &widget_location); 2152 ConvertPointToWidget(this, &widget_location);
2157 GetWidget()->RunShellDrag(this, data, widget_location, drag_operations, 2153 GetWidget()->RunShellDrag(this, data, widget_location, drag_operations,
2158 source); 2154 source);
2159 return true; 2155 return true;
2160 #else 2156 #else
2161 return false; 2157 return false;
2162 #endif // !defined(OS_MACOSX) 2158 #endif // !defined(OS_MACOSX)
2163 } 2159 }
2164 2160
2165 } // namespace views 2161 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/corewm/image_grid.cc ('k') | ui/views/view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698