diff --git a/engine/src/flutter/examples/spinning_arabic.dart b/engine/src/flutter/examples/spinning_arabic.dart new file mode 100644 index 00000000000..843c570d8eb --- /dev/null +++ b/engine/src/flutter/examples/spinning_arabic.dart @@ -0,0 +1,47 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// 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'; + +double timeBase = null; +LayoutRoot layoutRoot = new LayoutRoot(); + +void beginFrame(double timeStamp) { + if (timeBase == null) + timeBase = timeStamp; + double delta = timeStamp - timeBase; + PictureRecorder canvas = new PictureRecorder(view.width, view.height); + canvas.translate(view.width / 2.0, view.height / 2.0); + canvas.rotateDegrees(delta / 10); + canvas.drawRect(new Rect()..setLTRB(-100.0, -100.0, 100.0, 100.0), + new Paint()..setARGB(255, 0, 255, 0)); + + double sin = math.sin(delta / 200); + layoutRoot.maxWidth = 150.0 + (50 * sin); + layoutRoot.layout(); + + canvas.translate(layoutRoot.maxWidth / -2.0, (layoutRoot.maxWidth / 2.0) - 125); + layoutRoot.paint(canvas); + + view.picture = canvas.endRecording(); + view.scheduleFrame(); +} + +void main() { + var document = new Document(); + var arabic = document.createText("هذا هو قليلا طويلة من النص الذي يجب التفاف ."); + var more = document.createText(" و أكثر قليلا لجعله أطول. "); + var block = document.createElement('p'); + block.style['display'] = 'paragraph'; + block.style['direction'] = 'rtl'; + block.style['unicode-bidi'] = 'plaintext'; + block.appendChild(arabic); + block.appendChild(more); + + layoutRoot.rootElement = block; + + view.setBeginFrameCallback(beginFrame); + view.scheduleFrame(); +}