view doodle/fig/diagram_elements.d @ 54:30ecedfe2ce2

Partial palette support
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 21:07:47 +0930
parents doodle/fig/fig.d@1b4c9ba58673
children c63719604adb
line wrap: on
line source

module doodle.fig.diagram_elements;

private {
    import doodle.tk.geometry;
    import doodle.cairo.routines;
}

abstract class DiagramElement {
    Rectangle bounds() const;

    void draw(in Rectangle damage, scope Context cr) const;

    private {
        GraphElement _container;
    }
}

abstract class SemanticModelBridge {
};

abstract class GraphElement : DiagramElement {
    // Link to model via bridge goes here
    private {
        SemanticModelBridge _modelBridge;
        GraphConnector[] _anchorages;
    }
}

final class GraphConnector {
}

final class GraphNode : GraphElement {
}

final class GraphEdge : GraphElement {
    private {
        GraphConnector[2] _anchors;
    }
}

abstract class LeafElement : DiagramElement {
}

final class TextElement : LeafElement {
}

abstract class GraphicPrimitive : LeafElement {
}

final class PolylinePrimitive : GraphicPrimitive {
    private {
        Point[] _waypoints;
    }
}

final class RectanglePrimitive : GraphicPrimitive {
    override void draw(in Rectangle damage, scope Context cr) const {
        rectangle(cr, bounds);
    }
}