-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommand_tile_owner.h
More file actions
74 lines (53 loc) · 1.29 KB
/
Copy pathcommand_tile_owner.h
File metadata and controls
74 lines (53 loc) · 1.29 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef COMMAND_TILE_OWNER_H
#define COMMAND_TILE_OWNER_H
#include "tiles.h"
class command_tile_owner {
public:
struct bounds_t {
double x1, y1, x2, y2;
};
virtual
~command_tile_owner();
virtual std::unique_ptr<command_tile_drag>
drag_begin(double x, double y) = 0;
virtual void
drag_hover_enter(double x, double y, command_tile_drag * drag) = 0;
virtual void
drag_hover_leave(command_tile_drag * drag) = 0;
virtual void
drag_finish(double x, double y, std::unique_ptr<command_tile_drag> drag) = 0;
virtual void
redraw(double global_phase) = 0;
virtual void
set_bounds(double x1, double y1, double x2, double y2) = 0;
virtual const bounds_t &
bounds() const noexcept = 0;
virtual void
animate(double now) = 0;
inline bool
within(double x, double y) const noexcept
{
const bounds_t & b = bounds();
return x >= b.x1 && x < b.x2 && y >= b.y1 && y < b.y2;
}
};
class command_tile_drag {
public:
virtual
~command_tile_drag();
virtual void
undo() = 0;
virtual std::unique_ptr<command_point>
consume() = 0;
virtual void
move(double x, double y) = 0;
virtual command_point *
content() = 0;
virtual const layout_extents &
extents() const = 0;
virtual void
draw(double global_phase) const = 0;
virtual void
set_display_args(tile_display_args_t args) = 0;
};
#endif