OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 return map; | 72 return map; |
73 } | 73 } |
74 | 74 |
75 PassOwnPtr<GraphicsLayer> GraphicsLayer::create(GraphicsLayerFactory* factory, G
raphicsLayerClient* client) | 75 PassOwnPtr<GraphicsLayer> GraphicsLayer::create(GraphicsLayerFactory* factory, G
raphicsLayerClient* client) |
76 { | 76 { |
77 return factory->createGraphicsLayer(client); | 77 return factory->createGraphicsLayer(client); |
78 } | 78 } |
79 | 79 |
80 GraphicsLayer::GraphicsLayer(GraphicsLayerClient* client) | 80 GraphicsLayer::GraphicsLayer(GraphicsLayerClient* client) |
81 : m_client(client) | 81 : m_client(client) |
82 , m_anchorPoint(0.5f, 0.5f, 0) | |
83 , m_backgroundColor(Color::transparent) | 82 , m_backgroundColor(Color::transparent) |
84 , m_opacity(1) | 83 , m_opacity(1) |
85 , m_zPosition(0) | 84 , m_zPosition(0) |
86 , m_blendMode(blink::WebBlendModeNormal) | 85 , m_blendMode(blink::WebBlendModeNormal) |
| 86 , m_hasTransformOrigin(false) |
87 , m_contentsOpaque(false) | 87 , m_contentsOpaque(false) |
88 , m_shouldFlattenTransform(true) | 88 , m_shouldFlattenTransform(true) |
89 , m_backfaceVisibility(true) | 89 , m_backfaceVisibility(true) |
90 , m_masksToBounds(false) | 90 , m_masksToBounds(false) |
91 , m_drawsContent(false) | 91 , m_drawsContent(false) |
92 , m_contentsVisible(true) | 92 , m_contentsVisible(true) |
93 , m_isRootForIsolatedGroup(false) | 93 , m_isRootForIsolatedGroup(false) |
94 , m_hasScrollParent(false) | 94 , m_hasScrollParent(false) |
95 , m_hasClipParent(false) | 95 , m_hasClipParent(false) |
96 , m_paintingPhase(GraphicsLayerPaintAllWithOverflowClip) | 96 , m_paintingPhase(GraphicsLayerPaintAllWithOverflowClip) |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 } | 443 } |
444 | 444 |
445 void GraphicsLayer::setupContentsLayer(WebLayer* contentsLayer) | 445 void GraphicsLayer::setupContentsLayer(WebLayer* contentsLayer) |
446 { | 446 { |
447 ASSERT(contentsLayer); | 447 ASSERT(contentsLayer); |
448 m_contentsLayer = contentsLayer; | 448 m_contentsLayer = contentsLayer; |
449 m_contentsLayerId = m_contentsLayer->id(); | 449 m_contentsLayerId = m_contentsLayer->id(); |
450 | 450 |
451 m_contentsLayer->setWebLayerClient(this); | 451 m_contentsLayer->setWebLayerClient(this); |
452 m_contentsLayer->setTransformOrigin(FloatPoint3D()); | 452 m_contentsLayer->setTransformOrigin(FloatPoint3D()); |
453 m_contentsLayer->setAnchorPoint(FloatPoint(0, 0)); | |
454 m_contentsLayer->setUseParentBackfaceVisibility(true); | 453 m_contentsLayer->setUseParentBackfaceVisibility(true); |
455 | 454 |
456 // It is necessary to call setDrawsContent as soon as we receive the new con
tentsLayer, for | 455 // It is necessary to call setDrawsContent as soon as we receive the new con
tentsLayer, for |
457 // the correctness of early exit conditions in setDrawsContent() and setCont
entsVisible(). | 456 // the correctness of early exit conditions in setDrawsContent() and setCont
entsVisible(). |
458 m_contentsLayer->setDrawsContent(m_contentsVisible); | 457 m_contentsLayer->setDrawsContent(m_contentsVisible); |
459 | 458 |
460 // Insert the content layer first. Video elements require this, because they
have | 459 // Insert the content layer first. Video elements require this, because they
have |
461 // shadow content that must display in front of the video. | 460 // shadow content that must display in front of the video. |
462 m_layer->layer()->insertChild(m_contentsLayer, 0); | 461 m_layer->layer()->insertChild(m_contentsLayer, 0); |
463 WebLayer* borderWebLayer = m_contentsClippingMaskLayer ? m_contentsClippingM
askLayer->platformLayer() : 0; | 462 WebLayer* borderWebLayer = m_contentsClippingMaskLayer ? m_contentsClippingM
askLayer->platformLayer() : 0; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 if (m_position != FloatPoint()) { | 556 if (m_position != FloatPoint()) { |
558 writeIndent(ts, indent + 1); | 557 writeIndent(ts, indent + 1); |
559 ts << "(position " << m_position.x() << " " << m_position.y() << ")\n"; | 558 ts << "(position " << m_position.x() << " " << m_position.y() << ")\n"; |
560 } | 559 } |
561 | 560 |
562 if (m_boundsOrigin != FloatPoint()) { | 561 if (m_boundsOrigin != FloatPoint()) { |
563 writeIndent(ts, indent + 1); | 562 writeIndent(ts, indent + 1); |
564 ts << "(bounds origin " << m_boundsOrigin.x() << " " << m_boundsOrigin.y
() << ")\n"; | 563 ts << "(bounds origin " << m_boundsOrigin.x() << " " << m_boundsOrigin.y
() << ")\n"; |
565 } | 564 } |
566 | 565 |
567 if (m_anchorPoint != FloatPoint3D(0.5f, 0.5f, 0)) { | 566 if (m_hasTransformOrigin && m_transformOrigin != FloatPoint3D(m_size.width()
* 0.5f, m_size.height() * 0.5f, 0)) { |
568 writeIndent(ts, indent + 1); | |
569 ts << "(anchor " << m_anchorPoint.x() << " " << m_anchorPoint.y() << ")\
n"; | |
570 writeIndent(ts, indent + 1); | 567 writeIndent(ts, indent + 1); |
571 ts << "(transformOrigin " << m_transformOrigin.x() << " " << m_transform
Origin.y() << ")\n"; | 568 ts << "(transformOrigin " << m_transformOrigin.x() << " " << m_transform
Origin.y() << ")\n"; |
572 } | 569 } |
573 | 570 |
574 if (m_size != IntSize()) { | 571 if (m_size != IntSize()) { |
575 writeIndent(ts, indent + 1); | 572 writeIndent(ts, indent + 1); |
576 ts << "(bounds " << m_size.width() << " " << m_size.height() << ")\n"; | 573 ts << "(bounds " << m_size.width() << " " << m_size.height() << ")\n"; |
577 } | 574 } |
578 | 575 |
579 if (m_opacity != 1) { | 576 if (m_opacity != 1) { |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
800 { | 797 { |
801 m_debugInfo.setOwnerNodeId(nodeId); | 798 m_debugInfo.setOwnerNodeId(nodeId); |
802 } | 799 } |
803 | 800 |
804 void GraphicsLayer::setPosition(const FloatPoint& point) | 801 void GraphicsLayer::setPosition(const FloatPoint& point) |
805 { | 802 { |
806 m_position = point; | 803 m_position = point; |
807 platformLayer()->setPosition(m_position); | 804 platformLayer()->setPosition(m_position); |
808 } | 805 } |
809 | 806 |
810 void GraphicsLayer::setAnchorPoint(const FloatPoint3D& point) | |
811 { | |
812 m_anchorPoint = point; | |
813 platformLayer()->setAnchorPoint(FloatPoint(m_anchorPoint.x(), m_anchorPoint.
y())); | |
814 platformLayer()->setAnchorPointZ(m_anchorPoint.z()); | |
815 } | |
816 | |
817 void GraphicsLayer::setSize(const FloatSize& size) | 807 void GraphicsLayer::setSize(const FloatSize& size) |
818 { | 808 { |
819 // We are receiving negative sizes here that cause assertions to fail in the
compositor. Clamp them to 0 to | 809 // We are receiving negative sizes here that cause assertions to fail in the
compositor. Clamp them to 0 to |
820 // avoid those assertions. | 810 // avoid those assertions. |
821 // FIXME: This should be an ASSERT instead, as negative sizes should not exi
st in WebCore. | 811 // FIXME: This should be an ASSERT instead, as negative sizes should not exi
st in WebCore. |
822 FloatSize clampedSize = size; | 812 FloatSize clampedSize = size; |
823 if (clampedSize.width() < 0 || clampedSize.height() < 0) | 813 if (clampedSize.width() < 0 || clampedSize.height() < 0) |
824 clampedSize = FloatSize(); | 814 clampedSize = FloatSize(); |
825 | 815 |
826 if (clampedSize == m_size) | 816 if (clampedSize == m_size) |
827 return; | 817 return; |
828 | 818 |
829 m_size = clampedSize; | 819 m_size = clampedSize; |
830 | 820 |
831 m_layer->layer()->setBounds(flooredIntSize(m_size)); | 821 m_layer->layer()->setBounds(flooredIntSize(m_size)); |
832 // Note that we don't resize m_contentsLayer. It's up the caller to do that. | 822 // Note that we don't resize m_contentsLayer. It's up the caller to do that. |
833 } | 823 } |
834 | 824 |
835 void GraphicsLayer::setTransform(const TransformationMatrix& transform) | 825 void GraphicsLayer::setTransform(const TransformationMatrix& transform) |
836 { | 826 { |
837 m_transform = transform; | 827 m_transform = transform; |
838 platformLayer()->setTransform(TransformationMatrix::toSkMatrix44(m_transform
)); | 828 platformLayer()->setTransform(TransformationMatrix::toSkMatrix44(m_transform
)); |
839 } | 829 } |
840 | 830 |
841 void GraphicsLayer::setTransformOrigin(const FloatPoint3D& transformOrigin) | 831 void GraphicsLayer::setTransformOrigin(const FloatPoint3D& transformOrigin) |
842 { | 832 { |
| 833 m_hasTransformOrigin = true; |
843 m_transformOrigin = transformOrigin; | 834 m_transformOrigin = transformOrigin; |
844 platformLayer()->setTransformOrigin(transformOrigin); | 835 platformLayer()->setTransformOrigin(transformOrigin); |
845 } | 836 } |
846 | 837 |
847 void GraphicsLayer::setShouldFlattenTransform(bool shouldFlatten) | 838 void GraphicsLayer::setShouldFlattenTransform(bool shouldFlatten) |
848 { | 839 { |
849 if (shouldFlatten == m_shouldFlattenTransform) | 840 if (shouldFlatten == m_shouldFlattenTransform) |
850 return; | 841 return; |
851 | 842 |
852 m_shouldFlattenTransform = shouldFlatten; | 843 m_shouldFlattenTransform = shouldFlatten; |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 #ifndef NDEBUG | 1231 #ifndef NDEBUG |
1241 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) | 1232 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) |
1242 { | 1233 { |
1243 if (!layer) | 1234 if (!layer) |
1244 return; | 1235 return; |
1245 | 1236 |
1246 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); | 1237 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); |
1247 fprintf(stderr, "%s\n", output.utf8().data()); | 1238 fprintf(stderr, "%s\n", output.utf8().data()); |
1248 } | 1239 } |
1249 #endif | 1240 #endif |
OLD | NEW |