Mercurial > projects > doodle
comparison tk/types.d @ 6:a27d2093991c
Checkpoint
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sat, 11 Jul 2009 20:44:14 +0930 |
parents | 8a39b13cd3e6 |
children | 936feb16eed4 |
comparison
equal
deleted
inserted
replaced
5:8a39b13cd3e6 | 6:a27d2093991c |
---|---|
1 module tk.types; | 1 module tk.types; |
2 | 2 |
3 private import std.string; | 3 private import std.string; |
4 private import std.typecons; | 4 private import std.typecons; |
5 private import std.algorithm; | 5 private import std.algorithm; |
6 | |
7 /* | |
8 enum ButtonPress { | |
9 SINGLE, | |
10 DOUBLE, | |
11 TRIPLE, | |
12 RELEASE | |
13 } | |
14 | |
15 string toString(in ButtonPress bp) { | |
16 switch (bp) { | |
17 case ButtonPress.SINGLE: return "SINGLE"; | |
18 case ButtonPress.DOUBLE: return "DOUBLE"; | |
19 case ButtonPress.TRIPLE: return "TRIPLE"; | |
20 case ButtonPress.RELEASE: return "RELEASE"; | |
21 default: return std.string.format("<UNKNOWN ButtonPress: %s>", bp); | |
22 } | |
23 } | |
24 | |
25 enum ButtonNumber { | |
26 BUTTON_1, | |
27 BUTTON_2, | |
28 BUTTON_3, | |
29 BUTTON_4, | |
30 BUTTON_5, | |
31 } | |
32 | |
33 string toString(in ButtonNumber bn) { | |
34 switch (bn) { | |
35 case ButtonNumber.BUTTON_1: return "BUTTON_1"; | |
36 case ButtonNumber.BUTTON_2: return "BUTTON_2"; | |
37 case ButtonNumber.BUTTON_3: return "BUTTON_3"; | |
38 case ButtonNumber.BUTTON_4: return "BUTTON_4"; | |
39 case ButtonNumber.BUTTON_5: return "BUTTON_5"; | |
40 default: return std.string.format("<UNKNOWN ButtonNumber: %s>", bn); | |
41 } | |
42 } | |
43 | |
44 enum ScrollDirection { | |
45 UP, | |
46 DOWN, | |
47 LEFT, | |
48 RIGHT | |
49 } | |
50 | |
51 string toString(in ScrollDirection sd) { | |
52 switch (sd) { | |
53 case ScrollDirection.UP: return "UP"; | |
54 case ScrollDirection.DOWN: return "DOWN"; | |
55 case ScrollDirection.LEFT: return "LEFT"; | |
56 case ScrollDirection.RIGHT: return "RIGHT"; | |
57 default: return std.string.format("<UNKNOWN ScrollDirection: %s>", sd); | |
58 } | |
59 } | |
60 | |
61 enum Modifier { | |
62 SHIFT, | |
63 CAPS_LOCK, | |
64 CONTROL, | |
65 ALT, | |
66 NUM_LOCK, | |
67 META, | |
68 SCROLL_LOCK, | |
69 BUTTON_1, | |
70 BUTTON_2, | |
71 BUTTON_3, | |
72 BUTTON_4, | |
73 BUTTON_5 | |
74 } | |
75 | |
76 string toString(in Modifier m) { | |
77 switch (m) { | |
78 case Modifier.SHIFT: return "SHIFT"; | |
79 case Modifier.CAPS_LOCK: return "CAPS_LOCK"; | |
80 case Modifier.CONTROL: return "CONTROL"; | |
81 case Modifier.ALT: return "ALT"; | |
82 case Modifier.NUM_LOCK: return "NUM_LOCK"; | |
83 case Modifier.META: return "META"; | |
84 case Modifier.SCROLL_LOCK: return "SCROLL_LOCK"; | |
85 case Modifier.BUTTON_1: return "BUTTON_1"; | |
86 case Modifier.BUTTON_2: return "BUTTON_2"; | |
87 case Modifier.BUTTON_3: return "BUTTON_3"; | |
88 case Modifier.BUTTON_4: return "BUTTON_4"; | |
89 case Modifier.BUTTON_5: return "BUTTON_5"; | |
90 default: return std.string.format("<UNKNOWN Modifier: %s>", m); | |
91 } | |
92 } | |
93 */ | |
94 | 6 |
95 mixin(defineEnum!("ButtonPress", | 7 mixin(defineEnum!("ButtonPress", |
96 "SINGLE", "DOUBLE", "TRIPLE", "RELEASE")); | 8 "SINGLE", "DOUBLE", "TRIPLE", "RELEASE")); |
97 mixin(defineEnum!("ButtonNumber", | 9 mixin(defineEnum!("ButtonNumber", |
98 "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); | 10 "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); |
100 "UP", "DOWN", "LEFT", "RIGHT")); | 12 "UP", "DOWN", "LEFT", "RIGHT")); |
101 mixin(defineEnum!("Modifier", | 13 mixin(defineEnum!("Modifier", |
102 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", | 14 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", |
103 "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); | 15 "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); |
104 | 16 |
105 struct Mask2 { | 17 class Mask { |
106 this(in Modifier[] modifiers) { | 18 this(in Modifier[] modifiers) { |
107 _modifiers = modifiers.dup; | 19 _modifiers = modifiers.dup; |
108 } | 20 } |
109 | 21 |
110 string toString() const { | 22 override string toString() const { |
111 string s; | 23 string s; |
112 | 24 |
113 foreach (Modifier m; _modifiers) { | 25 foreach (Modifier m; _modifiers) { |
26 if (s != "") s ~= "|"; | |
114 s ~= enumToString(m); | 27 s ~= enumToString(m); |
115 } | 28 } |
116 | 29 |
117 return s; | 30 return s; |
118 } | 31 } |
134 private { | 47 private { |
135 Modifier[] _modifiers; | 48 Modifier[] _modifiers; |
136 } | 49 } |
137 } | 50 } |
138 | 51 |
52 /* | |
139 class Mask { | 53 class Mask { |
140 this() { | 54 this() { |
141 } | 55 } |
142 | 56 |
143 this(in Mask other) { | 57 this(in Mask other) { |
149 bool query(Modifier modifier) const { return cast(bool)(mBits & to_bit(modifier)); } | 63 bool query(Modifier modifier) const { return cast(bool)(mBits & to_bit(modifier)); } |
150 | 64 |
151 override string toString() const { | 65 override string toString() const { |
152 Modifier m = Modifier.SHIFT; | 66 Modifier m = Modifier.SHIFT; |
153 return enumToString(m); | 67 return enumToString(m); |
154 /* | |
155 return format("Mask: %s", m); | |
156 */ | |
157 //return format("%d", mBits); | |
158 } | 68 } |
159 | 69 |
160 private { | 70 private { |
161 static int to_bit(Modifier modifier) { return 1 << cast(int)modifier; } | 71 static int to_bit(Modifier modifier) { return 1 << cast(int)modifier; } |
162 int mBits; | 72 int mBits; |
163 } | 73 } |
164 } | 74 } |
75 */ |