include "primitives.alh"

SimpleAttribute Natural {
    name = "Natural"
}
SimpleAttribute String {
    name = "String"
}

Class GraphicalElement {
    name = "GraphicalElement"
    x : Natural
    y : Natural
    __asid? : String
}

Class Group : GraphicalElement {
    name = "Group"
}

Class LineElement : GraphicalElement {
    name = "LineElement"
    lineWidth : Natural
    lineColour : String
}

Class Text : LineElement {
    name = "Text"
    text : String
}

Class Line : LineElement {
    name = "Line"
    targetX : Natural
    targetY : Natural
}

Class Shape : LineElement {
    name = "Shape"
    fillColour : String
    width : Natural
    height : Natural
}

Class Figure : GraphicalElement {
    name = "Figure"
    width : Natural
    height : Natural
}

Class SVG {
    name = "SVG"
    data : String
}

Class Rectangle : Shape {
    name = "Rectangle"
}

Class Ellipse : Shape {
    name = "Ellipse"
}

Association contains (Group, GraphicalElement) {
    name = "contains"
}
Association renders (Figure, SVG) {
    name = "renders"
    source_lower_cardinality = 1
    target_lower_cardinality = 1
    target_upper_cardinality = 1
}
