|
17 | 17 | #define LOG_TAG "DisplayTopologyValidator" |
18 | 18 |
|
19 | 19 | #include <android-base/logging.h> |
| 20 | +#include <android-base/stringprintf.h> |
20 | 21 | #include <ftl/enum.h> |
21 | 22 | #include <input/DisplayTopologyGraph.h> |
| 23 | +#include <input/PrintTools.h> |
22 | 24 | #include <ui/LogicalDisplayId.h> |
23 | 25 |
|
24 | 26 | #include <algorithm> |
25 | 27 |
|
| 28 | +#define INDENT " " |
| 29 | + |
26 | 30 | namespace android { |
27 | 31 |
|
28 | 32 | namespace { |
| 33 | + |
29 | 34 | DisplayTopologyPosition getOppositePosition(DisplayTopologyPosition position) { |
30 | 35 | switch (position) { |
31 | 36 | case DisplayTopologyPosition::LEFT: |
@@ -95,11 +100,45 @@ bool validateDensities(const android::DisplayTopologyGraph& displayTopologyGraph |
95 | 100 | return true; |
96 | 101 | } |
97 | 102 |
|
| 103 | +std::string logicalDisplayIdToString(const ui::LogicalDisplayId& displayId) { |
| 104 | + return base::StringPrintf("displayId(%d)", displayId.val()); |
| 105 | +} |
| 106 | + |
| 107 | +std::string adjacentDisplayToString(const DisplayTopologyAdjacentDisplay& adjacentDisplay) { |
| 108 | + return adjacentDisplay.dump(); |
| 109 | +} |
| 110 | + |
| 111 | +std::string adjacentDisplayVectorToString( |
| 112 | + const std::vector<DisplayTopologyAdjacentDisplay>& adjacentDisplays) { |
| 113 | + return dumpVector(adjacentDisplays, adjacentDisplayToString); |
| 114 | +} |
| 115 | + |
98 | 116 | } // namespace |
99 | 117 |
|
| 118 | +std::string DisplayTopologyAdjacentDisplay::dump() const { |
| 119 | + std::string dump; |
| 120 | + dump += base::StringPrintf("DisplayTopologyAdjacentDisplay: {displayId: %d, position: %s, " |
| 121 | + "offsetDp: %f}", |
| 122 | + displayId.val(), ftl::enum_string(position).c_str(), offsetDp); |
| 123 | + return dump; |
| 124 | +} |
| 125 | + |
100 | 126 | bool DisplayTopologyGraph::isValid() const { |
101 | 127 | return validatePrimaryDisplay(*this) && validateTopologyGraph(*this) && |
102 | 128 | validateDensities(*this); |
103 | 129 | } |
104 | 130 |
|
| 131 | +std::string DisplayTopologyGraph::dump() const { |
| 132 | + std::string dump; |
| 133 | + dump += base::StringPrintf("PrimaryDisplayId: %d\n", primaryDisplayId.val()); |
| 134 | + dump += base::StringPrintf("TopologyGraph:\n"); |
| 135 | + dump += addLinePrefix(dumpMap(graph, logicalDisplayIdToString, adjacentDisplayVectorToString), |
| 136 | + INDENT); |
| 137 | + dump += "\n"; |
| 138 | + dump += base::StringPrintf("DisplaysDensity:\n"); |
| 139 | + dump += addLinePrefix(dumpMap(displaysDensity, logicalDisplayIdToString), INDENT); |
| 140 | + dump += "\n"; |
| 141 | + return dump; |
| 142 | +} |
| 143 | + |
105 | 144 | } // namespace android |
0 commit comments