static PassRefPtr<TypeBuilder::LayerTree::Layer> buildObjectForLayer(GraphicsLayer* graphicsLayer, int nodeId) { WebLayer* webLayer = graphicsLayer->platformLayer(); RefPtr<TypeBuilder::LayerTree::Layer> layerObject = TypeBuilder::LayerTree::Layer::create() .setLayerId(idForLayer(graphicsLayer)) .setOffsetX(webLayer->position().x) .setOffsetY(webLayer->position().y) .setWidth(webLayer->bounds().width) .setHeight(webLayer->bounds().height) .setPaintCount(graphicsLayer->paintCount()) .setDrawsContent(webLayer->drawsContent()); if (nodeId) layerObject->setBackendNodeId(nodeId); GraphicsLayer* parent = graphicsLayer->parent(); if (!parent) parent = graphicsLayer->replicatedLayer(); if (parent) layerObject->setParentLayerId(idForLayer(parent)); if (!graphicsLayer->contentsAreVisible()) layerObject->setInvisible(true); const TransformationMatrix& transform = graphicsLayer->transform(); if (!transform.isIdentity()) { TransformationMatrix::FloatMatrix4 flattenedMatrix; transform.toColumnMajorFloatArray(flattenedMatrix); RefPtr<TypeBuilder::Array<double> > transformArray = TypeBuilder::Array<double>::create(); for (size_t i = 0; i < WTF_ARRAY_LENGTH(flattenedMatrix); ++i) transformArray->addItem(flattenedMatrix[i]); layerObject->setTransform(transformArray); const FloatPoint3D& transformOrigin = graphicsLayer->transformOrigin(); // FIXME: rename these to setTransformOrigin* if (webLayer->bounds().width > 0) layerObject->setAnchorX(transformOrigin.x() / webLayer->bounds().width); else layerObject->setAnchorX(0.0); if (webLayer->bounds().height > 0) layerObject->setAnchorY(transformOrigin.y() / webLayer->bounds().height); else layerObject->setAnchorY(0.0); layerObject->setAnchorZ(transformOrigin.z()); } RefPtr<TypeBuilder::Array<TypeBuilder::LayerTree::ScrollRect> > scrollRects = buildScrollRectsForLayer(graphicsLayer); if (scrollRects) layerObject->setScrollRects(scrollRects.release()); return layerObject; }
void InspectorLayerTreeAgent::didPaint(LayoutObject*, const GraphicsLayer* graphicsLayer, GraphicsContext*, const LayoutRect& rect) { // Should only happen for FrameView paints when compositing is off. Consider different instrumentation method for that. if (!graphicsLayer) return; RefPtr<TypeBuilder::DOM::Rect> domRect = TypeBuilder::DOM::Rect::create() .setX(rect.x()) .setY(rect.y()) .setWidth(rect.width()) .setHeight(rect.height()); frontend()->layerPainted(idForLayer(graphicsLayer), domRect.release()); }
void InspectorLayerTreeAgent::didPaint(RenderObject* renderer, GraphicsContext*, const LayoutRect& rect) { RenderLayer* renderLayer = toRenderLayerModelObject(renderer)->layer(); CompositedLayerMapping* compositedLayerMapping = renderLayer->compositedLayerMapping(); // Should only happen for FrameView paints when compositing is off. Consider different instrumentation method for that. if (!compositedLayerMapping) return; GraphicsLayer* graphicsLayer = compositedLayerMapping->mainGraphicsLayer(); RefPtr<TypeBuilder::DOM::Rect> domRect = TypeBuilder::DOM::Rect::create() .setX(rect.x()) .setY(rect.y()) .setWidth(rect.width()) .setHeight(rect.height()); m_frontend->layerPainted(idForLayer(graphicsLayer), domRect.release()); }