<?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:413px;height:372px;" version="1.1" viewBox="0 0 413 372" width="413px" zoomAndPan="magnify"><defs><filter height="300%" id="fbi96ixapffwh" 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><!--class gui::ItemNode--><rect fill="#FEFECE" filter="url(#fbi96ixapffwh)" 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="44" 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"/><!--class gui::ItemTree--><rect fill="#FEFECE" filter="url(#fbi96ixapffwh)" height="73.6094" id="gui::ItemTree" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="160.5" y="8"/><ellipse cx="189.45" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M189.5594,19.3438 L188.4031,24.4219 L190.7313,24.4219 L189.5594,19.3438 Z M188.075,17.1094 L191.0594,17.1094 L194.4188,29.5 L191.9656,29.5 L191.2,26.4375 L187.9188,26.4375 L187.1688,29.5 L184.7313,29.5 L188.075,17.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="83" x="206.55" y="28.1543">gui::ItemTree</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="161.5" x2="305.5" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="161.5" x2="305.5" y1="48" y2="48"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="166.5" y="62.2104">bool hasNext()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="166.5" y="75.0151">gui::ItemNode getNext()</text><!--class TraverseMode--><rect fill="#FEFECE" filter="url(#fbi96ixapffwh)" height="73.6094" id="TraverseMode" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="173.5" y="288"/><ellipse cx="188.5" cy="304" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M192.6094,310 L184.8906,310 L184.8906,297.6094 L192.6094,297.6094 L192.6094,299.7656 L187.3438,299.7656 L187.3438,302.4375 L192.1094,302.4375 L192.1094,304.5938 L187.3438,304.5938 L187.3438,307.8438 L192.6094,307.8438 L192.6094,310 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="88" x="202.5" y="308.1543">TraverseMode</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="174.5" x2="292.5" y1="320" y2="320"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="179.5" y="334.2104">PreOrder</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="58" x="179.5" y="347.0151">PostOrder</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="174.5" x2="292.5" y1="353.6094" y2="353.6094"/><!--class gui::DepthFirstItemTree--><rect fill="#FEFECE" filter="url(#fbi96ixapffwh)" height="86.4141" id="gui::DepthFirstItemTree" style="stroke: #A80036; stroke-width: 1.5;" width="337" x="65" y="142"/><ellipse cx="155.75" cy="158" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M158.7188,163.6406 Q158.1406,163.9375 157.5,164.0781 Q156.8594,164.2344 156.1563,164.2344 Q153.6563,164.2344 152.3281,162.5938 Q151.0156,160.9375 151.0156,157.8125 Q151.0156,154.6875 152.3281,153.0313 Q153.6563,151.375 156.1563,151.375 Q156.8594,151.375 157.5,151.5313 Q158.1563,151.6875 158.7188,151.9844 L158.7188,154.7031 Q158.0938,154.125 157.5,153.8594 Q156.9063,153.5781 156.2813,153.5781 Q154.9375,153.5781 154.25,154.6563 Q153.5625,155.7188 153.5625,157.8125 Q153.5625,159.9063 154.25,160.9844 Q154.9375,162.0469 156.2813,162.0469 Q156.9063,162.0469 157.5,161.7813 Q158.0938,161.5 158.7188,160.9219 L158.7188,163.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="176.25" y="162.1543">gui::DepthFirstItemTree</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="66" x2="401" y1="174" y2="174"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="66" x2="401" y1="182" y2="182"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="325" x="71" y="196.2104">DepthFirstItemTree(gui::Item *root, TraverseMode mode)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="71" y="209.0151">bool hasNext()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="71" y="221.8198">gui::ItemNode getNext()</text><!--link gui::ItemTree to gui::DepthFirstItemTree--><path d="M233.5,102.62 C233.5,115.66 233.5,129.31 233.5,141.62 " fill="none" id="gui::ItemTree-gui::DepthFirstItemTree" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="226.5,102.26,233.5,82.26,240.5,102.26,226.5,102.26" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::DepthFirstItemTree to TraverseMode--><path d="M233.5,241.5 C233.5,257.06 233.5,273.57 233.5,287.7 " fill="none" id="gui::DepthFirstItemTree-TraverseMode" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="233.5,228.15,229.5,234.15,233.5,240.15,237.5,234.15,233.5,228.15" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
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.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
Operating System: Linux
OS Version: 5.4.0-56-generic
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>