Mercurial > projects > doodle
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/fig/diagram_elements.d Sun Aug 08 21:07:47 2010 +0930 @@ -0,0 +1,60 @@ +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); + } +}