view doodle/fig/diagram_layer.d @ 57:9960c4fbd0dd

I is for Interface
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 22:01:54 +0930
parents 30ecedfe2ce2
children c63719604adb
line wrap: on
line source

module doodle.fig.diagram_layer;

public {
    import doodle.dia.icanvas;
    import doodle.fig.diagram_elements;
    import std.array;
}

class DiagramLayer : Layer {
    this(in string name) {
        super(name);
    }

    void add(DiagramElement element) {
        _elements ~= element;
    }

    // Layer overrides:

    override Rectangle bounds() const {
        return Rectangle.DEFAULT;
    }

    override void draw(in IViewport viewport,
                       in Rectangle pixelDamage, scope Context pixelCr,
                       in Rectangle modelDamage, scope Context modelCr) const {
        foreach (e; _elements) {
            if ((e.bounds & modelDamage).valid) {
                e.draw(modelDamage, modelCr);
            }
        }
    }

    private {
        // Root elements in z-buffer order, ie we draw in forward
        // order thru the array
        DiagramElement[] _elements;
    }
}