
@startuml
hide empty methods
hide empty fields


class "**BoxesDocument**" as BoxesDocument {
        StringType title
        StringType titleFormat
        Legend legend
        LayoutElement boxes
        IntegerType height
        IntegerType width
        ConnectionElem[] connections
        StringType[] connectedElems
        IntegerType lineDist
        IntegerType globalPadding
        IntegerType minBoxMargin
        IntegerType minConnectorMargin
        Map<BoxFormat> formats
        Map<ImageDef> images
        ConnectionLine[] verticalRoads
        ConnectionLine[] horizontalRoads
        ConnectionNode[] connectionNodes
        ConnectionLine[] horizontalLines
        ConnectionLine[] verticalLines
        CommentContainer[] comments
        IntegerType commentMarkerRadius
        IntegerType legendEndY
        IntegerType commentCurrent
}
note top: Internal model to describe the\nlayout if the boxes chart

 

class "**LayoutElement**" as LayoutElement {
        StringType id
        StringType caption
        StringType text1
        StringType text2
        Comment comment
        ImageContainer image
        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
        IntegerType xTextBox
        IntegerType yTextBox
        IntegerType widthTextBox
        IntegerType heightTextBox
        BooleanType dontBlockConPaths
        StringType[] tags
        StringType dataLink
}

 

class "**ConnectionElem**" as ConnectionElem {
        StringType from
        StringType to
        BooleanType sourceArrow
        BooleanType destArrow
        LineDef format
        ConnectionLine[] parts
        IntegerType connectionIndex
        Comment comment
}

 


class "**BoxFormat**" as BoxFormat {
        IntegerType padding
        FontDef fontCaption
        FontDef fontText1
        FontDef fontText2
        FontDef fontComment
        FontDef fontCommentMarker
        LineDef line
        IntegerType cornerRadius
        FillDef fill
        IntegerType minBoxMargin
        BooleanType widthOfParent
        IntegerType fixedWidth
        IntegerType fixedHeight
        BooleanType verticalTxt
}

 


class "**ConnectionLine**" as ConnectionLine {
        IntegerType startX
        IntegerType startY
        IntegerType endX
        IntegerType endY
        StringType srcLayoutId
        StringType destLayoutId
        IntegerType connectionIndex
        IntegerType lineIndex
        LineDef format
        BooleanType isStart
        BooleanType isEnd
}

 

class "**ConnectionNode**" as ConnectionNode {
        IntegerType x
        IntegerType y
        StringType nodeId
        StringType boxId
        ConnectionEdge[] edges
}
note top: helper type for calculating the\nconnections between elements

 

class "**CommentContainer**" as CommentContainer {
        StringType text
        StringType label
        CommentFormat format
        IntegerType markerX
        IntegerType markerY
        IntegerType markerTextWidth
        IntegerType markerTextHeight
        IntegerType textWidth
        IntegerType textHeight
        BooleanType customMarker
}
note top: all parameters to render the\ncomments in the graphic

 

class "**ImageContainer**" as ImageContainer {
        IntegerType x
        IntegerType y
        IntegerType width
        IntegerType height
        IntegerType marginTopBottom
        IntegerType marginLeftRight
        StringType imgId
}

 

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

 

class "**LayoutElemConnection**" as LayoutElemConnection {
        StringType destId
        Comment comment
        BooleanType sourceArrow
        BooleanType destArrow
        LineDef format
        StringType[] tags
}

 

class "**CommentFormat**" as CommentFormat {
        FontDef fontText
        FontDef fontMarker
        LineDef line
        FillDef fill
}

 

class "**ConnectionEdge**" as ConnectionEdge {
        IntegerType x
        IntegerType y
        StringType destNodeId
        IntegerType weight
}
note top: edge type to store edges\non a connection node

 

class "**Comment**" as Comment {
        StringType text
        StringType label
        StringType format
}
note top: Object to define comments in\nthe diagrams

 

class "**FontDef**" as FontDef {
        IntegerType size
        StringType font
        FontDefTypeEnum type
        FontDefWeightEnum weight
        NumberType lineHeight
        StringType color
        FontDefAlignedEnum aligned
        IntegerType spaceTop
        IntegerType spaceBottom
        IntegerType maxLenBeforeBreak
        FontDefAnchorEnum anchor
}
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
}

enum "FontDefAnchorEnum" as FontDefAnchorEnum {
    MIDDLE
    LEFT
    RIGHT
}

class "**LineDef**" as LineDef {
        NumberType 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

 

class "**ImageDef**" as ImageDef {
        StringType description
        IntegerType width
        IntegerType height
        StringType base64
        IntegerType marginTopBottom
        IntegerType marginLeftRight
        StringType base64Src
}
note top: parameters of an image to\nbe displayed in the SVG

 


    


BoxesDocument  *--  Legend

BoxesDocument  *--  LayoutElement



BoxesDocument "0" *-- "n" ConnectionElem






BoxesDocument  *--  BoxFormat

BoxesDocument  *--  ImageDef

BoxesDocument "0" *-- "n" ConnectionLine

BoxesDocument "0" *-- "n" ConnectionLine

BoxesDocument "0" *-- "n" ConnectionNode

BoxesDocument "0" *-- "n" ConnectionLine

BoxesDocument "0" *-- "n" ConnectionLine

BoxesDocument "0" *-- "n" CommentContainer




    




LayoutElement  *--  Comment

LayoutElement  *--  ImageContainer

LayoutElement  *--  LayoutElemContainer

LayoutElement  *--  LayoutElemContainer







LayoutElement  *--  BoxFormat

LayoutElement "0" *-- "n" LayoutElemConnection












    




ConnectionElem  *--  LineDef

ConnectionElem "0" *-- "n" ConnectionLine


ConnectionElem  *--  Comment

    
    

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  FontDef

BoxFormat  *--  LineDef


BoxFormat  *--  FillDef






    
    








ConnectionLine  *--  LineDef



    




ConnectionNode "0" *-- "n" ConnectionEdge

    


CommentContainer  *--  CommentFormat








    







    




LayoutElemContainer "0" *-- "n" LayoutElement

    

LayoutElemConnection  *--  Comment



LayoutElemConnection  *--  LineDef


    
CommentFormat  *--  FontDef

CommentFormat  *--  FontDef

CommentFormat  *--  LineDef

CommentFormat  *--  FillDef

    




    



    











    
    
    
    
    




    
    


    








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