diff options
Diffstat (limited to 'cc/layer_impl.cc')
-rw-r--r-- | cc/layer_impl.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/cc/layer_impl.cc b/cc/layer_impl.cc index fa68613..c9615dc 100644 --- a/cc/layer_impl.cc +++ b/cc/layer_impl.cc @@ -6,6 +6,7 @@ #include "base/debug/trace_event.h" #include "base/stringprintf.h" +#include "base/values.h" #include "cc/debug_border_draw_quad.h" #include "cc/debug_colors.h" #include "cc/layer_tree_host_impl.h" @@ -342,6 +343,41 @@ void LayerImpl::dumpLayer(std::string* str, int indent) const m_children[i]->dumpLayer(str, indent+1); } +base::DictionaryValue* LayerImpl::layerTreeAsJson() const +{ + base::ListValue* list; + base::DictionaryValue* result = new base::DictionaryValue; + result->SetString("LayerType", layerTypeAsString()); + + list = new base::ListValue; + list->AppendInteger(bounds().width()); + list->AppendInteger(bounds().height()); + result->Set("Bounds", list); + + list = new base::ListValue; + list->AppendDouble(m_position.x()); + list->AppendDouble(m_position.y()); + result->Set("Position", list); + + const gfx::Transform& gfxTransform = m_drawProperties.target_space_transform; + double transform[16]; + gfxTransform.matrix().asColMajord(transform); + list = new base::ListValue; + for (int i = 0; i < 16; ++i) + list->AppendDouble(transform[i]); + result->Set("DrawTransform", list); + + result->SetBoolean("DrawsContent", m_drawsContent); + result->SetDouble("Opacity", opacity()); + + list = new base::ListValue; + for (size_t i = 0; i < m_children.size(); ++i) + list->Append(m_children[i]->layerTreeAsJson()); + result->Set("Children", list); + + return result; +} + void LayerImpl::setStackingOrderChanged(bool stackingOrderChanged) { // We don't need to store this flag; we only need to track that the change occurred. |