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

Side by Side Diff: sky/specs/style.md

Issue 810003003: Specs: Change from the every-frame-walk for animations on dead nodes to just relying on actual anim… (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Sky Style Language 1 Sky Style Language
2 ================== 2 ==================
3 3
4 Planed changes 4 Planed changes
5 -------------- 5 --------------
6 6
7 Add //-to-end-of-line comments to be consistent with the script 7 Add //-to-end-of-line comments to be consistent with the script
8 language. 8 language.
9 9
10 10
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 489
490 490
491 Cascade 491 Cascade
492 ------- 492 -------
493 493
494 Simultaneously walk the tree rooted at the application Document, 494 Simultaneously walk the tree rooted at the application Document,
495 taking into account shadow trees and child distribution, and the tree 495 taking into account shadow trees and child distribution, and the tree
496 rooted at the document's RenderNode. 496 rooted at the document's RenderNode.
497 497
498 If you come across a node that doesn't have an assigned RenderNode, 498 If you come across a node that doesn't have an assigned RenderNode,
499 then create one and mark it "isNew", and place it in the appropriate 499 then create one, placing it in the appropriate place in the RenderTree
500 place in the RenderTree tree, after any nodes marked isGhost. 500 tree, after any nodes marked isGhost=true, with ownerLayoutManager
501 pointing to the parent RenderNode's layoutManager, and then, if
502 autoreap is false on the ownerLayoutManager, mark it "isNew".
501 503
502 For each element, if the node's needsManager is true, call 504 For each element, if the node's needsManager is true, call
503 getLayoutManager() on the element, and if that's not null, and if the 505 getLayoutManager() on the element, and if that's not null, and if the
504 returned class isn't the same class as the current layoutManager, if 506 returned class isn't the same class as the current layoutManager, if
505 any, construct the given class and assign it to the RenderNode's 507 any, construct the given class and assign it to the RenderNode's
506 layoutManager, then set all the child RenderNodes' ownerLayoutManager 508 layoutManager, then set all the child RenderNodes' ownerLayoutManager
507 to that object; if it returns null, and that node already has a 509 to that object; if it returns null, and that node already has a
508 layoutManager, then set isGhost=true for that node and all its 510 layoutManager, then set isGhost=true for that node and all its
509 children (without changing the layoutManager). Otherwise, if it 511 children (without changing the layoutManager). Otherwise, if it
510 returned null and there's already no layoutManager, remove the node 512 returned null and there's already no layoutManager, remove the node
511 from the tree. Then, in any case, clear the needsManager bit. 513 from the tree. Then, in any case, clear the needsManager bit.
512 514
513 When an Element or Text node is to be removed from its parent, and it 515 When an Element or Text node is to be removed from its parent, and it
514 has a renderNode, and that renderNode has an ownerLayoutManager with 516 has a renderNode, and that renderNode has an ownerLayoutManager with
515 autoreap=false, then before actually removing the node, the node's 517 autoreap=false, then before actually removing the node, the node's
516 renderNode should be marked isGhost=true, and the relevant 518 renderNode should be marked isGhost=true, and the relevant
517 ElementStyleDeclarationList should be flattened and the values stored on 519 ElementStyleDeclarationList should be flattened and the values stored on
518 the RenderNode's overrideStyles for use later. (Or we can just clone the 520 the RenderNode's overrideStyles for use later. (Or we can just clone the
519 StyleDeclarations directly without flattening. That would probably 521 StyleDeclarations directly without flattening. That would probably
520 be faster.) 522 be faster.)
521 523
522 When an Element is to be removed from its parent, regardless of the 524 When an Element is to be removed from its parent, regardless of the
523 above, the node's renderNode attribute should be nulled out. 525 above, the node's renderNode attribute should be nulled out.
524 526
527 When a RenderNode is added with isNew=true, call its parent
528 RenderNode's LayoutManager's childAdded() callback. When a a
529 RenderNode has its isGhost property set to true, then call it's parent
530 RenderNode's LayoutManager's childRemoved() callback.
531
525 532
526 ```javascript 533 ```javascript
527 callback any ValueResolver (any value, String propertyName, RenderNode node, Flo at containerWidth, Float containerHeight); 534 callback any ValueResolver (any value, String propertyName, RenderNode node, Flo at containerWidth, Float containerHeight);
528 535
529 class RenderNode { // implemented in C++ with no virtual tables 536 class RenderNode { // implemented in C++ with no virtual tables
530 // this is generated before layout 537 // this is generated before layout
531 readonly attribute String text; 538 readonly attribute String text;
532 readonly attribute Node? parentNode; 539 readonly attribute Node? parentNode;
533 readonly attribute Node? firstChild; 540 readonly attribute Node? firstChild;
534 readonly attribute Node? nextSibling; 541 readonly attribute Node? nextSibling;
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 // replaces the value that getProperty() would return on that node with /val ue/ 668 // replaces the value that getProperty() would return on that node with /val ue/
662 669
663 void take(RenderNode victim); // sets victim.ownerLayoutManager = this; 670 void take(RenderNode victim); // sets victim.ownerLayoutManager = this;
664 // assert: victim hasn't been take()n yet during this layout 671 // assert: victim hasn't been take()n yet during this layout
665 // assert: victim.needsLayout == true 672 // assert: victim.needsLayout == true
666 // assert: an ancestor of victim has node.layoutManager == this (aka, victim is a descendant of this.node) 673 // assert: an ancestor of victim has node.layoutManager == this (aka, victim is a descendant of this.node)
667 674
668 virtual void release(RenderNode victim); 675 virtual void release(RenderNode victim);
669 // called when the RenderNode was removed from the tree 676 // called when the RenderNode was removed from the tree
670 677
678 virtual void childAdded(RenderNode child);
679 virtual void childRemoved(RenderNode child);
680 // called when a child has its isNew or isGhost attributes set respectively
681
671 void setChildPosition(child, x, y); // sets child.x, child.y 682 void setChildPosition(child, x, y); // sets child.x, child.y
672 void setChildX(child, y); // sets child.x 683 void setChildX(child, y); // sets child.x
673 void setChildY(child, y); // sets child.y 684 void setChildY(child, y); // sets child.y
674 void setChildSize(child, width, height); // sets child.width, child.height 685 void setChildSize(child, width, height); // sets child.width, child.height
675 void setChildWidth(child, width); // sets child.width 686 void setChildWidth(child, width); // sets child.width
676 void setChildHeight(child, height); // sets child.height 687 void setChildHeight(child, height); // sets child.height
677 // for setChildSize/Width/Height: if the new dimension is different than the last assumed dimensions, and 688 // for setChildSize/Width/Height: if the new dimension is different than the last assumed dimensions, and
678 // any RenderNodes with an ownerLayoutManager==this have cached values for g etProperty() that are marked 689 // any RenderNodes with an ownerLayoutManager==this have cached values for g etProperty() that are marked
679 // as layout-dependent, clear them 690 // as layout-dependent, clear them
680 void welcomeChild(child); // resets child.isNew 691 void welcomeChild(child); // resets child.isNew
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 ``` 922 ```
912 923
913 The ``div`` element doesn't have any default styles. 924 The ``div`` element doesn't have any default styles.
914 925
915 These declarations are all shared between all the elements (so e.g. if 926 These declarations are all shared between all the elements (so e.g. if
916 you reach in and change the declaration that was added to a ``title`` 927 you reach in and change the declaration that was added to a ``title``
917 element, you're going to change the styles of all the other 928 element, you're going to change the styles of all the other
918 default-hidden elements). (In other words, in the code snippets above, 929 default-hidden elements). (In other words, in the code snippets above,
919 the ``d`` variable is initialised in shared code, and only the 930 the ``d`` variable is initialised in shared code, and only the
920 addStyles() call is per-element.) 931 addStyles() call is per-element.)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698