<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="372px" preserveAspectRatio="none" style="width:410px;height:372px;background:#F0F0F0;" version="1.1" viewBox="0 0 410 372" width="410px" zoomAndPan="magnify"><defs><filter height="300%" id="f9myy279dbw6j" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[0776035cf1819bca93efef61eaa62841]
class gui::ItemNode--><rect fill="#FEFECE" filter="url(#f9myy279dbw6j)" height="73.6094" id="gui::ItemNode" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="6" y="8"/><ellipse cx="21" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M23.9688,29.6406 Q23.3906,29.9375 22.75,30.0781 Q22.1094,30.2344 21.4063,30.2344 Q18.9063,30.2344 17.5781,28.5938 Q16.2656,26.9375 16.2656,23.8125 Q16.2656,20.6875 17.5781,19.0313 Q18.9063,17.375 21.4063,17.375 Q22.1094,17.375 22.75,17.5313 Q23.4063,17.6875 23.9688,17.9844 L23.9688,20.7031 Q23.3438,20.125 22.75,19.8594 Q22.1563,19.5781 21.5313,19.5781 Q20.1875,19.5781 19.5,20.6563 Q18.8125,21.7188 18.8125,23.8125 Q18.8125,25.9063 19.5,26.9844 Q20.1875,28.0469 21.5313,28.0469 Q22.1563,28.0469 22.75,27.7813 Q23.3438,27.5 23.9688,26.9219 L23.9688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="35" y="28.1543">gui::ItemNode</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="124" y1="40" y2="40"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="12" y="54.2104">gui::Item*</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="43" x="12" y="67.0151">int level</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="124" y1="73.6094" y2="73.6094"/><!--MD5=[3fdf194e7134626e874d5533443356b6]
class gui::ItemTree--><rect fill="#FEFECE" filter="url(#f9myy279dbw6j)" height="73.6094" id="gui::ItemTree" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="160" y="8"/><ellipse cx="189.85" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M189.9594,19.3438 L188.8031,24.4219 L191.1313,24.4219 L189.9594,19.3438 Z M188.475,17.1094 L191.4594,17.1094 L194.8188,29.5 L192.3656,29.5 L191.6,26.4375 L188.3188,26.4375 L187.5688,29.5 L185.1313,29.5 L188.475,17.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="207.15" y="28.1543">gui::ItemTree</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="304" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="304" y1="48" y2="48"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="81" x="166" y="62.2104">bool hasNext()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="166" y="75.0151">gui::ItemNode getNext()</text><!--MD5=[52f44d732e60a5df01fcd1f11df5ad8d]
class TraverseMode--><rect fill="#FEFECE" filter="url(#f9myy279dbw6j)" height="73.6094" id="TraverseMode" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="172.5" y="288"/><ellipse cx="187.5" cy="304" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M191.6094,310 L183.8906,310 L183.8906,297.6094 L191.6094,297.6094 L191.6094,299.7656 L186.3438,299.7656 L186.3438,302.4375 L191.1094,302.4375 L191.1094,304.5938 L186.3438,304.5938 L186.3438,307.8438 L191.6094,307.8438 L191.6094,310 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="201.5" y="308.1543">TraverseMode</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="173.5" x2="291.5" y1="320" y2="320"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="178.5" y="334.2104">PreOrder</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="58" x="178.5" y="347.0151">PostOrder</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="173.5" x2="291.5" y1="353.6094" y2="353.6094"/><!--MD5=[2cede1678ac832b92b66ac6c3f666cf3]
class gui::DepthFirstItemTree--><rect fill="#FEFECE" filter="url(#f9myy279dbw6j)" height="86.4141" id="gui::DepthFirstItemTree" style="stroke: #A80036; stroke-width: 1.5;" width="334" x="65.5" y="142"/><ellipse cx="154.75" cy="158" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M157.7188,163.6406 Q157.1406,163.9375 156.5,164.0781 Q155.8594,164.2344 155.1563,164.2344 Q152.6563,164.2344 151.3281,162.5938 Q150.0156,160.9375 150.0156,157.8125 Q150.0156,154.6875 151.3281,153.0313 Q152.6563,151.375 155.1563,151.375 Q155.8594,151.375 156.5,151.5313 Q157.1563,151.6875 157.7188,151.9844 L157.7188,154.7031 Q157.0938,154.125 156.5,153.8594 Q155.9063,153.5781 155.2813,153.5781 Q153.9375,153.5781 153.25,154.6563 Q152.5625,155.7188 152.5625,157.8125 Q152.5625,159.9063 153.25,160.9844 Q153.9375,162.0469 155.2813,162.0469 Q155.9063,162.0469 156.5,161.7813 Q157.0938,161.5 157.7188,160.9219 L157.7188,163.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="175.25" y="162.1543">gui::DepthFirstItemTree</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="66.5" x2="398.5" y1="174" y2="174"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="66.5" x2="398.5" y1="182" y2="182"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="322" x="71.5" y="196.2104">DepthFirstItemTree(gui::Item *root, TraverseMode mode)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="81" x="71.5" y="209.0151">bool hasNext()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="71.5" y="221.8198">gui::ItemNode getNext()</text><!--MD5=[a74cdc850cfb18772b9e2c76fb19c9d1]
reverse link gui::ItemTree to gui::DepthFirstItemTree--><path d="M232.5,102.62 C232.5,115.66 232.5,129.31 232.5,141.62 " fill="none" id="gui::ItemTree<-gui::DepthFirstItemTree" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="225.5,102.26,232.5,82.26,239.5,102.26,225.5,102.26" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[36616bbc63dc63db2ce22b29036c1075]
reverse link gui::DepthFirstItemTree to TraverseMode--><path d="M232.5,241.5 C232.5,257.06 232.5,273.57 232.5,287.7 " fill="none" id="gui::DepthFirstItemTree<-TraverseMode" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#F0F0F0" points="232.5,228.15,228.5,234.15,232.5,240.15,236.5,234.15,232.5,228.15" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[705d74553e833ae197fa7d6724d49367]
@startuml
skinparam BackgroundColor F0F0F0
class gui::ItemNode
{
gui::Item*
int level
}
abstract class gui::ItemTree
{
bool hasNext()
gui::ItemNode getNext()
}
enum TraverseMode
{
PreOrder
PostOrder
}
class gui::DepthFirstItemTree
{
DepthFirstItemTree(gui::Item *root, TraverseMode mode)
bool hasNext()
gui::ItemNode getNext()
}
gui::ItemTree <|- - gui::DepthFirstItemTree
gui::DepthFirstItemTree o- - TraverseMode
@enduml
PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>