view doodle/dia/tool.d @ 57:9960c4fbd0dd

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

module doodle.dia.tool;

public {
    import cairo.Context;
    import doodle.dia.icanvas;
    import doodle.tk.events;
}

/*
interface IToolStack {
    void push(Tool tool);
    void pop();
    void replace(Tool tool);
}
*/

abstract class Tool {
    /*
    enum Response {
    START, CONTINUE, FINISH

    }
    */

    /*
    abstract bool isSticky();
    abstract bool isReplaceable();
    */

    /*
    abstract void start(IToolStack tool_stack);
    abstract void stop(IToolStack tool_stack);
    */

    bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) { return false; }
    bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event) { return false; }
    bool handleMotion(scope IViewport viewport, in MotionEvent event) { return false; }
    bool handleScroll(scope IViewport viewport, in ScrollEvent event) { return false; }
    //bool handleEnter(scope viewport, CrossingEvent event) { return false; }
    //bool handleLeave(scope viewport, CrossingEvent event) { return false; }
    //bool handleFocusIn(scope viewport, FocusEvent event) { return false; }
    //bool handleFocusOut(scope viewport, FocusEvent event) { return false; }
    bool handleKeyPress(scope IViewport viewport, in KeyEvent event) { return false; }
    bool handleKeyRelease(scope IViewport viewport, in KeyEvent event) { return false; }

    void draw(in IViewport viewport,
              in Rectangle pixelDamage, scope Context pixelCr) const { }
}