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

Side by Side Diff: sky/examples/raw/sector_layout.dart

Issue 1165013003: Rename RenderNode to RenderObject. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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
« no previous file with comments | « sky/examples/raw/render_paragraph.dart ('k') | sky/examples/raw/touch_demo.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:math' as math; 5 import 'dart:math' as math;
6 import 'dart:sky' as sky; 6 import 'dart:sky' as sky;
7 import 'package:sky/framework/app.dart'; 7 import 'package:sky/framework/app.dart';
8 import 'package:sky/framework/rendering/box.dart'; 8 import 'package:sky/framework/rendering/box.dart';
9 import 'package:sky/framework/rendering/node.dart'; 9 import 'package:sky/framework/rendering/object.dart';
10 10
11 const double kTwoPi = 2 * math.PI; 11 const double kTwoPi = 2 * math.PI;
12 12
13 double deg(double radians) => radians * 180.0 / math.PI; 13 double deg(double radians) => radians * 180.0 / math.PI;
14 14
15 class SectorConstraints { 15 class SectorConstraints {
16 const SectorConstraints({ 16 const SectorConstraints({
17 this.minDeltaRadius: 0.0, 17 this.minDeltaRadius: 0.0,
18 this.maxDeltaRadius: double.INFINITY, 18 this.maxDeltaRadius: double.INFINITY,
19 this.minDeltaTheta: 0.0, 19 this.minDeltaTheta: 0.0,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 55
56 final double deltaRadius; 56 final double deltaRadius;
57 final double deltaTheta; 57 final double deltaTheta;
58 } 58 }
59 59
60 class SectorParentData extends ParentData { 60 class SectorParentData extends ParentData {
61 double radius = 0.0; 61 double radius = 0.0;
62 double theta = 0.0; 62 double theta = 0.0;
63 } 63 }
64 64
65 abstract class RenderSector extends RenderNode { 65 abstract class RenderSector extends RenderObject {
66 66
67 void setParentData(RenderNode child) { 67 void setParentData(RenderObject child) {
68 if (child.parentData is! SectorParentData) 68 if (child.parentData is! SectorParentData)
69 child.parentData = new SectorParentData(); 69 child.parentData = new SectorParentData();
70 } 70 }
71 71
72 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) { 72 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
73 return new SectorDimensions.withConstraints(constraints); 73 return new SectorDimensions.withConstraints(constraints);
74 } 74 }
75 75
76 SectorConstraints get constraints => super.constraints as SectorConstraints; 76 SectorConstraints get constraints => super.constraints as SectorConstraints;
77 void performResize() { 77 void performResize() {
(...skipping 30 matching lines...) Expand all
108 BoxDecoration _decoration; 108 BoxDecoration _decoration;
109 BoxDecoration get decoration => _decoration; 109 BoxDecoration get decoration => _decoration;
110 void set decoration (BoxDecoration value) { 110 void set decoration (BoxDecoration value) {
111 if (value == _decoration) 111 if (value == _decoration)
112 return; 112 return;
113 _decoration = value; 113 _decoration = value;
114 markNeedsPaint(); 114 markNeedsPaint();
115 } 115 }
116 116
117 // origin must be set to the center of the circle 117 // origin must be set to the center of the circle
118 void paint(RenderNodeDisplayList canvas) { 118 void paint(RenderObjectDisplayList canvas) {
119 assert(deltaRadius != null); 119 assert(deltaRadius != null);
120 assert(deltaTheta != null); 120 assert(deltaTheta != null);
121 assert(parentData is SectorParentData); 121 assert(parentData is SectorParentData);
122 122
123 if (_decoration == null) 123 if (_decoration == null)
124 return; 124 return;
125 125
126 if (_decoration.backgroundColor != null) { 126 if (_decoration.backgroundColor != null) {
127 sky.Paint paint = new sky.Paint()..color = _decoration.backgroundColor; 127 sky.Paint paint = new sky.Paint()..color = _decoration.backgroundColor;
128 sky.Path path = new sky.Path(); 128 sky.Path path = new sky.Path();
129 double outerRadius = (parentData.radius + deltaRadius); 129 double outerRadius = (parentData.radius + deltaRadius);
130 sky.Rect outerBounds = new sky.Rect.fromLTRB(-outerRadius, -outerRadius, o uterRadius, outerRadius); 130 sky.Rect outerBounds = new sky.Rect.fromLTRB(-outerRadius, -outerRadius, o uterRadius, outerRadius);
131 path.arcTo(outerBounds, deg(parentData.theta), deg(deltaTheta), true); 131 path.arcTo(outerBounds, deg(parentData.theta), deg(deltaTheta), true);
132 double innerRadius = parentData.radius; 132 double innerRadius = parentData.radius;
133 sky.Rect innerBounds = new sky.Rect.fromLTRB(-innerRadius, -innerRadius, i nnerRadius, innerRadius); 133 sky.Rect innerBounds = new sky.Rect.fromLTRB(-innerRadius, -innerRadius, i nnerRadius, innerRadius);
134 path.arcTo(innerBounds, deg(parentData.theta + deltaTheta), deg(-deltaThet a), false); 134 path.arcTo(innerBounds, deg(parentData.theta + deltaTheta), deg(-deltaThet a), false);
135 path.close(); 135 path.close();
136 canvas.drawPath(path, paint); 136 canvas.drawPath(path, paint);
137 } 137 }
138 } 138 }
139 } 139 }
140 140
141 class SectorChildListParentData extends SectorParentData with ContainerParentDat aMixin<RenderSector> { } 141 class SectorChildListParentData extends SectorParentData with ContainerParentDat aMixin<RenderSector> { }
142 142
143 class RenderSectorWithChildren extends RenderDecoratedSector with ContainerRende rNodeMixin<RenderSector, SectorChildListParentData> { 143 class RenderSectorWithChildren extends RenderDecoratedSector with ContainerRende rObjectMixin<RenderSector, SectorChildListParentData> {
144 RenderSectorWithChildren(BoxDecoration decoration) : super(decoration); 144 RenderSectorWithChildren(BoxDecoration decoration) : super(decoration);
145 145
146 void hitTestChildren(HitTestResult result, { double radius, double theta }) { 146 void hitTestChildren(HitTestResult result, { double radius, double theta }) {
147 RenderSector child = lastChild; 147 RenderSector child = lastChild;
148 while (child != null) { 148 while (child != null) {
149 assert(child.parentData is SectorChildListParentData); 149 assert(child.parentData is SectorChildListParentData);
150 if (child.hitTest(result, radius: radius, theta: theta)) 150 if (child.hitTest(result, radius: radius, theta: theta))
151 return; 151 return;
152 child = child.parentData.previousSibling; 152 child = child.parentData.previousSibling;
153 } 153 }
(...skipping 23 matching lines...) Expand all
177 double get padding => _padding; 177 double get padding => _padding;
178 void set padding(double value) { 178 void set padding(double value) {
179 // TODO(ianh): avoid code duplication 179 // TODO(ianh): avoid code duplication
180 assert(value != null); 180 assert(value != null);
181 if (_padding != value) { 181 if (_padding != value) {
182 _padding = value; 182 _padding = value;
183 markNeedsLayout(); 183 markNeedsLayout();
184 } 184 }
185 } 185 }
186 186
187 void setParentData(RenderNode child) { 187 void setParentData(RenderObject child) {
188 // TODO(ianh): avoid code duplication 188 // TODO(ianh): avoid code duplication
189 if (child.parentData is! SectorChildListParentData) 189 if (child.parentData is! SectorChildListParentData)
190 child.parentData = new SectorChildListParentData(); 190 child.parentData = new SectorChildListParentData();
191 } 191 }
192 192
193 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) { 193 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
194 double outerDeltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadiu s); 194 double outerDeltaRadius = constraints.constrainDeltaRadius(desiredDeltaRadiu s);
195 double innerDeltaRadius = outerDeltaRadius - padding * 2.0; 195 double innerDeltaRadius = outerDeltaRadius - padding * 2.0;
196 double childRadius = radius + padding; 196 double childRadius = radius + padding;
197 double paddingTheta = math.atan(padding / (radius + outerDeltaRadius)); 197 double paddingTheta = math.atan(padding / (radius + outerDeltaRadius));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 if (child != null) { 244 if (child != null) {
245 innerTheta += paddingTheta; 245 innerTheta += paddingTheta;
246 remainingDeltaTheta -= paddingTheta; 246 remainingDeltaTheta -= paddingTheta;
247 } 247 }
248 } 248 }
249 deltaTheta = innerTheta; 249 deltaTheta = innerTheta;
250 } 250 }
251 251
252 // paint origin is 0,0 of our circle 252 // paint origin is 0,0 of our circle
253 // each sector then knows how to paint itself at its location 253 // each sector then knows how to paint itself at its location
254 void paint(RenderNodeDisplayList canvas) { 254 void paint(RenderObjectDisplayList canvas) {
255 // TODO(ianh): avoid code duplication 255 // TODO(ianh): avoid code duplication
256 super.paint(canvas); 256 super.paint(canvas);
257 RenderSector child = firstChild; 257 RenderSector child = firstChild;
258 while (child != null) { 258 while (child != null) {
259 assert(child.parentData is SectorChildListParentData); 259 assert(child.parentData is SectorChildListParentData);
260 canvas.paintChild(child, new sky.Point(0.0, 0.0)); 260 canvas.paintChild(child, new sky.Point(0.0, 0.0));
261 child = child.parentData.nextSibling; 261 child = child.parentData.nextSibling;
262 } 262 }
263 } 263 }
264 264
(...skipping 22 matching lines...) Expand all
287 double get padding => _padding; 287 double get padding => _padding;
288 void set padding(double value) { 288 void set padding(double value) {
289 // TODO(ianh): avoid code duplication 289 // TODO(ianh): avoid code duplication
290 assert(value != null); 290 assert(value != null);
291 if (_padding != value) { 291 if (_padding != value) {
292 _padding = value; 292 _padding = value;
293 markNeedsLayout(); 293 markNeedsLayout();
294 } 294 }
295 } 295 }
296 296
297 void setParentData(RenderNode child) { 297 void setParentData(RenderObject child) {
298 // TODO(ianh): avoid code duplication 298 // TODO(ianh): avoid code duplication
299 if (child.parentData is! SectorChildListParentData) 299 if (child.parentData is! SectorChildListParentData)
300 child.parentData = new SectorChildListParentData(); 300 child.parentData = new SectorChildListParentData();
301 } 301 }
302 302
303 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) { 303 SectorDimensions getIntrinsicDimensions(SectorConstraints constraints, double radius) {
304 assert(this.parentData is SectorParentData); 304 assert(this.parentData is SectorParentData);
305 double paddingTheta = math.atan(padding / this.parentData.radius); 305 double paddingTheta = math.atan(padding / this.parentData.radius);
306 double outerDeltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta); 306 double outerDeltaTheta = constraints.constrainDeltaTheta(desiredDeltaTheta);
307 double innerDeltaTheta = outerDeltaTheta - paddingTheta * 2.0; 307 double innerDeltaTheta = outerDeltaTheta - paddingTheta * 2.0;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 assert(child.parentData is SectorChildListParentData); 349 assert(child.parentData is SectorChildListParentData);
350 child = child.parentData.nextSibling; 350 child = child.parentData.nextSibling;
351 childRadius += padding; 351 childRadius += padding;
352 remainingDeltaRadius -= padding; 352 remainingDeltaRadius -= padding;
353 } 353 }
354 deltaRadius = childRadius - this.parentData.radius; 354 deltaRadius = childRadius - this.parentData.radius;
355 } 355 }
356 356
357 // paint origin is 0,0 of our circle 357 // paint origin is 0,0 of our circle
358 // each sector then knows how to paint itself at its location 358 // each sector then knows how to paint itself at its location
359 void paint(RenderNodeDisplayList canvas) { 359 void paint(RenderObjectDisplayList canvas) {
360 // TODO(ianh): avoid code duplication 360 // TODO(ianh): avoid code duplication
361 super.paint(canvas); 361 super.paint(canvas);
362 RenderSector child = firstChild; 362 RenderSector child = firstChild;
363 while (child != null) { 363 while (child != null) {
364 assert(child.parentData is SectorChildListParentData); 364 assert(child.parentData is SectorChildListParentData);
365 canvas.paintChild(child, new sky.Point(0.0, 0.0)); 365 canvas.paintChild(child, new sky.Point(0.0, 0.0));
366 child = child.parentData.nextSibling; 366 child = child.parentData.nextSibling;
367 } 367 }
368 } 368 }
369 369
(...skipping 17 matching lines...) Expand all
387 RenderSector _child; 387 RenderSector _child;
388 RenderSector get child => _child; 388 RenderSector get child => _child;
389 void set child(RenderSector value) { 389 void set child(RenderSector value) {
390 if (_child != null) 390 if (_child != null)
391 dropChild(_child); 391 dropChild(_child);
392 _child = value; 392 _child = value;
393 adoptChild(_child); 393 adoptChild(_child);
394 markNeedsLayout(); 394 markNeedsLayout();
395 } 395 }
396 396
397 void setParentData(RenderNode child) { 397 void setParentData(RenderObject child) {
398 if (child.parentData is! SectorParentData) 398 if (child.parentData is! SectorParentData)
399 child.parentData = new SectorParentData(); 399 child.parentData = new SectorParentData();
400 } 400 }
401 401
402 sky.Size getIntrinsicDimensions(BoxConstraints constraints) { 402 sky.Size getIntrinsicDimensions(BoxConstraints constraints) {
403 if (child == null) 403 if (child == null)
404 return constraints.constrain(new sky.Size(0.0, 0.0)); 404 return constraints.constrain(new sky.Size(0.0, 0.0));
405 assert(child is RenderSector); 405 assert(child is RenderSector);
406 assert(child.parentData is SectorParentData); 406 assert(child.parentData is SectorParentData);
407 assert(!constraints.isInfinite); 407 assert(!constraints.isInfinite);
(...skipping 15 matching lines...) Expand all
423 assert(child.parentData is SectorParentData); 423 assert(child.parentData is SectorParentData);
424 child.parentData.radius = innerRadius; 424 child.parentData.radius = innerRadius;
425 child.parentData.theta = 0.0; 425 child.parentData.theta = 0.0;
426 child.layout(new SectorConstraints(maxDeltaRadius: maxChildDeltaRadius), p arentUsesSize: true); 426 child.layout(new SectorConstraints(maxDeltaRadius: maxChildDeltaRadius), p arentUsesSize: true);
427 double dimension = (innerRadius + child.deltaRadius) * 2.0; 427 double dimension = (innerRadius + child.deltaRadius) * 2.0;
428 size = constraints.constrain(new sky.Size(dimension, dimension)); 428 size = constraints.constrain(new sky.Size(dimension, dimension));
429 } 429 }
430 } 430 }
431 431
432 // paint origin is 0,0 of our circle 432 // paint origin is 0,0 of our circle
433 void paint(RenderNodeDisplayList canvas) { 433 void paint(RenderObjectDisplayList canvas) {
434 super.paint(canvas); 434 super.paint(canvas);
435 if (child != null) { 435 if (child != null) {
436 sky.Rect bounds = new sky.Rect.fromSize(size); 436 sky.Rect bounds = new sky.Rect.fromSize(size);
437 canvas.paintChild(child, bounds.center); 437 canvas.paintChild(child, bounds.center);
438 } 438 }
439 } 439 }
440 440
441 bool hitTest(HitTestResult result, { sky.Point position }) { 441 bool hitTest(HitTestResult result, { sky.Point position }) {
442 double x = position.x; 442 double x = position.x;
443 double y = position.y; 443 double y = position.y;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 rootCircle.add(new RenderSolidColor(const sky.Color(0xFF0000FF), desiredDeltaT heta: kTwoPi * 0.4)); 499 rootCircle.add(new RenderSolidColor(const sky.Color(0xFF0000FF), desiredDeltaT heta: kTwoPi * 0.4));
500 var stack = new RenderSectorSlice(padding: 2.0); 500 var stack = new RenderSectorSlice(padding: 2.0);
501 stack.add(new RenderSolidColor(const sky.Color(0xFFFFFF00), desiredDeltaRadius : 20.0)); 501 stack.add(new RenderSolidColor(const sky.Color(0xFFFFFF00), desiredDeltaRadius : 20.0));
502 stack.add(new RenderSolidColor(const sky.Color(0xFFFF9000), desiredDeltaRadius : 20.0)); 502 stack.add(new RenderSolidColor(const sky.Color(0xFFFF9000), desiredDeltaRadius : 20.0));
503 stack.add(new RenderSolidColor(const sky.Color(0xFF00FF00))); 503 stack.add(new RenderSolidColor(const sky.Color(0xFF00FF00)));
504 rootCircle.add(stack); 504 rootCircle.add(stack);
505 505
506 var root = new RenderBoxToRenderSectorAdapter(innerRadius: 50.0, child: rootCi rcle); 506 var root = new RenderBoxToRenderSectorAdapter(innerRadius: 50.0, child: rootCi rcle);
507 app = new AppView(root); 507 app = new AppView(root);
508 } 508 }
OLDNEW
« no previous file with comments | « sky/examples/raw/render_paragraph.dart ('k') | sky/examples/raw/touch_demo.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698