@startuml abstract SPaintEngine SPainter *-- SPaintEngine SCanvasPaintEngine ..|> SPaintEngine SSvgPaintEngine ..|> SPaintEngine SPaintEngine "1" -- "n" SPaintState SPainter "1" *-- "1" SFont class SFont{ name: string size: number textAlign: STextAlign textBaseLine: STextBaseLine textDirection: STextDirection constructor(string, number):void } class SPaintState{ brush: SBrush composite: SComposite font: SFont matrix: SMatrix pen: SPen constructor(SPaintState): void } @enduml