@startuml
SPainter "1" *-- "1" SPen
SPainter "1" *-- "1" SBrush
SPainter "1" *-- "1" SFont
SPen "1" -- "1" SColor
SPen "1" -- "1" SGradient
SBrush "1" -- "1" SColor
SBrush "1" -- "1" SGradient

class SPen{
    color: SColor
    dashOffset: number
    lineCapStyle: SLineCapStyle
    lineDash: number[] | null
    lineJoinStyle: SLineJoinStyle
    lineWidth: number
    miterLimit: number
}

class SBrush{
    color: SColor
    type: SBrushType
    gradient: SGradient
}

class SColor{
    alpha: number
    red: number
    green: number
    blue: number
}

class SGradient{
    end: SPoint
    start: SPoint
    stopList: SGradientStop[]
    x1: number
    x2: number
    y1: number
    y2: number
}

class SFont{
    name: string
    size: number
    textAlign: STextAlign
    textBaseLine: STextBaseLine
    textDirection: STextDirection
}

@enduml
