forked from thjaeger/easystroke
-
Notifications
You must be signed in to change notification settings - Fork 1
/
trace.h
55 lines (48 loc) · 1.52 KB
/
trace.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* Copyright (c) 2008-2009, Thomas Jaeger <[email protected]>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef __TRACE_H__
#define __TRACE_H__
#include "util.h"
#include <glibmm/i18n.h>
#include <exception>
struct DBusException: public std::exception {
virtual const char* what() const throw() { return _("Connection to DBus failed"); }
};
class Trace {
public:
struct Point { float x; float y; };
private:
Point last;
bool active;
protected:
virtual void draw(Point p, Point q) = 0;
virtual void start_() = 0;
virtual void end_() = 0;
public:
Trace() : active(false) {}
void draw(Point p) { draw(last, p); last = p; }
void start(Point p);
void end();
virtual void timeout() {}
virtual ~Trace() {}
};
class Trivial : public Trace {
virtual void draw(Point p, Point q) {}
virtual void start_() {}
virtual void end_() {}
public:
};
#endif