void LayerTreeRenderer::setLayerState(CoordinatedLayerID id, const CoordinatedLayerInfo& layerInfo) { ASSERT(m_rootLayerID != InvalidCoordinatedLayerID); GraphicsLayer* layer = layerByID(id); layer->setReplicatedByLayer(getLayerByIDIfExists(layerInfo.replica)); layer->setMaskLayer(getLayerByIDIfExists(layerInfo.mask)); layer->setAnchorPoint(layerInfo.anchorPoint); layer->setPosition(layerInfo.pos); layer->setSize(layerInfo.size); layer->setTransform(layerInfo.transform); layer->setChildrenTransform(layerInfo.childrenTransform); layer->setBackfaceVisibility(layerInfo.backfaceVisible); layer->setContentsOpaque(layerInfo.contentsOpaque); layer->setContentsRect(layerInfo.contentsRect); layer->setContentsToSolidColor(layerInfo.solidColor); layer->setDrawsContent(layerInfo.drawsContent); layer->setContentsVisible(layerInfo.contentsVisible); toGraphicsLayerTextureMapper(layer)->setFixedToViewport(layerInfo.fixedToViewport); if (layerInfo.fixedToViewport) m_fixedLayers.add(id, layer); else m_fixedLayers.remove(id); assignImageBackingToLayer(layer, layerInfo.imageID); prepareContentBackingStore(layer); // Never make the root layer clip. layer->setMasksToBounds(layerInfo.isRootLayer ? false : layerInfo.masksToBounds); layer->setOpacity(layerInfo.opacity); layer->setPreserves3D(layerInfo.preserves3D); }
void LayerTreeRenderer::setLayerState(WebLayerID id, const WebLayerInfo& layerInfo) { ensureLayer(id); LayerMap::iterator it = m_layers.find(id); ASSERT(it != m_layers.end()); GraphicsLayer* layer = it->second; layer->setReplicatedByLayer(layerByID(layerInfo.replica)); layer->setMaskLayer(layerByID(layerInfo.mask)); layer->setPosition(layerInfo.pos); layer->setSize(layerInfo.size); layer->setTransform(layerInfo.transform); layer->setAnchorPoint(layerInfo.anchorPoint); layer->setChildrenTransform(layerInfo.childrenTransform); layer->setBackfaceVisibility(layerInfo.backfaceVisible); layer->setContentsOpaque(layerInfo.contentsOpaque); layer->setContentsRect(layerInfo.contentsRect); layer->setDrawsContent(layerInfo.drawsContent); layer->setContentsVisible(layerInfo.contentsVisible); toGraphicsLayerTextureMapper(layer)->setFixedToViewport(layerInfo.fixedToViewport); if (layerInfo.fixedToViewport) m_fixedLayers.add(id, layer); else m_fixedLayers.remove(id); assignImageToLayer(layer, layerInfo.imageBackingStoreID); // Never make the root layer clip. layer->setMasksToBounds(layerInfo.isRootLayer ? false : layerInfo.masksToBounds); layer->setOpacity(layerInfo.opacity); layer->setPreserves3D(layerInfo.preserves3D); if (layerInfo.isRootLayer && m_rootLayerID != id) setRootLayerID(id); }
void LayerTreeHostProxy::syncLayerParameters(const WebLayerInfo& layerInfo) { WebLayerID id = layerInfo.id; ensureLayer(id); LayerMap::iterator it = m_layers.find(id); GraphicsLayer* layer = it->second; layer->setName(layerInfo.name); layer->setReplicatedByLayer(layerByID(layerInfo.replica)); layer->setMaskLayer(layerByID(layerInfo.mask)); layer->setPosition(layerInfo.pos); layer->setSize(layerInfo.size); layer->setTransform(layerInfo.transform); layer->setAnchorPoint(layerInfo.anchorPoint); layer->setChildrenTransform(layerInfo.childrenTransform); layer->setBackfaceVisibility(layerInfo.backfaceVisible); layer->setContentsOpaque(layerInfo.contentsOpaque); layer->setContentsRect(layerInfo.contentsRect); layer->setDrawsContent(layerInfo.drawsContent); if (layerInfo.imageIsUpdated) assignImageToLayer(layer, layerInfo.imageBackingStoreID); // Never make the root layer clip. layer->setMasksToBounds(layerInfo.isRootLayer ? false : layerInfo.masksToBounds); layer->setOpacity(layerInfo.opacity); layer->setPreserves3D(layerInfo.preserves3D); Vector<GraphicsLayer*> children; for (size_t i = 0; i < layerInfo.children.size(); ++i) { WebLayerID childID = layerInfo.children[i]; GraphicsLayer* child = layerByID(childID); if (!child) { child = createLayer(childID).leakPtr(); m_layers.add(childID, child); } children.append(child); } layer->setChildren(children); for (size_t i = 0; i < layerInfo.animations.size(); ++i) { const WebKit::WebLayerAnimation anim = layerInfo.animations[i]; switch (anim.operation) { case WebKit::WebLayerAnimation::AddAnimation: { const IntSize boxSize = anim.boxSize; double offset = WTF::currentTime() - anim.startTime; layer->addAnimation(anim.keyframeList, boxSize, anim.animation.get(), anim.name, offset); break; } case WebKit::WebLayerAnimation::RemoveAnimation: layer->removeAnimation(anim.name); break; case WebKit::WebLayerAnimation::PauseAnimation: double offset = WTF::currentTime() - anim.startTime; layer->pauseAnimation(anim.name, offset); break; } } if (layerInfo.isRootLayer && m_rootLayerID != id) setRootLayerID(id); }
void CoordinatedGraphicsScene::setLayerState(CoordinatedLayerID id, const CoordinatedGraphicsLayerState& layerState) { ASSERT(m_rootLayerID != InvalidCoordinatedLayerID); GraphicsLayer* layer = layerByID(id); if (layerState.positionChanged) layer->setPosition(layerState.pos); if (layerState.anchorPointChanged) layer->setAnchorPoint(layerState.anchorPoint); if (layerState.sizeChanged) layer->setSize(layerState.size); if (layerState.transformChanged) layer->setTransform(layerState.transform); if (layerState.childrenTransformChanged) layer->setChildrenTransform(layerState.childrenTransform); if (layerState.contentsRectChanged) layer->setContentsRect(layerState.contentsRect); if (layerState.opacityChanged) layer->setOpacity(layerState.opacity); if (layerState.solidColorChanged) layer->setContentsToSolidColor(layerState.solidColor); if (layerState.debugBorderColorChanged || layerState.debugBorderWidthChanged) layer->setDebugBorder(layerState.debugBorderColor, layerState.debugBorderWidth); if (layerState.replicaChanged) layer->setReplicatedByLayer(getLayerByIDIfExists(layerState.replica)); if (layerState.maskChanged) layer->setMaskLayer(getLayerByIDIfExists(layerState.mask)); if (layerState.imageChanged) assignImageBackingToLayer(layer, layerState.imageID); if (layerState.flagsChanged) { layer->setContentsOpaque(layerState.contentsOpaque); layer->setDrawsContent(layerState.drawsContent); layer->setContentsVisible(layerState.contentsVisible); layer->setBackfaceVisibility(layerState.backfaceVisible); // Never clip the root layer. layer->setMasksToBounds(id == m_rootLayerID ? false : layerState.masksToBounds); layer->setPreserves3D(layerState.preserves3D); bool fixedToViewportChanged = toGraphicsLayerTextureMapper(layer)->fixedToViewport() != layerState.fixedToViewport; toGraphicsLayerTextureMapper(layer)->setFixedToViewport(layerState.fixedToViewport); if (fixedToViewportChanged) { if (layerState.fixedToViewport) m_fixedLayers.add(id, layer); else m_fixedLayers.remove(id); } layer->setShowDebugBorder(layerState.showDebugBorders); layer->setShowRepaintCounter(layerState.showRepaintCounter); toGraphicsLayerTextureMapper(layer)->setIsScrollable(layerState.isScrollable); } if (layerState.committedScrollOffsetChanged) toGraphicsLayerTextureMapper(layer)->didCommitScrollOffset(layerState.committedScrollOffset); prepareContentBackingStore(layer); // Apply Operations. setLayerChildrenIfNeeded(layer, layerState); createTilesIfNeeded(layer, layerState); removeTilesIfNeeded(layer, layerState); updateTilesIfNeeded(layer, layerState); #if ENABLE(CSS_FILTERS) setLayerFiltersIfNeeded(layer, layerState); #endif setLayerAnimationsIfNeeded(layer, layerState); #if USE(GRAPHICS_SURFACE) syncCanvasIfNeeded(layer, layerState); #endif setLayerRepaintCountIfNeeded(layer, layerState); }