Index: sky/examples/rendering/baseline.dart |
diff --git a/sky/examples/rendering/baseline.dart b/sky/examples/rendering/baseline.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c52239597d987870f5f552bae8128530659c818 |
--- /dev/null |
+++ b/sky/examples/rendering/baseline.dart |
@@ -0,0 +1,78 @@ |
+// 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:sky' as sky; |
+ |
+import 'package:sky/painting/text_style.dart'; |
+import 'package:sky/rendering/block.dart'; |
+import 'package:sky/rendering/box.dart'; |
+import 'package:sky/rendering/object.dart'; |
+import 'package:sky/rendering/paragraph.dart'; |
+import 'package:sky/rendering/sky_binding.dart'; |
+ |
+RenderBox getBox(double lh) { |
+ RenderParagraph paragraph = new RenderParagraph( |
+ new InlineStyle( |
+ new TextStyle(), |
+ [ |
+ new InlineText('test'), |
+ new InlineStyle( |
+ new TextStyle( |
+ color: const Color(0xFF0000A0), |
+ fontFamily: 'serif', |
+ fontSize: 50.0, |
+ height: lh |
+ ), |
+ [new InlineText('مرحبا Hello')] |
+ ) |
+ ] |
+ ) |
+ ); |
+ return new RenderPadding( |
+ padding: new EdgeDims.all(10.0), |
+ child: new RenderConstrainedBox( |
+ additionalConstraints: new BoxConstraints.tightFor(height: 200.0), |
+ child: new RenderDecoratedBox( |
+ decoration: new BoxDecoration( |
+ backgroundColor: const Color(0xFFFFFFFF) |
+ ), |
+ child: new RenderPadding( |
+ padding: new EdgeDims.all(10.0), |
+ child: new RenderCustomPaint( |
+ child: paragraph, |
+ callback: (canvas, size) { |
+ double baseline = paragraph.getDistanceToBaseline(TextBaseline.alphabetic); |
+ double w = paragraph.getMaxIntrinsicWidth(new BoxConstraints.loose(size)); |
+ double h = paragraph.getMaxIntrinsicHeight(new BoxConstraints.loose(size)); |
+ Path path = new Path(); |
+ path.moveTo(0.0, 0.0); |
+ path.lineTo(w, 0.0); |
+ path.moveTo(0.0, baseline); |
+ path.lineTo(w, baseline); |
+ path.moveTo(0.0, h); |
+ path.lineTo(w, h); |
+ Paint paint = new Paint(); |
+ paint.color = const Color(0xFFFF9000); |
+ paint.setStyle(sky.PaintingStyle.stroke); |
+ paint.strokeWidth = 3.0; |
+ canvas.drawPath(path, paint); |
+ } |
+ ) |
+ ) |
+ ) |
+ ) |
+ ); |
+} |
+ |
+void main() { |
+ RenderBox root = new RenderBlock(children: [ |
+ new RenderConstrainedBox( |
+ additionalConstraints: new BoxConstraints.tightFor(height: 50.0) |
+ ), |
+ getBox(1.0), |
+ getBox(null), |
+ ]); |
+ var b = new SkyBinding(root: root); |
+ // b.onFrame = b.debugDumpRenderTree; |
+} |