📄 readme.tree_mgt
字号:
TreeFloor is a SortedSet( or SortedMap ) of TreeNode whose TreeNodeID.depth are the same.TreeTrunk is a List of TreeFloors.boolean TreeFloor.coversBarely( TimeBoundingBox WinTimeRange ){ return TreeFloor.firstTimeBox().contains( WinTimeRange.earliest_time ) && TreeFloor.lastTimeBox().contains( WinTimeRange.latest_time ); }Define TreeFloor TreeTrunk.Prune( TimeBoundingBox WinTimeRange ){ for ( TreeFloor = lowest_TreeFloor; TreeFloor <= top_TreeFloor; TreeFloor++ ) { if ( TreeFloor.coversBarely( WinTimeRange ) return TreeFloor else { do { if ( TreeFloor.firstTimeBox() .contains( WinTimeRange.earliest_time ) ) TreeFloor.remove( TreeFloor.first() ); if ( TreeFloor.lastTimeBox() .contains( WinTimeRange.latest_time ) ) TreeFloor.remove( TreeFloor.last() ); } while ( ! TreeFloor.coversBarely( WinTimeRange ) ) } } return null; // if the code gets here, it means error}O, Assume the TreeTrunk's TreeRoot at depth Dmax, and the leafs are all at depth 0. The TreeTrunk is initialized to a depth D_0, with all TreeNode being read from the disk into the TreeTrunk.A, Zoom In: WinTimeRange is contracted. -- Prune all the TreeFloors from lowest_TreeFloor to top_TreeFloor till a TreeFloor which barely covers() WinTimeRange. i.e. calling TreeTrunk.Prune(). -- grows from the lowest_TreeFloor to 1 more level downward.B, Zoom Out: WinTimeRange is enlarged. -- if the lowest_TreeFloor covers() WinTimeRange, do nothing. -- if not, search from the lowest_TreeFloor to the top_TreeFloor for the TreeFloor that barely covers() WinTimeRange -- grows from that TreeFloor to 1 more level downward. -- remove all the TreeFloors under the last floor grown.C, Scroll: WinTimeRange has same width but different ends. -- search from the lowest_TreeFloor to the top_TreeFloor for the first TreeFloor that totally covers() WinTimeRange. -- grows from that TreeFloor to 1 more level downward.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -