From 36c62edffbcf4e437ed459135180e2464fd1108a Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Wed, 2 Sep 2015 22:22:32 -0700 Subject: [PATCH] Remove all clients of sky.view.picture Everyone uses sky.view.scene now. This patch also cleans up the raw examples and makes them follow a consistent pattern. --- examples/raw/baseline.dart | 36 +++++++--- examples/raw/hello_world.dart | 68 ++++++++++++------- examples/raw/mutating-dom.dart | 40 ++++++++--- examples/raw/painting.dart | 34 +++++++--- examples/raw/shadow.dart | 65 ++++++++++++------ examples/raw/spinning_arabic.dart | 57 ++++++++++------ examples/raw/spinning_image.dart | 62 +++++++++++------ examples/raw/spinning_square.dart | 42 ++++++++---- .../flutter/lib/src/widgets/drawer_item.dart | 2 +- 9 files changed, 280 insertions(+), 126 deletions(-) diff --git a/examples/raw/baseline.dart b/examples/raw/baseline.dart index 0e1e86690e..8e0eb10717 100644 --- a/examples/raw/baseline.dart +++ b/examples/raw/baseline.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'dart:sky' as sky; +import 'dart:typed_data'; void drawText(sky.Canvas canvas, String lh) { sky.Paint paint = new sky.Paint(); @@ -44,14 +45,10 @@ void drawText(sky.Canvas canvas, String lh) { layoutRoot.paint(canvas); } -void main() { - // prepare the rendering +sky.Picture paint(sky.Rect paintBounds) { sky.PictureRecorder recorder = new sky.PictureRecorder(); - final double devicePixelRatio = sky.view.devicePixelRatio; - sky.Canvas canvas = new sky.Canvas(recorder, new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); - // background sky.Paint paint = new sky.Paint(); paint.color = const sky.Color(0xFFFFFFFF); paint.setStyle(sky.PaintingStyle.fill); @@ -61,7 +58,30 @@ void main() { drawText(canvas, '1.0'); drawText(canvas, 'lh'); - // put it on the screen - sky.view.picture = recorder.endRecording(); + return recorder.endRecording(); +} + +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; +} + +void main() { + sky.view.setFrameCallback(beginFrame); sky.view.scheduleFrame(); } diff --git a/examples/raw/hello_world.dart b/examples/raw/hello_world.dart index ee4669c5d7..87810f8714 100644 --- a/examples/raw/hello_world.dart +++ b/examples/raw/hello_world.dart @@ -2,37 +2,59 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:sky'; +import 'dart:sky' as sky; +import 'dart:typed_data'; -Picture draw(int a, int r, int g, int b) { - Size size = new Size(view.width, view.height); +sky.Color color; + +sky.Picture paint(sky.Rect paintBounds) { + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + sky.Size size = paintBounds.size; - PictureRecorder recorder = new PictureRecorder(); - final double devicePixelRatio = view.devicePixelRatio; - Canvas canvas = new Canvas(recorder, Point.origin & (size * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); double radius = size.shortestSide * 0.45; + sky.Paint paint = new sky.Paint() + ..color = color; + canvas.drawCircle(size.center(sky.Point.origin), radius, paint); - Paint paint = new Paint()..color = new Color.fromARGB(a, r, g, b); - canvas.drawCircle(size.center(Point.origin), radius, paint); return recorder.endRecording(); } -bool handleEvent(Event event) { - if (event.type == "pointerdown") { - view.picture = draw(255, 0, 0, 255); - view.scheduleFrame(); +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; +} + +bool handleEvent(sky.Event event) { + if (event.type == 'pointerdown') { + color = new sky.Color.fromARGB(255, 0, 0, 255); + sky.view.scheduleFrame(); return true; } - if (event.type == "pointerup") { - view.picture = draw(255, 0, 255, 0); - view.scheduleFrame(); + if (event.type == 'pointerup') { + color = new sky.Color.fromARGB(255, 0, 255, 0); + sky.view.scheduleFrame(); return true; } - if (event.type == "back") { - print("Pressed back button."); + if (event.type == 'back') { + print('Pressed back button.'); return true; } @@ -40,9 +62,9 @@ bool handleEvent(Event event) { } void main() { - print("Hello, world"); - view.picture = draw(255, 0, 255, 0); - view.scheduleFrame(); - - view.setEventCallback(handleEvent); + print('Hello, world'); + color = new sky.Color.fromARGB(255, 0, 255, 0); + sky.view.setFrameCallback(beginFrame); + sky.view.setEventCallback(handleEvent); + sky.view.scheduleFrame(); } diff --git a/examples/raw/mutating-dom.dart b/examples/raw/mutating-dom.dart index 8ec6ec8cbe..18fe4c663b 100644 --- a/examples/raw/mutating-dom.dart +++ b/examples/raw/mutating-dom.dart @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import "dart:math" as math; +import 'dart:math' as math; import 'dart:sky' as sky; +import 'dart:typed_data'; const kMaxIterations = 100; int peakCount = 1000; // this is the number that must be reached for us to start reporting the peak number of nodes in the tree each frame @@ -32,7 +33,7 @@ String colorToCSSString(sky.Color color) { return 'rgba(${color.red}, ${color.green}, ${color.blue}, ${color.alpha / 255.0})'; } -void doFrame(double timeStamp) { +void mutate(sky.Canvas canvas) { // mutate the DOM randomly int iterationsLeft = kMaxIterations; sky.Node node = root; @@ -201,16 +202,37 @@ void doFrame(double timeStamp) { // draw the result report("recording..."); - sky.PictureRecorder recorder = new sky.PictureRecorder(); - final double devicePixelRatio = sky.view.devicePixelRatio; - sky.Canvas canvas = new sky.Canvas(recorder, new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); layoutRoot.maxWidth = sky.view.width; layoutRoot.layout(); layoutRoot.paint(canvas); report("painting..."); - sky.view.picture = recorder.endRecording(); - sky.view.scheduleFrame(); +} + +sky.Picture paint(sky.Rect paintBounds) { + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + mutate(canvas); + return recorder.endRecording(); +} + +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; } void main() { @@ -218,6 +240,6 @@ void main() { root.style['display'] = 'paragraph'; root.style['color'] = '#FFFFFF'; layoutRoot.rootElement = root; - sky.view.setFrameCallback(doFrame); + sky.view.setFrameCallback(beginFrame); sky.view.scheduleFrame(); } diff --git a/examples/raw/painting.dart b/examples/raw/painting.dart index 55963b1eff..7ffa87e272 100644 --- a/examples/raw/painting.dart +++ b/examples/raw/painting.dart @@ -6,21 +6,17 @@ import 'dart:sky' as sky; import 'dart:math' as math; import 'dart:typed_data'; -void beginFrame(double timeStamp) { - sky.Size size = new sky.Size(sky.view.width, sky.view.height); +sky.Picture paint(sky.Rect paintBounds) { sky.PictureRecorder recorder = new sky.PictureRecorder(); - final double devicePixelRatio = sky.view.devicePixelRatio; - sky.Canvas canvas = new sky.Canvas(recorder, sky.Point.origin & (size * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + sky.Size size = paintBounds.size; sky.Paint paint = new sky.Paint(); sky.Point mid = size.center(sky.Point.origin); double radius = size.shortestSide / 2.0; - canvas.drawPaint(new sky.Paint()..color = const sky.Color(0xFFFFFFFF)); canvas.save(); - canvas.translate(-mid.x/2.0, sky.view.height*2.0); canvas.clipRect( new sky.Rect.fromLTRB(0.0, -sky.view.height, sky.view.width, radius)); @@ -39,7 +35,7 @@ void beginFrame(double timeStamp) { var scaleMatrix = new Float32List.fromList([ 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, ]); canvas.concat(scaleMatrix); @@ -81,7 +77,27 @@ void beginFrame(double timeStamp) { paint.setDrawLooper(builder.build()); canvas.drawCircle(sky.Point.origin, radius, paint); - sky.view.picture = recorder.endRecording(); + return recorder.endRecording(); +} + +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; } void main() { diff --git a/examples/raw/shadow.dart b/examples/raw/shadow.dart index c301beb8fb..9da0b150bf 100644 --- a/examples/raw/shadow.dart +++ b/examples/raw/shadow.dart @@ -2,41 +2,62 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:sky'; +import 'dart:sky' as sky; +import 'dart:typed_data'; + +sky.Picture paint(sky.Rect paintBounds) { + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); -void beginFrame(double timeStamp) { double size = 100.0; - PictureRecorder recorder = new PictureRecorder(); - final double devicePixelRatio = view.devicePixelRatio; - Canvas canvas = new Canvas(recorder, new Rect.fromLTWH(0.0, 0.0, view.width * devicePixelRatio, view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); canvas.translate(size + 10.0, size + 10.0); - Paint paint = new Paint(); - paint.color = const Color.fromARGB(255, 0, 255, 0); - var builder = new LayerDrawLooperBuilder() + sky.Paint paint = new sky.Paint(); + paint.color = const sky.Color.fromARGB(255, 0, 255, 0); + var builder = new sky.LayerDrawLooperBuilder() // Shadow layer. ..addLayerOnTop( - new DrawLooperLayerInfo() - ..setPaintBits(PaintBits.all) - ..setOffset(const Offset(5.0, 5.0)) - ..setColorMode(TransferMode.src), - new Paint() - ..color = const Color.fromARGB(128, 55, 55, 55) + new sky.DrawLooperLayerInfo() + ..setPaintBits(sky.PaintBits.all) + ..setOffset(const sky.Offset(5.0, 5.0)) + ..setColorMode(sky.TransferMode.src), + new sky.Paint() + ..color = const sky.Color.fromARGB(128, 55, 55, 55) ..setMaskFilter( - new MaskFilter.blur(BlurStyle.normal, 5.0, highQuality: true)) + new sky.MaskFilter.blur(sky.BlurStyle.normal, 5.0)) ) // Main layer. - ..addLayerOnTop(new DrawLooperLayerInfo(), new Paint()); + ..addLayerOnTop(new sky.DrawLooperLayerInfo(), new sky.Paint()); paint.setDrawLooper(builder.build()); canvas.drawPaint( - new Paint()..color = const Color.fromARGB(255, 255, 255, 255)); - canvas.drawRect(new Rect.fromLTRB(-size, -size, size, size), paint); - view.picture = recorder.endRecording(); + new sky.Paint()..color = const sky.Color.fromARGB(255, 255, 255, 255)); + canvas.drawRect(new sky.Rect.fromLTRB(-size, -size, size, size), paint); + + return recorder.endRecording(); +} + +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; } void main() { - view.setFrameCallback(beginFrame); - view.scheduleFrame(); + sky.view.setFrameCallback(beginFrame); + sky.view.scheduleFrame(); } diff --git a/examples/raw/spinning_arabic.dart b/examples/raw/spinning_arabic.dart index 5fef68d5d4..66562b226e 100644 --- a/examples/raw/spinning_arabic.dart +++ b/examples/raw/spinning_arabic.dart @@ -2,24 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import "dart:math" as math; -import 'dart:sky'; +import 'dart:math' as math; +import 'dart:sky' as sky; +import 'dart:typed_data'; double timeBase = null; -LayoutRoot layoutRoot = new LayoutRoot(); +sky.LayoutRoot layoutRoot = new sky.LayoutRoot(); -void beginFrame(double timeStamp) { - if (timeBase == null) - timeBase = timeStamp; - double delta = timeStamp - timeBase; - PictureRecorder recorder = new PictureRecorder(); - final double devicePixelRatio = view.devicePixelRatio; - Canvas canvas = new Canvas(recorder, new Rect.fromLTWH(0.0, 0.0, view.width * devicePixelRatio, view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); - canvas.translate(view.width / 2.0, view.height / 2.0); +sky.Picture paint(sky.Rect paintBounds, double delta) { + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + + canvas.translate(sky.view.width / 2.0, sky.view.height / 2.0); canvas.rotate(math.PI * delta / 1800); - canvas.drawRect(new Rect.fromLTRB(-100.0, -100.0, 100.0, 100.0), - new Paint()..color = const Color.fromARGB(255, 0, 255, 0)); + canvas.drawRect(new sky.Rect.fromLTRB(-100.0, -100.0, 100.0, 100.0), + new sky.Paint()..color = const sky.Color.fromARGB(255, 0, 255, 0)); double sin = math.sin(delta / 200); layoutRoot.maxWidth = 150.0 + (50 * sin); @@ -28,12 +25,34 @@ void beginFrame(double timeStamp) { canvas.translate(layoutRoot.maxWidth / -2.0, (layoutRoot.maxWidth / 2.0) - 125); layoutRoot.paint(canvas); - view.picture = recorder.endRecording(); - view.scheduleFrame(); + return recorder.endRecording(); +} + +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + if (timeBase == null) + timeBase = timeStamp; + double delta = timeStamp - timeBase; + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds, delta); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; } void main() { - var document = new Document(); + var document = new sky.Document(); var arabic = document.createText("هذا هو قليلا طويلة من النص الذي يجب التفاف ."); var more = document.createText(" و أكثر قليلا لجعله أطول. "); var block = document.createElement('p'); @@ -45,6 +64,6 @@ void main() { layoutRoot.rootElement = block; - view.setFrameCallback(beginFrame); - view.scheduleFrame(); + sky.view.setFrameCallback(beginFrame); + sky.view.scheduleFrame(); } diff --git a/examples/raw/spinning_image.dart b/examples/raw/spinning_image.dart index d4a22395ed..0c3a6fa9cf 100644 --- a/examples/raw/spinning_image.dart +++ b/examples/raw/spinning_image.dart @@ -3,32 +3,29 @@ // found in the LICENSE file. import 'dart:math' as math; -import 'dart:sky'; +import 'dart:sky' as sky; +import 'dart:typed_data'; import 'package:sky/mojo/net/image_cache.dart' as image_cache; double timeBase = null; -Image image = null; +sky.Image image = null; String url1 = "https://www.dartlang.org/logos/dart-logo.png"; String url2 = "http://i2.kym-cdn.com/photos/images/facebook/000/581/296/c09.jpg"; -void beginFrame(double timeStamp) { - if (timeBase == null) - timeBase = timeStamp; - double delta = timeStamp - timeBase; - PictureRecorder recorder = new PictureRecorder(); - final double devicePixelRatio = view.devicePixelRatio; - Canvas canvas = new Canvas(recorder, Point.origin & new Size(view.width * devicePixelRatio, view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); - canvas.translate(view.width / 2.0, view.height / 2.0); +sky.Picture paint(sky.Rect paintBounds, double delta) { + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + + canvas.translate(paintBounds.width / 2.0, paintBounds.height / 2.0); canvas.rotate(math.PI * delta / 1800); canvas.scale(0.2, 0.2); - Paint paint = new Paint()..color = const Color.fromARGB(255, 0, 255, 0); + sky.Paint paint = new sky.Paint()..color = const sky.Color.fromARGB(255, 0, 255, 0); // Draw image if (image != null) - canvas.drawImage(image, new Point(-image.width / 2.0, -image.height / 2.0), paint); + canvas.drawImage(image, new sky.Point(-image.width / 2.0, -image.height / 2.0), paint); // Draw cut out of image canvas.rotate(math.PI * delta / 1800); @@ -36,26 +33,49 @@ void beginFrame(double timeStamp) { var w = image.width.toDouble(); var h = image.width.toDouble(); canvas.drawImageRect(image, - new Rect.fromLTRB(w * 0.25, h * 0.25, w * 0.75, h * 0.75), - new Rect.fromLTRB(-w / 4.0, -h / 4.0, w / 4.0, h / 4.0), + new sky.Rect.fromLTRB(w * 0.25, h * 0.25, w * 0.75, h * 0.75), + new sky.Rect.fromLTRB(-w / 4.0, -h / 4.0, w / 4.0, h / 4.0), paint); } - view.picture = recorder.endRecording(); - view.scheduleFrame(); + return recorder.endRecording(); } +sky.Scene composite(sky.Picture picture, sky.Rect paintBounds) { + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + return sceneBuilder.build(); +} + +void beginFrame(double timeStamp) { + if (timeBase == null) + timeBase = timeStamp; + double delta = timeStamp - timeBase; + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.Picture picture = paint(paintBounds, delta); + sky.Scene scene = composite(picture, paintBounds); + sky.view.scene = scene; +} + + void handleImageLoad(result) { if (result != image) { print("${result.width}x${result.width} image loaded!"); image = result; - view.scheduleFrame(); + sky.view.scheduleFrame(); } else { print("Existing image was loaded again"); } } -bool handleEvent(Event event) { +bool handleEvent(sky.Event event) { if (event.type == "pointerdown") { return true; } @@ -70,6 +90,6 @@ bool handleEvent(Event event) { void main() { image_cache.load(url1).first.then(handleImageLoad); - view.setEventCallback(handleEvent); - view.setFrameCallback(beginFrame); + sky.view.setEventCallback(handleEvent); + sky.view.setFrameCallback(beginFrame); } diff --git a/examples/raw/spinning_square.dart b/examples/raw/spinning_square.dart index 9119f3a390..cc6d1687c1 100644 --- a/examples/raw/spinning_square.dart +++ b/examples/raw/spinning_square.dart @@ -2,30 +2,44 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:sky'; import 'dart:math' as math; +import 'dart:sky' as sky; +import 'dart:typed_data'; double timeBase = null; void beginFrame(double timeStamp) { - tracing.begin('beginFrame'); + sky.tracing.begin('beginFrame'); if (timeBase == null) timeBase = timeStamp; double delta = timeStamp - timeBase; - PictureRecorder recorder = new PictureRecorder(); - final double devicePixelRatio = view.devicePixelRatio; - Canvas canvas = new Canvas(recorder, new Rect.fromLTWH(0.0, 0.0, view.width * devicePixelRatio, view.height * devicePixelRatio)); - canvas.scale(devicePixelRatio, devicePixelRatio); - canvas.translate(view.width / 2.0, view.height / 2.0); + + // paint + sky.Rect paintBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width, sky.view.height); + sky.PictureRecorder recorder = new sky.PictureRecorder(); + sky.Canvas canvas = new sky.Canvas(recorder, paintBounds); + canvas.translate(paintBounds.width / 2.0, paintBounds.height / 2.0); canvas.rotate(math.PI * delta / 1800); - canvas.drawRect(new Rect.fromLTRB(-100.0, -100.0, 100.0, 100.0), - new Paint()..color = const Color.fromARGB(255, 0, 255, 0)); - view.picture = recorder.endRecording(); - view.scheduleFrame(); - tracing.end('beginFrame'); + canvas.drawRect(new sky.Rect.fromLTRB(-100.0, -100.0, 100.0, 100.0), + new sky.Paint()..color = const sky.Color.fromARGB(255, 0, 255, 0)); + sky.Picture picture = recorder.endRecording(); + + // composite + final double devicePixelRatio = sky.view.devicePixelRatio; + sky.Rect sceneBounds = new sky.Rect.fromLTWH(0.0, 0.0, sky.view.width * devicePixelRatio, sky.view.height * devicePixelRatio); + Float32List deviceTransform = new Float32List(16) + ..[0] = devicePixelRatio + ..[5] = devicePixelRatio; + sky.SceneBuilder sceneBuilder = new sky.SceneBuilder(sceneBounds) + ..pushTransform(deviceTransform) + ..addPicture(sky.Offset.zero, picture, paintBounds) + ..pop(); + sky.view.scene = sceneBuilder.build(); + + sky.tracing.end('beginFrame'); } void main() { - view.setFrameCallback(beginFrame); - view.scheduleFrame(); + sky.view.setFrameCallback(beginFrame); + sky.view.scheduleFrame(); } diff --git a/packages/flutter/lib/src/widgets/drawer_item.dart b/packages/flutter/lib/src/widgets/drawer_item.dart index bda484e40d..b81edf1ef2 100644 --- a/packages/flutter/lib/src/widgets/drawer_item.dart +++ b/packages/flutter/lib/src/widgets/drawer_item.dart @@ -15,7 +15,7 @@ import 'package:sky/src/widgets/icon.dart'; import 'package:sky/src/widgets/ink_well.dart'; import 'package:sky/src/widgets/theme.dart'; -typedef EventDisposition OnPressedFunction(); +typedef void OnPressedFunction(); class DrawerItem extends ButtonBase { DrawerItem({ Key key, this.icon, this.child, this.onPressed, this.selected: false })