view doodle/fig/diagram_layer.d @ 100:a274d16ab6ce

struct initialisers
author David Bryant <bagnose@gmail.com>
date Mon, 18 Oct 2010 18:10:02 +1030
parents 66210d8ea37a
children 523269b36711
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, IDiagram {
    this(in string name = "Diagram") {
        super(name);
    }

    // IDiagram overrides:

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

    // Layer overrides:

    override Rectangle bounds() const {
        // Take the union of all diagram element bounds
        /*
        Rectangle bounds = Rectangle.DEFAULT;
        foreach (element; _elements) { bounds = bounds | element.bounds; }
        */
        return Rectangle();
    }

    override void draw(in Rectangle screenDamage, scope Renderer screenRenderer,
                       in Rectangle modelDamage, scope Renderer modelRenderer,
                       in ScreenModel screenModel) const {
        /*
        foreach (e; _elements) {
            if ((e.bounds & modelDamage).valid) {       // FIXME if (intersects(e.bounds, modelDamage))
                e.draw(modelDamage, modelRenderer);
            }
        }
        */
    }

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