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

Side by Side Diff: sky/sdk/lib/widgets/basic.dart

Issue 1191443009: Introduce a LeafRenderObjectWrapper abstract class so that RenderObjectWrappers that are leaves don… (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 | « no previous file | sky/sdk/lib/widgets/widget.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 'package:vector_math/vector_math.dart'; 5 import 'package:vector_math/vector_math.dart';
6 6
7 import '../painting/text_style.dart'; 7 import '../painting/text_style.dart';
8 import '../rendering/block.dart'; 8 import '../rendering/block.dart';
9 import '../rendering/box.dart'; 9 import '../rendering/box.dart';
10 import '../rendering/flex.dart'; 10 import '../rendering/flex.dart';
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 root.alignItems = alignItems; 339 root.alignItems = alignItems;
340 } 340 }
341 341
342 } 342 }
343 343
344 class Flexible extends ParentDataNode { 344 class Flexible extends ParentDataNode {
345 Flexible({ String key, Widget child, int flex: 1 }) 345 Flexible({ String key, Widget child, int flex: 1 })
346 : super(child, new FlexBoxParentData()..flex = flex, key: key); 346 : super(child, new FlexBoxParentData()..flex = flex, key: key);
347 } 347 }
348 348
349 class Inline extends RenderObjectWrapper { 349 class Inline extends LeafRenderObjectWrapper {
350 Inline({ String key, this.text }) : super(key: key); 350 Inline({ String key, this.text }) : super(key: key);
351 351
352 RenderParagraph get root => super.root; 352 RenderParagraph get root => super.root;
353 RenderParagraph createNode() => new RenderParagraph(text); 353 RenderParagraph createNode() => new RenderParagraph(text);
354 354
355 final InlineBase text; 355 final InlineBase text;
356 356
357 void syncRenderObject(Widget old) { 357 void syncRenderObject(Widget old) {
358 super.syncRenderObject(old); 358 super.syncRenderObject(old);
359 root.inline = text; 359 root.inline = text;
360 } 360 }
361 361
362 void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
363 assert(false);
364 // Inline does not support having children currently
365 }
366
367 } 362 }
368 363
369 class Text extends Component { 364 class Text extends Component {
370 Text(data, { String key, TextStyle this.style }) : data = data, super(key: key ); 365 Text(data, { String key, TextStyle this.style }) : super(key: key);
371 final String data; 366 final String data;
372 final TextStyle style; 367 final TextStyle style;
373 bool get interchangeable => true; 368 bool get interchangeable => true;
374 Widget build() { 369 Widget build() {
375 InlineBase text = new InlineText(data); 370 InlineBase text = new InlineText(data);
376 if (style != null) text = new InlineStyle(style, [text]); 371 if (style != null) text = new InlineStyle(style, [text]);
377 return new Inline(text: text); 372 return new Inline(text: text);
378 } 373 }
379 } 374 }
380 375
381 class Image extends RenderObjectWrapper { 376 class Image extends LeafRenderObjectWrapper {
382 377
383 Image({ 378 Image({
384 String key, 379 src,
385 this.src,
386 this.size 380 this.size
387 }) : super(key: key); 381 }) : src = src,
382 super(key: src) {
383 assert(src != null);
384 }
388 385
389 RenderImage get root => super.root; 386 RenderImage get root => super.root;
390 RenderImage createNode() => new RenderImage(this.src, this.size); 387 RenderImage createNode() => new RenderImage(this.src, this.size);
391 388
392 final String src; 389 final String src;
393 final Size size; 390 final Size size;
394 391
395 void syncRenderObject(Widget old) { 392 void syncRenderObject(Widget old) {
396 super.syncRenderObject(old); 393 super.syncRenderObject(old);
397 root.src = src; 394 root.src = src;
398 root.requestedSize = size; 395 root.requestedSize = size;
399 } 396 }
400 397
401 void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
402 assert(false);
403 // Image does not support having children currently
404 }
405
406 } 398 }
407 399
408 class WidgetToRenderBoxAdapter extends RenderObjectWrapper { 400 class WidgetToRenderBoxAdapter extends LeafRenderObjectWrapper {
409 401
410 WidgetToRenderBoxAdapter(RenderBox renderBox) 402 WidgetToRenderBoxAdapter(RenderBox renderBox)
411 : this.renderBox = renderBox, 403 : renderBox = renderBox,
412 super(key: renderBox.hashCode.toString()); 404 super(key: renderBox.hashCode.toString());
413 405
414 RenderBox get root => super.root; 406 RenderBox get root => super.root;
415 RenderBox createNode() => this.renderBox; 407 RenderBox createNode() => this.renderBox;
416 408
417 final RenderBox renderBox; 409 final RenderBox renderBox;
418 410
419 void syncRenderObject(Widget old) { 411 void syncRenderObject(Widget old) {
420 super.syncRenderObject(old); 412 super.syncRenderObject(old);
421 if (old != null) { 413 if (old != null) {
422 assert(old is WidgetToRenderBoxAdapter); 414 assert(old is WidgetToRenderBoxAdapter);
423 assert(root == old.root); 415 assert(root == old.root);
424 } 416 }
425 } 417 }
426 418
427 void insertChildRoot(RenderObjectWrapper child, dynamic slot) {
428 assert(false);
429 // WidgetToRenderBoxAdapter cannot have Widget children; by
430 // definition, it is the transition out of the Widget world.
431 }
432
433 void remove() { 419 void remove() {
434 parent.detachChildRoot(this); 420 parent.detachChildRoot(this);
435 super.remove(); 421 super.remove();
436 } 422 }
437 423
438 } 424 }
OLDNEW
« no previous file with comments | « no previous file | sky/sdk/lib/widgets/widget.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698