Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: sky/tests/resources/display_list.dart

Issue 1190123003: Decouple Canvas from DisplayList and map Picture and PictureRecorder more directly to their Skia co… (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rework the API a bit Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 import 'dart:async'; 2 import 'dart:async';
3 import 'dart:sky' as sky; 3 import 'dart:sky' as sky;
4 import "dart:sky.internals" as internals; 4 import "dart:sky.internals" as internals;
5 import 'dart:typed_data';
5 6
6 import 'package:sky/widgets/basic.dart'; 7 import 'package:sky/widgets/basic.dart';
7 import 'package:sky/rendering/box.dart'; 8 import 'package:sky/rendering/box.dart';
8 import 'package:sky/rendering/object.dart'; 9 import 'package:sky/rendering/object.dart';
9 10
10 typedef void Logger (String s); 11 typedef void Logger (String s);
11 12
12 class TestDisplayList extends RenderObjectDisplayList { 13 class TestPictureRecorder extends sky.PictureRecorder {
13 TestDisplayList(double width, double height, this.logger, { this.indent: '' }) : 14 TestPictureRecorder(this.logger, { this.indent: '' }) {
14 this.width = width, 15 log("TestPictureRecorder() constructor");
15 this.height = height, 16 }
16 super(width, height) { 17 final String indent;
17 log("TestDisplayList() constructor: $width x $height"); 18 Logger logger;
19
20 void log(String s) {
21 logger("${indent} ${s}");
22 }
23
24 sky.Canvas beginRecording(double width, double height) {
25 log("beginRecording($width, $height)");
26
27 var canvas = super.beginRecording(width, height);
28
29 return new TestCanvas(width, height, this.logger, indent: this.indent);
abarth-chromium 2015/06/20 00:50:29 This function then becomes: return new TestCanvas
30 }
31 }
32
33 class TestCanvas extends sky.Canvas {
34 TestCanvas(this.width, this.height, this.logger, { this.indent: '' }) {
abarth-chromium 2015/06/20 00:50:29 I'd call |super| here.
35 log("TestCanvas() constructor: $width x $height");
18 } 36 }
19 37
20 final String indent; 38 final String indent;
21 final double width; 39 final double width;
22 final double height; 40 final double height;
23 41
24 Logger logger; 42 Logger logger;
25 void log(String s) { 43 void log(String s) {
26 logger("${indent} ${s}"); 44 logger("${indent} ${s}");
27 } 45 }
(...skipping 19 matching lines...) Expand all
47 } 65 }
48 66
49 void rotate(double radians) { 67 void rotate(double radians) {
50 log("rotate($radians)"); 68 log("rotate($radians)");
51 } 69 }
52 70
53 void skew(double sx, double sy) { 71 void skew(double sx, double sy) {
54 log("skew($sx, $sy)"); 72 log("skew($sx, $sy)");
55 } 73 }
56 74
57 void concat(List<double> matrix9) { 75 void concat(Float32List matrix4) {
58 log("concat($matrix9)"); 76 log("concat($matrix4)");
59 } 77 }
60 78
61 void clipRect(Rect rect) { 79 void clipRect(Rect rect) {
62 log("clipRect($rect)"); 80 log("clipRect($rect)");
63 } 81 }
64 82
65 void clipRRect(sky.RRect rrect) { 83 void clipRRect(sky.RRect rrect) {
66 log("clipRRect()"); 84 log("clipRRect()");
67 } 85 }
68 86
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 void drawPath(Path path, Paint paint) { 119 void drawPath(Path path, Paint paint) {
102 log("drawPath($path, $paint)"); 120 log("drawPath($path, $paint)");
103 } 121 }
104 122
105 void drawImage(sky.Image image, double x, double y, Paint paint) { 123 void drawImage(sky.Image image, double x, double y, Paint paint) {
106 log("drawImage($image, $x, $y, $paint)"); 124 log("drawImage($image, $x, $y, $paint)");
107 } 125 }
108 126
109 void paintChild(RenderObject child, Point position) { 127 void paintChild(RenderObject child, Point position) {
110 log("paintChild ${child.runtimeType} at $position"); 128 log("paintChild ${child.runtimeType} at $position");
111 child.paint(new TestDisplayList(width, height, logger, indent: "$indent |") ); 129 child.paint(new TestCanvas(width, height, logger, indent: "$indent |"));
112 } 130 }
113 } 131 }
114 132
115 class TestRenderView extends RenderView { 133 class TestRenderView extends RenderView {
116 134
117 TestRenderView([ RenderBox child = null ]) : super(child: child) { 135 TestRenderView([ RenderBox child = null ]) : super(child: child) {
118 print("TestRenderView enabled"); 136 print("TestRenderView enabled");
119 attach(); 137 attach();
120 rootConstraints = new ViewConstraints(width: 800.0, height: 600.0); // arbit rary figures 138 rootConstraints = new ViewConstraints(width: 800.0, height: 600.0); // arbit rary figures
121 scheduleInitialLayout(); 139 scheduleInitialLayout();
122 syncCheckFrame(); 140 syncCheckFrame();
123 } 141 }
124 142
125 int frame = 0; 143 int frame = 0;
126 144
127 String lastPaint = ''; 145 String lastPaint = '';
128 void log(String s) { 146 void log(String s) {
129 lastPaint += "\n$s"; 147 lastPaint += "\n$s";
130 } 148 }
131 149
132 void paintFrame() { 150 void paintFrame() {
133 RenderObject.debugDoingPaint = true; 151 RenderObject.debugDoingPaint = true;
134 frame += 1; 152 frame += 1;
135 lastPaint = ''; 153 lastPaint = '';
136 log("PAINT FOR FRAME #${frame} --------------------------------------------- -"); 154 log("PAINT FOR FRAME #${frame} --------------------------------------------- -");
137 var canvas = new TestDisplayList(rootConstraints.width, rootConstraints.heig ht, log, indent: "${frame} |"); 155 var recorder = new TestPictureRecorder(log, indent: "${frame} |");
156 var canvas = recorder.beginRecording(rootConstraints.width, rootConstraints. height);
138 paint(canvas); 157 paint(canvas);
158 recorder.endRecording();
139 log("----------------------------------------------------------------------- -"); 159 log("----------------------------------------------------------------------- -");
140 RenderObject.debugDoingPaint = false; 160 RenderObject.debugDoingPaint = false;
141 } 161 }
142 162
143 // TEST API: 163 // TEST API:
144 164
145 void syncCheckFrame() { 165 void syncCheckFrame() {
146 RenderObject.flushLayout(); 166 RenderObject.flushLayout();
147 paintFrame(); 167 paintFrame();
148 print(lastPaint); // TODO(ianh): figure out how to make this fit the unit te sting framework better 168 print(lastPaint); // TODO(ianh): figure out how to make this fit the unit te sting framework better
(...skipping 24 matching lines...) Expand all
173 193
174 Future test(Function builder) { 194 Future test(Function builder) {
175 runApp(new TestApp(builder: builder), renderViewOverride: renderView); 195 runApp(new TestApp(builder: builder), renderViewOverride: renderView);
176 return renderView.checkFrame(); 196 return renderView.checkFrame();
177 } 197 }
178 198
179 void endTest() { 199 void endTest() {
180 renderView.endTest(); 200 renderView.endTest();
181 } 201 }
182 } 202 }
OLDNEW
« sky/sdk/lib/rendering/object.dart ('K') | « sky/sdk/lib/widgets/scaffold.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698