OLD | NEW |
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 #ifndef NDEBUG | 5 #ifndef NDEBUG |
6 | 6 |
| 7 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. |
| 8 |
7 #include "ui/compositor/debug_utils.h" | 9 #include "ui/compositor/debug_utils.h" |
8 | 10 |
| 11 #include <cmath> |
9 #include <iomanip> | 12 #include <iomanip> |
10 #include <iostream> | 13 #include <iostream> |
11 #include <string> | 14 #include <string> |
12 | 15 |
13 #include "base/logging.h" | 16 #include "base/logging.h" |
14 #include "base/utf_string_conversions.h" | 17 #include "base/utf_string_conversions.h" |
15 #include "ui/compositor/layer.h" | 18 #include "ui/compositor/layer.h" |
16 #include "ui/gfx/interpolated_transform.h" | 19 #include "ui/gfx/interpolated_transform.h" |
17 #include "ui/gfx/point.h" | 20 #include "ui/gfx/point.h" |
18 #include "ui/gfx/point_conversions.h" | 21 #include "ui/gfx/point_conversions.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 buf << L" opaque"; | 53 buf << L" opaque"; |
51 break; | 54 break; |
52 case ui::LAYER_SOLID_COLOR: | 55 case ui::LAYER_SOLID_COLOR: |
53 buf << L" solid"; | 56 buf << L" solid"; |
54 break; | 57 break; |
55 } | 58 } |
56 | 59 |
57 if (!layer->visible()) | 60 if (!layer->visible()) |
58 buf << L" !visible"; | 61 buf << L" !visible"; |
59 | 62 |
60 buf << L'\n' << UTF8ToWide(content_indent_str); | 63 std::string property_indent_str(indent+3, ' '); |
| 64 buf << L'\n' << UTF8ToWide(property_indent_str); |
61 buf << L"bounds: " << layer->bounds().x() << L',' << layer->bounds().y(); | 65 buf << L"bounds: " << layer->bounds().x() << L',' << layer->bounds().y(); |
62 buf << L' ' << layer->bounds().width() << L'x' << layer->bounds().height(); | 66 buf << L' ' << layer->bounds().width() << L'x' << layer->bounds().height(); |
63 | 67 |
64 if (layer->opacity() != 1.0f) { | 68 if (layer->opacity() != 1.0f) { |
65 buf << L'\n' << UTF8ToWide(content_indent_str); | 69 buf << L'\n' << UTF8ToWide(property_indent_str); |
66 buf << L"opacity: " << std::setprecision(2) << layer->opacity(); | 70 buf << L"opacity: " << std::setprecision(2) << layer->opacity(); |
67 } | 71 } |
68 | 72 |
69 if (!layer->transform().IsIdentity()) { | 73 gfx::DecomposedTransform decomp; |
70 gfx::Point translation; | 74 if (!layer->transform().IsIdentity() && |
71 float rotation; | 75 gfx::DecomposeTransform(&decomp, layer->transform())) { |
72 gfx::Point3F scale; | 76 buf << L'\n' << UTF8ToWide(property_indent_str); |
73 if (ui::InterpolatedTransform::FactorTRS(layer->transform(), | 77 buf << L"translation: " << std::fixed << decomp.translate[0]; |
74 &translation, | 78 buf << L", " << decomp.translate[1]; |
75 &rotation, | |
76 &scale)) { | |
77 if (!translation.IsOrigin()) { | |
78 buf << L'\n' << UTF8ToWide(content_indent_str); | |
79 buf << L"translation: " << translation.x() << L", " << translation.y(); | |
80 } | |
81 | 79 |
82 if (fabs(rotation) > 1e-5) { | 80 buf << L'\n' << UTF8ToWide(property_indent_str); |
83 buf << L'\n' << UTF8ToWide(content_indent_str); | 81 buf << L"rotation: "; |
84 buf << L"rotation: " << std::setprecision(4) << rotation; | 82 buf << std::acos(decomp.quaternion[3]) * 360.0 / M_PI; |
85 } | |
86 | 83 |
87 if (!gfx::ToFlooredPoint(scale.AsPointF()).IsOrigin()) { | 84 buf << L'\n' << UTF8ToWide(property_indent_str); |
88 buf << L'\n' << UTF8ToWide(content_indent_str); | 85 buf << L"scale: " << decomp.scale[0]; |
89 buf << std::setprecision(4); | 86 buf << L", " << decomp.scale[1]; |
90 buf << L"scale: " << scale.x() << L", " << scale.y(); | |
91 } | |
92 } | |
93 } | 87 } |
94 | 88 |
95 VLOG(1) << buf.str(); | 89 VLOG(1) << buf.str(); |
96 std::cout << buf.str() << std::endl; | 90 std::cout << buf.str() << std::endl; |
97 | 91 |
98 for (size_t i = 0, count = layer->children().size(); i < count; ++i) | 92 for (size_t i = 0, count = layer->children().size(); i < count; ++i) |
99 PrintLayerHierarchyImp(layer->children()[i], indent + 3, mouse_location); | 93 PrintLayerHierarchyImp(layer->children()[i], indent + 3, mouse_location); |
100 } | 94 } |
101 | 95 |
102 } // namespace | 96 } // namespace |
103 | 97 |
104 void PrintLayerHierarchy(const Layer* layer, gfx::Point mouse_location) { | 98 void PrintLayerHierarchy(const Layer* layer, gfx::Point mouse_location) { |
105 PrintLayerHierarchyImp(layer, 0, mouse_location); | 99 PrintLayerHierarchyImp(layer, 0, mouse_location); |
106 } | 100 } |
107 | 101 |
108 } // namespace ui | 102 } // namespace ui |
109 | 103 |
110 #endif // NDEBUG | 104 #endif // NDEBUG |
OLD | NEW |