
@startuml
hide empty methods
hide empty fields


class "**BoxesDocument**" as BoxesDocument {
        StringType title
        LayoutElement boxes
        IntegerType height
        IntegerType width
        ConnectionElem[] connections
        IntegerType globalPadding
        IntegerType minBoxMargin
        IntegerType minConnectorMargin
        Map<BoxFormat> formats
        ConnectionLine[] verticalRoads
        ConnectionLine[] horizontalRoads
}
note top: Internal model to describe the\nlayout if the boxes chart

 

class "**LayoutElement**" as LayoutElement {
        StringType id
        StringType caption
        StringType text1
        StringType text2
        LayoutElemContainer vertical
        LayoutElemContainer horizontal
        IntegerType x
        IntegerType y
        IntegerType width
        IntegerType height
        IntegerType centerX
        IntegerType centerY
        BoxFormat format
        LayoutElemConnection[] connections
        IntegerType leftYToStart
        IntegerType rightYToStart
        IntegerType topXToStart
        IntegerType bottomXToStart
        StringType[] tags
}

 

class "**ConnectionElem**" as ConnectionElem {
        LayoutElement from
        LayoutElement to
        BooleanType sourceArrow
        BooleanType destArrow
        LineDef format
        ConnectionLine[] parts
}

 


class "**BoxFormat**" as BoxFormat {
        IntegerType padding
        FontDef fontCaption
        FontDef fontText1
        FontDef fontText2
        LineDef border
        FillDef fill
        IntegerType minBoxMargin
        BooleanType verticalTxt
}

 

class "**ConnectionLine**" as ConnectionLine {
        IntegerType startX
        IntegerType startY
        IntegerType endX
        IntegerType endY
        BooleanType movedOut
}

 

class "**LayoutElemContainer**" as LayoutElemContainer {
        IntegerType x
        IntegerType y
        IntegerType width
        IntegerType height
        LayoutElement[] elems
}

 

class "**LayoutElemConnection**" as LayoutElemConnection {
        StringType destId
        BooleanType sourceArrow
        BooleanType destArrow
        StringType[] tags
}

 

class "**FontDef**" as FontDef {
        IntegerType size
        StringType font
        FontDefTypeEnum type
        FontDefWeightEnum weight
        NumberType lineHeight
        StringType color
        FontDefAlignedEnum aligned
        IntegerType spaceTop
        IntegerType spaceBottom
        IntegerType maxLenBeforeBreak
}
note top: Defines the font a text

 

enum "FontDefTypeEnum" as FontDefTypeEnum {
    NORMAL
    ITALIC
}

enum "FontDefWeightEnum" as FontDefWeightEnum {
    NORMAL
    BOLD
}

enum "FontDefAlignedEnum" as FontDefAlignedEnum {
    LEFT
    CENTER
    RIGHT
}

class "**LineDef**" as LineDef {
        IntegerType width
        LineDefStyleEnum style
        StringType color
        NumberType opacity
}
note top: Defines how the border of\nthe box looks like

 

enum "LineDefStyleEnum" as LineDefStyleEnum {
    SOLID
    DOTTED
    DASHED
}

class "**FillDef**" as FillDef {
        StringType color
        NumberType opacity
}
note top: Defines the fill of the\nbox

 


    

BoxesDocument  *--  LayoutElement



BoxesDocument "0" *-- "n" ConnectionElem




BoxesDocument  *--  BoxFormat

BoxesDocument "0" *-- "n" ConnectionLine

BoxesDocument "0" *-- "n" ConnectionLine

    




LayoutElement  *--  LayoutElemContainer

LayoutElement  *--  LayoutElemContainer







LayoutElement  *--  BoxFormat

LayoutElement "0" *-- "n" LayoutElemConnection






    
ConnectionElem  *--  LayoutElement

ConnectionElem  *--  LayoutElement



ConnectionElem  *--  LineDef

ConnectionElem "0" *-- "n" ConnectionLine

    
    

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  LineDef

BoxFormat  *--  FillDef



    





    




LayoutElemContainer "0" *-- "n" LayoutElement

    




    










    
    
    
    




    
    



footer \ngenerated with yacg (https://github.com/OkieOth/yacg),\n(template: plantUml.mako v1.1.0)\npowered by plantuml (https://plantuml.com/)
@enduml