using System; namespace Assistance { [Flags] public enum Modifiers { None = 0, Interpolation = 1, Guideline = 2, Multiline = 4 }; public class Tool { public Modifiers getAvailableModifiers() { return Modifiers.None; } public void activate() { } public void keyPress(Gdk.Key key, InputState state) { } public void keyRelease(Gdk.Key key, InputState state) { } public void buttonPress(Gdk.Device device, uint button, InputState state) { } public void buttonRelease(Gdk.Device device, uint button, InputState state) { } public bool paintBegin() { return false; } public void paintTrackBegin(Track track) { } public void paintTrackPoint(Track track) { } public void paintTrackEnd(Track track) { } public bool paintApply() { return false; } public void paintCancel() { } public void draw(Cairo.Context context) { } public void deactivate() { } } } /* TODO: ////////////////////////////////////////// // deprecated ////////////////////////////////////////// public static readonly Pen pen = new Pen("Dark Green", 3.0); public static readonly Pen penSpecial = new Pen("Blue", 3.0); public static readonly Pen penPreview = new Pen("Dark Green", 1.0, 0.25); public void draw(Cairo.Context context, bool preview = false) { if (preview) { if (points.Count < 2) return; context.Save(); penPreview.apply(context); context.MoveTo(points[0].point.x, points[0].point.y); for(int i = 1; i < points.Count; ++i) context.LineTo(points[i].point.x, points[i].point.y); context.Stroke(); context.Restore(); } else { context.Save(); pen.apply(context); foreach(TrackPoint p in points) { double t = p.keyState.howLongPressed(Gdk.Key.m) + p.buttonState.howLongPressed(3); double w = p.pressure*pen.width + 5.0*t; context.Arc(p.point.x, p.point.y, 2.0*w, 0.0, 2.0*Math.PI); context.Fill(); } context.Restore(); } } public Rectangle getBounds() { if (points.Count == 0) return new Rectangle(); Rectangle bounds = new Rectangle(points[0].point); foreach(TrackPoint p in points) bounds = bounds.expand(p.point); return bounds.inflate(Math.Max(pen.width, penPreview.width) + 2.0); } */