Index: sky/sdk/lib/framework/fn2.dart |
diff --git a/sky/sdk/lib/framework/fn2.dart b/sky/sdk/lib/framework/fn2.dart |
index 427f58b47c82e416863c54e292ca106e3f27f14c..10b93c563bbfd0351f6aa6f04a38e9e0da3812a2 100644 |
--- a/sky/sdk/lib/framework/fn2.dart |
+++ b/sky/sdk/lib/framework/fn2.dart |
@@ -4,12 +4,13 @@ |
library fn; |
+import 'app.dart'; |
import 'dart:async'; |
import 'dart:collection'; |
import 'dart:mirrors'; |
import 'dart:sky' as sky; |
+import 'package:vector_math/vector_math.dart'; |
import 'reflect.dart' as reflect; |
-import 'app.dart'; |
import 'rendering/block.dart'; |
import 'rendering/box.dart'; |
import 'rendering/flex.dart'; |
@@ -395,6 +396,21 @@ class SizedBox extends OneChildRenderNodeWrapper { |
} |
} |
+class Transform extends OneChildRenderNodeWrapper { |
+ RenderTransform root; |
+ final Matrix4 transform; |
+ |
+ Transform({ this.transform, UINode child, Object key }) |
+ : super(child: child, key: key); |
+ |
+ RenderTransform createNode() => new RenderTransform(transform: transform); |
+ |
+ void syncRenderNode(Transform old) { |
+ super.syncRenderNode(old); |
+ root.transform = transform; |
+ } |
+} |
+ |
final List<UINode> _emptyList = new List<UINode>(); |
abstract class OneChildListRenderNodeWrapper extends RenderNodeWrapper { |
@@ -850,6 +866,7 @@ abstract class Component extends UINode { |
class Container extends Component { |
final UINode child; |
+ final Matrix4 transform; |
final EdgeDims margin; |
final BoxDecoration decoration; |
final sky.Size desiredSize; |
@@ -858,6 +875,7 @@ class Container extends Component { |
Container({ |
Object key, |
this.child, |
+ this.transform, |
this.margin, |
this.decoration, |
this.desiredSize, |
@@ -867,6 +885,9 @@ class Container extends Component { |
UINode build() { |
UINode current = child; |
+ if (transform != null) |
+ current = new Transform(transform: transform, child: current); |
+ |
if (padding != null) |
current = new Padding(padding: padding, child: current); |