void GraphicsLayerChromium::updateLayerPreserves3D() { if (m_preserves3D && m_transformLayer.isNull()) { // Create the transform layer. m_transformLayer = WebLayer::create(); m_transformLayer.setPreserves3D(true); m_transformLayer.setAnimationDelegate(this); m_layer.transferAnimationsTo(&m_transformLayer); // Copy the position from this layer. updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); m_layer.setPosition(FloatPoint::zero()); m_layer.setAnchorPoint(FloatPoint(0.5f, 0.5f)); m_layer.setTransform(SkMatrix44()); // Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer. m_layer.setOpacity(1); m_layer.setContentsScale(contentsScale()); // Move this layer to be a child of the transform layer. if (!m_layer.parent().isNull()) m_layer.parent().replaceChild(m_layer, m_transformLayer); m_transformLayer.addChild(m_layer); updateChildList(); } else if (!m_preserves3D && !m_transformLayer.isNull()) { // Relace the transformLayer in the parent with this layer. m_layer.removeFromParent(); if (!m_transformLayer.parent().isNull()) m_transformLayer.parent().replaceChild(m_transformLayer, m_layer); m_layer.setAnimationDelegate(this); m_transformLayer.transferAnimationsTo(&m_layer); // Release the transform layer. m_transformLayer.setAnimationDelegate(0); m_transformLayer.reset(); updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateChildList(); } m_layer.setPreserves3D(m_preserves3D); primaryLayer().setOpacity(m_opacity); updateNames(); }
void GraphicsLayerChromium::updateLayerPreserves3D() { if (m_preserves3D && !m_transformLayer) { // Create the transform layer. m_transformLayer = LayerChromium::create(); m_transformLayer->setPreserves3D(true); m_transformLayer->setLayerAnimationDelegate(this); // Copy the position from this layer. updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); m_layer->setPosition(FloatPoint(m_size.width() / 2.0f, m_size.height() / 2.0f)); m_layer->setAnchorPoint(FloatPoint(0.5f, 0.5f)); TransformationMatrix identity; m_layer->setTransform(identity); // Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer. m_layer->setOpacity(1); m_layer->setContentsScale(contentsScale()); // Move this layer to be a child of the transform layer. if (m_layer->parent()) m_layer->parent()->replaceChild(m_layer.get(), m_transformLayer.get()); m_transformLayer->addChild(m_layer.get()); updateChildList(); } else if (!m_preserves3D && m_transformLayer) { // Relace the transformLayer in the parent with this layer. m_layer->removeFromParent(); if (m_transformLayer->parent()) m_transformLayer->parent()->replaceChild(m_transformLayer.get(), m_layer.get()); // Release the transform layer. m_transformLayer->setLayerAnimationDelegate(0); m_transformLayer = 0; updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateChildList(); } m_layer->setPreserves3D(m_preserves3D); primaryLayer()->setOpacity(m_opacity); updateNames(); }
void GraphicsLayerBlackBerry::updateLayerPreserves3D() { if (m_preserves3D && !m_transformLayer) { // Create the transform layer. m_transformLayer = LayerWebKitThread::create(LayerData::TransformLayer, this); // Copy the position from this layer. updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateAnimations(); m_layer->setPosition(FloatPoint(m_size.width() / 2.0f, m_size.height() / 2.0f)); m_layer->setAnchorPoint(FloatPoint(0.5f, 0.5f)); TransformationMatrix identity; m_layer->setTransform(identity); // Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer. m_layer->setOpacity(1); // Move this layer to be a child of the transform layer. if (m_layer->superlayer()) m_layer->superlayer()->replaceSublayer(m_layer.get(), m_transformLayer.get()); m_transformLayer->addSublayer(m_layer.get()); m_transformLayer->setPreserves3D(true); m_layer->setPreserves3D(true); updateSublayerList(); } else if (!m_preserves3D && m_transformLayer) { // Relace the transformLayer in the parent with this layer. m_layer->removeFromSuperlayer(); if (m_transformLayer->superlayer()) m_transformLayer->superlayer()->replaceSublayer(m_transformLayer.get(), m_layer.get()); // Release the transform layer. m_transformLayer = 0; updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateAnimations(); m_layer->setPreserves3D(false); updateSublayerList(); } updateOpacityOnLayer(); }
void GraphicsLayerChromium::updateLayerPreserves3D() { if (m_preserves3D && !m_transformLayer) { m_transformLayer = adoptPtr(Platform::current()->compositorSupport()->createLayer()); m_transformLayer->setPreserves3D(true); m_transformLayer->setAnimationDelegate(this); m_layer->layer()->transferAnimationsTo(m_transformLayer.get()); // Copy the position from this layer. updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); m_layer->layer()->setPosition(FloatPoint::zero()); m_layer->layer()->setAnchorPoint(FloatPoint(0.5f, 0.5f)); m_layer->layer()->setTransform(SkMatrix44()); // Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer. m_layer->layer()->setOpacity(1); // Move this layer to be a child of the transform layer. if (parent()) parent()->platformLayer()->replaceChild(m_layer->layer(), m_transformLayer.get()); m_transformLayer->addChild(m_layer->layer()); updateChildList(); } else if (!m_preserves3D && m_transformLayer) { // Replace the transformLayer in the parent with this layer. m_layer->layer()->removeFromParent(); if (parent()) parent()->platformLayer()->replaceChild(m_transformLayer.get(), m_layer->layer()); m_layer->layer()->setAnimationDelegate(this); m_transformLayer->transferAnimationsTo(m_layer->layer()); // Release the transform layer. m_transformLayer->setAnimationDelegate(0); m_transformLayer.clear(); updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateChildList(); } m_layer->layer()->setPreserves3D(m_preserves3D); platformLayer()->setOpacity(m_opacity); updateNames(); }
void GraphicsLayerCACF::updateLayerPreserves3D() { if (m_preserves3D && !m_transformLayer) { // Create the transform layer. m_transformLayer = WebLayer::create(WKCACFLayer::TransformLayer, this); #ifndef NDEBUG m_transformLayer->setName(String().format("Transform Layer CATransformLayer(%p) GraphicsLayer(%p)", m_transformLayer.get(), this)); #endif // Copy the position from this layer. updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); CGPoint point = CGPointMake(m_size.width() / 2.0f, m_size.height() / 2.0f); m_layer->setPosition(point); m_layer->setAnchorPoint(CGPointMake(0.5f, 0.5f)); m_layer->setTransform(wkqcCATransform3DIdentity()); // Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer. m_layer->setOpacity(1); // Move this layer to be a child of the transform layer. if (m_layer->superlayer()) m_layer->superlayer()->replaceSublayer(m_layer.get(), m_transformLayer.get()); m_transformLayer->addSublayer(m_layer.get()); updateSublayerList(); } else if (!m_preserves3D && m_transformLayer) { // Relace the transformLayer in the parent with this layer. m_layer->removeFromSuperlayer(); m_transformLayer->superlayer()->replaceSublayer(m_transformLayer.get(), m_layer.get()); // Release the transform layer. m_transformLayer = 0; updateLayerPosition(); updateLayerSize(); updateAnchorPoint(); updateTransform(); updateChildrenTransform(); updateSublayerList(); } updateOpacityOnLayer(); }
void GraphicsLayerChromium::setSize(const FloatSize& size) { if (size == m_size) return; GraphicsLayer::setSize(size); updateLayerSize(); }
void GraphicsLayerBlackBerry::setSize(const FloatSize& size) { if (size == m_size) return; GraphicsLayer::setSize(size); updateLayerSize(); }
void GraphicsLayerChromium::setSize(const FloatSize& size) { // We are receiving negative sizes here that cause assertions to fail in the compositor. Clamp them to 0 to // avoid those assertions. // FIXME: This should be an ASSERT instead, as negative sizes should not exist in WebCore. FloatSize clampedSize = size; if (clampedSize.width() < 0 || clampedSize.height() < 0) clampedSize = FloatSize(); if (clampedSize == m_size) return; GraphicsLayer::setSize(clampedSize); updateLayerSize(); }
void ContentLayerChromium::paintContentsIfDirty(const IntRect& targetSurfaceRect) { ASSERT(drawsContent()); ASSERT(layerRenderer()); updateLayerSize(layerBounds().size()); IntRect layerRect = visibleLayerRect(targetSurfaceRect); if (layerRect.isEmpty()) return; IntRect dirty = enclosingIntRect(m_dirtyRect); dirty.intersect(layerBounds()); m_tiler->invalidateRect(dirty); m_tiler->prepareToUpdate(layerRect); m_dirtyRect = FloatRect(); }
void ContentLayerChromium::setTilingOption(TilingOption option) { m_tilingOption = option; updateLayerSize(bounds()); }