OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/graphics/paint/Transform3DDisplayItem.h" | 5 #include "platform/graphics/paint/Transform3DDisplayItem.h" |
6 | 6 |
7 #include "platform/graphics/GraphicsContext.h" | 7 #include "platform/graphics/GraphicsContext.h" |
8 #include "platform/transforms/AffineTransform.h" | 8 #include "platform/transforms/AffineTransform.h" |
9 #include "public/platform/WebDisplayItemList.h" | 9 #include "public/platform/WebDisplayItemList.h" |
10 | 10 |
11 namespace blink { | 11 namespace blink { |
12 | 12 |
13 void BeginTransform3DDisplayItem::replay(GraphicsContext& context) const | 13 void BeginTransform3DDisplayItem::replay(GraphicsContext& context) const |
14 { | 14 { |
15 TransformationMatrix transform(m_transform); | 15 TransformationMatrix transform(m_transform); |
16 transform.applyTransformOrigin(m_transformOrigin); | 16 transform.applyTransformOrigin(m_transformOrigin); |
17 context.save(); | 17 context.save(); |
18 context.concatCTM(transform.toAffineTransform()); | 18 context.concatCTM(transform.toAffineTransform()); |
19 } | 19 } |
20 | 20 |
21 void BeginTransform3DDisplayItem::appendToWebDisplayItemList(const IntRect& visu
alRect, WebDisplayItemList* list) const | 21 void BeginTransform3DDisplayItem::appendToWebDisplayItemList(const IntRect& visu
alRect, WebDisplayItemList* list) const |
22 { | 22 { |
23 // TODO(jbroman): The compositor will need the transform origin separately. | 23 // TODO(jbroman): The compositor will need the transform origin separately. |
24 TransformationMatrix transform(m_transform); | 24 TransformationMatrix transform(m_transform); |
25 transform.applyTransformOrigin(m_transformOrigin); | 25 transform.applyTransformOrigin(m_transformOrigin); |
26 list->appendTransformItem(visualRect, TransformationMatrix::toSkMatrix44(tra
nsform)); | 26 list->appendTransformItem(TransformationMatrix::toSkMatrix44(transform)); |
27 } | 27 } |
28 | 28 |
29 #ifndef NDEBUG | 29 #ifndef NDEBUG |
30 void BeginTransform3DDisplayItem::dumpPropertiesAsDebugString(StringBuilder& str
ingBuilder) const | 30 void BeginTransform3DDisplayItem::dumpPropertiesAsDebugString(StringBuilder& str
ingBuilder) const |
31 { | 31 { |
32 PairedBeginDisplayItem::dumpPropertiesAsDebugString(stringBuilder); | 32 PairedBeginDisplayItem::dumpPropertiesAsDebugString(stringBuilder); |
33 TransformationMatrix::DecomposedType decomposition; | 33 TransformationMatrix::DecomposedType decomposition; |
34 if (m_transform.decompose(decomposition)) { | 34 if (m_transform.decompose(decomposition)) { |
35 stringBuilder.append(String::format( | 35 stringBuilder.append(String::format( |
36 ", translate: [%lf,%lf,%lf], scale: [%lf,%lf,%lf], skew: [%lf,%lf,%l
f], quaternion: [%lf,%lf,%lf,%lf], perspective: [%lf,%lf,%lf,%lf]", | 36 ", translate: [%lf,%lf,%lf], scale: [%lf,%lf,%lf], skew: [%lf,%lf,%l
f], quaternion: [%lf,%lf,%lf,%lf], perspective: [%lf,%lf,%lf,%lf]", |
37 decomposition.translateX, decomposition.translateY, decomposition.tr
anslateZ, | 37 decomposition.translateX, decomposition.translateY, decomposition.tr
anslateZ, |
38 decomposition.scaleX, decomposition.scaleY, decomposition.scaleZ, | 38 decomposition.scaleX, decomposition.scaleY, decomposition.scaleZ, |
39 decomposition.skewXY, decomposition.skewXZ, decomposition.skewYZ, | 39 decomposition.skewXY, decomposition.skewXZ, decomposition.skewYZ, |
40 decomposition.quaternionX, decomposition.quaternionY, decomposition.
quaternionZ, decomposition.quaternionW, | 40 decomposition.quaternionX, decomposition.quaternionY, decomposition.
quaternionZ, decomposition.quaternionW, |
41 decomposition.perspectiveX, decomposition.perspectiveY, decompositio
n.perspectiveZ, decomposition.perspectiveW)); | 41 decomposition.perspectiveX, decomposition.perspectiveY, decompositio
n.perspectiveZ, decomposition.perspectiveW)); |
42 } | 42 } |
43 stringBuilder.append(String::format(", transformOrigin: [%f,%f,%f]", m_trans
formOrigin.x(), m_transformOrigin.y(), m_transformOrigin.z())); | 43 stringBuilder.append(String::format(", transformOrigin: [%f,%f,%f]", m_trans
formOrigin.x(), m_transformOrigin.y(), m_transformOrigin.z())); |
44 } | 44 } |
45 #endif | 45 #endif |
46 | 46 |
47 void EndTransform3DDisplayItem::replay(GraphicsContext& context) const | 47 void EndTransform3DDisplayItem::replay(GraphicsContext& context) const |
48 { | 48 { |
49 context.restore(); | 49 context.restore(); |
50 } | 50 } |
51 | 51 |
52 void EndTransform3DDisplayItem::appendToWebDisplayItemList(const IntRect& visual
Rect, WebDisplayItemList* list) const | 52 void EndTransform3DDisplayItem::appendToWebDisplayItemList(const IntRect& visual
Rect, WebDisplayItemList* list) const |
53 { | 53 { |
54 list->appendEndTransformItem(visualRect); | 54 list->appendEndTransformItem(); |
55 } | 55 } |
56 | 56 |
57 } // namespace blink | 57 } // namespace blink |
OLD | NEW |