use stringcr_t and gain 1/1000 binary size reduction. not thaat much...
[ardour.git] / gtk2_ardour / editing.h
1 #ifndef __gtk_ardour_editing_h__
2 #define __gtk_ardour_editing_h__
3
4 #include <string>
5 #include <map>
6 #include <ardour/types.h>
7
8 // This involves some cpp magic. --taybin
9
10 #define SNAPTYPE(a) /*empty*/
11 #define SNAPMODE(a) /*empty*/
12 #define REGIONLISTSORTTYPE(a) /*empty*/
13 #define MOUSEMODE(a) /*empty*/
14 #define ZOOMFOCUS(a) /*empty*/
15 #define DISPLAYCONTROL(a) /*empty*/
16 #define COLORID(a) /*empty*/
17
18 namespace Editing {
19
20 // SNAPTYPE
21 #undef SNAPTYPE
22 #define SNAPTYPE(a) a,
23 enum SnapType {
24         #include "editing_syms.h"
25 };
26
27 #undef SNAPTYPE
28 #define SNAPTYPE(s) #s,
29 static const char *snaptypestrs[] = {
30         #include "editing_syms.h"
31 };
32 inline const char* enum2str(SnapType m) {return snaptypestrs[m];}
33 SnapType str2snaptype(ARDOUR::stringcr_t);
34
35 #undef SNAPTYPE
36 #define SNAPTYPE(a) /*empty*/
37
38 // SNAPMODE
39 #undef SNAPMODE
40 #define SNAPMODE(a) a,
41 enum SnapMode {
42         #include "editing_syms.h"
43 };
44
45 #undef SNAPMODE
46 #define SNAPMODE(s) #s,
47 static const char *snapmodestrs[] = {
48         #include "editing_syms.h"
49 };
50 inline const char* enum2str(SnapMode m) {return snapmodestrs[m];}
51 SnapMode str2snapmode(ARDOUR::stringcr_t);
52
53 #undef SNAPMODE
54 #define SNAPMODE(a) /*empty*/
55
56 // REGIONLISTSORTTYPE
57 #undef REGIONLISTSORTTYPE
58 #define REGIONLISTSORTTYPE(a) a,
59 enum RegionListSortType {
60         #include "editing_syms.h"
61 };
62
63 #undef REGIONLISTSORTTYPE
64 #define REGIONLISTSORTTYPE(s) #s,
65 static const char *regionlistsorttypestrs[] = {
66         #include "editing_syms.h"
67 };
68 inline const char* enum2str(RegionListSortType m) {return regionlistsorttypestrs[m];}
69 RegionListSortType str2regionlistsorttype(ARDOUR::stringcr_t);
70
71 #undef REGIONLISTSORTTYPE
72 #define REGIONLISTSORTTYPE(a) /*empty*/
73
74 // MOUSEMODE
75 #undef MOUSEMODE
76 #define MOUSEMODE(a) a,
77 enum MouseMode {
78         #include "editing_syms.h"
79 };
80
81 #undef MOUSEMODE
82 #define MOUSEMODE(s) #s,
83 static const char *mousemodestrs[] = {
84         #include "editing_syms.h"
85 };
86 inline const char* enum2str(MouseMode m) {return mousemodestrs[m];}
87 MouseMode str2mousemode(ARDOUR::stringcr_t);
88
89 #undef MOUSEMODE
90 #define MOUSEMODE(a) /*empty*/
91
92 // ZOOMFOCUS
93 #undef ZOOMFOCUS
94 #define ZOOMFOCUS(a) a,
95 enum ZoomFocus {
96         #include "editing_syms.h"
97 };
98
99 #undef ZOOMFOCUS
100 #define ZOOMFOCUS(s) #s,
101 static const char *zoomfocusstrs[] = {
102         #include "editing_syms.h"
103 };
104 inline const char* enum2str(ZoomFocus m) {return zoomfocusstrs[m];}
105 ZoomFocus str2zoomfocus(ARDOUR::stringcr_t);
106
107 #undef ZOOMFOCUS
108 #define ZOOMFOCUS(a) /*empty*/
109
110 // DISPLAYCONTROL
111 #undef DISPLAYCONTROL
112 #define DISPLAYCONTROL(a) a,
113 enum DisplayControl {
114         #include "editing_syms.h"
115 };
116
117 #undef DISPLAYCONTROL
118 #define DISPLAYCONTROL(s) #s,
119 static const char *displaycontrolstrs[] = {
120         #include "editing_syms.h"
121 };
122 inline const char* enum2str(DisplayControl m) {return displaycontrolstrs[m];}
123 DisplayControl str2displaycontrol (ARDOUR::stringcr_t);
124
125 #undef DISPLAYCONTROL
126 #define DISPLAYCONTROL(a) /*empty*/
127
128 #undef COLORID
129 #define COLORID(a) a,
130 enum ColorID {
131          #include "editing_syms.h"
132 };
133
134 #undef COLORID
135 #define COLORID(s) #s,
136 static const char *color_id_strs[] = {
137         #include "editing_syms.h"
138 };
139 inline const char* enum2str(ColorID m) {return color_id_strs[m];}
140 ColorID str2color_id (ARDOUR::stringcr_t);
141
142 #undef COLORID
143 #define COLORID(a) /*empty*/
144
145 /////////////////////
146 // These don't need their state saved. yet...
147 enum CutCopyOp {
148         Cut,
149         Copy,
150         Clear
151 };
152
153 enum XFadeType {
154         Pre,
155         Post,
156         At
157 };
158
159 struct Color {
160     char r;
161     char g;
162     char b;
163     char a;
164 };
165
166 typedef std::map<Editing::ColorID,int> ColorMap;
167 extern ColorMap color_map;
168
169 } // namespace Editing
170
171 #endif // __gtk_ardour_editing_h__