nl_tokens: Lays out the renderables in a single line . Taking into account the following variables : - true - size - margins - spacing - justify - center align
pl_tokens: function _layoutLine ( next , endReached ) { if ( ! lineNodes . length ) { return 0 ; } // Determine size of the line var i ; var lineSize = [ 0 , 0 ] ; var lineNode ; for ( i = 0 ; i < lineNodes . length ; i ++ ) { lineSize [ direction ] = Math . max ( lineSize [ direction ] , lineNodes [ i ] . size [ direction ] ) ; lineSize [ lineDirection ] += ( ( i > 0 ) ? spacing [ lineDirection ] : 0 ) + lineNodes [ i ] . size [ lineDirection ] ; } // Layout nodes from left to right or top to bottom var justifyOffset = justify [ lineDirection ] ? ( ( lineLength - lineSize [ lineDirection ] ) / ( lineNodes . length * 2 ) ) : 0 ; var lineOffset = ( direction ? margins [ 3 ] : margins [ 0 ] ) + justifyOffset ; var scrollLength ; for ( i = 0 ; i < lineNodes . length ; i ++ ) { lineNode = lineNodes [ i ] ; var translate = [ 0 , 0 , 0 ] ; translate [ lineDirection ] = lineOffset ; translate [ direction ] = next ? offset : ( offset - ( lineSize [ direction ] ) ) ; scrollLength = 0 ; if ( i === 0 ) { scrollLength = lineSize [ direction ] ; if ( endReached && ( ( <mask> && ! alignment ) || ( ! next && alignment ) ) ) { scrollLength += direction ? ( margins [ 0 ] + margins [ 2 ] ) : ( margins [ 3 ] + margins [ 1 ] ) ; } else { scrollLength += spacing [ direction ] ; } } lineNode . set = { size : lineNode . size , translate : translate , scrollLength : scrollLength } ; lineOffset += lineNode . size [ lineDirection ] + spacing [ lineDirection ] + ( justifyOffset * 2 ) ; } // Set nodes for ( i = 0 ; i < lineNodes . length ; i ++ ) { lineNode = next ? lineNodes [ i ] : lineNodes [ ( lineNodes . length - 1 ) - i ] ; context . set ( lineNode . node , lineNode . set ) ; } // Prepare for next line lineNodes = [ ] ; return lineSize [ direction ] + spacing [ direction ] ; }