1group { name: "e/modules/mixer/main";
2   alias: "e/gadget/mixer/main";
3   alias: "e/gadget/mixer/main_vert";
4   images.image: "speaker.png" COMP;
5   images.image: "inset_round_hilight.png" COMP;
6   images.image: "inset_round_shadow.png" COMP;
7   images.image: "inset_round_shading.png" COMP;
8   images.image: "led_dot_white.png" COMP;
9   max: 160 160;
10   min: 16 16;
11   script {
12      public message(Msg_Type:type, id, ...) {
13         if ((type == MSG_INT_SET) && (id == 0)) {
14            new m, l, r;
15
16            m = getarg(2);
17            l = getarg(3);
18            r = getarg(4);
19
20            if (m) {
21               run_program(PROGRAM:"mute");
22            } else {
23               run_program(PROGRAM:"unmute");
24            }
25
26            if (l <= 0) {
27               run_program(PROGRAM:"l0-off");
28               run_program(PROGRAM:"l1-off");
29               run_program(PROGRAM:"l2-off");
30               run_program(PROGRAM:"l3-off");
31               run_program(PROGRAM:"l4-off");
32            } else if (l <= 20) {
33               run_program(PROGRAM:"l0-on");
34               run_program(PROGRAM:"l1-off");
35               run_program(PROGRAM:"l2-off");
36               run_program(PROGRAM:"l3-off");
37               run_program(PROGRAM:"l4-off");
38            } else if (l <= 40) {
39               run_program(PROGRAM:"l0-on");
40               run_program(PROGRAM:"l1-on");
41               run_program(PROGRAM:"l2-off");
42               run_program(PROGRAM:"l3-off");
43               run_program(PROGRAM:"l4-off");
44            } else if (l <= 60) {
45               run_program(PROGRAM:"l0-on");
46               run_program(PROGRAM:"l1-on");
47               run_program(PROGRAM:"l2-on");
48               run_program(PROGRAM:"l3-off");
49               run_program(PROGRAM:"l4-off");
50            } else if (l <= 80) {
51               run_program(PROGRAM:"l0-on");
52               run_program(PROGRAM:"l1-on");
53               run_program(PROGRAM:"l2-on");
54               run_program(PROGRAM:"l3-on");
55               run_program(PROGRAM:"l4-off");
56            } else {
57               run_program(PROGRAM:"l0-on");
58               run_program(PROGRAM:"l1-on");
59               run_program(PROGRAM:"l2-on");
60               run_program(PROGRAM:"l3-on");
61               run_program(PROGRAM:"l4-on");
62            }
63
64            if (r <= 0) {
65               run_program(PROGRAM:"r0-off");
66               run_program(PROGRAM:"r1-off");
67               run_program(PROGRAM:"r2-off");
68               run_program(PROGRAM:"r3-off");
69               run_program(PROGRAM:"r4-off");
70            } else if (r <= 20) {
71               run_program(PROGRAM:"r0-on");
72               run_program(PROGRAM:"r1-off");
73               run_program(PROGRAM:"r2-off");
74               run_program(PROGRAM:"r3-off");
75               run_program(PROGRAM:"r4-off");
76            } else if (r <= 40) {
77               run_program(PROGRAM:"r0-on");
78               run_program(PROGRAM:"r1-on");
79               run_program(PROGRAM:"r2-off");
80               run_program(PROGRAM:"r3-off");
81               run_program(PROGRAM:"r4-off");
82            } else if (r <= 60) {
83               run_program(PROGRAM:"r0-on");
84               run_program(PROGRAM:"r1-on");
85               run_program(PROGRAM:"r2-on");
86               run_program(PROGRAM:"r3-off");
87               run_program(PROGRAM:"r4-off");
88            } else if (r <= 80) {
89               run_program(PROGRAM:"r0-on");
90               run_program(PROGRAM:"r1-on");
91               run_program(PROGRAM:"r2-on");
92               run_program(PROGRAM:"r3-on");
93               run_program(PROGRAM:"r4-off");
94            } else {
95               run_program(PROGRAM:"r0-on");
96               run_program(PROGRAM:"r1-on");
97               run_program(PROGRAM:"r2-on");
98               run_program(PROGRAM:"r3-on");
99               run_program(PROGRAM:"r4-on");
100            }
101         }
102      }
103   }
104   parts {
105      part { name: "base-sh";
106         description { state: "default" 0.0;
107            rel1.to: "base";
108            rel1.offset: 0 -1;
109            rel2.to: "base";
110            rel2.offset: -1 -2;
111            image.normal: "inset_round_shadow.png";
112         }
113      }
114      part { name: "base-hi";
115         description { state: "default" 0.0;
116            rel1.to: "base";
117            rel1.offset: 0 1;
118            rel2.to: "base";
119            rel2.offset: -1 0;
120            image.normal: "inset_round_hilight.png";
121         }
122      }
123      part { name: "base";
124         description { state: "default" 0.0;
125            rel1.relative: (25/380) (25/380);
126            rel2.relative: (365/380) (365/380);
127            aspect: 1.0 1.0; aspect_preference: BOTH;
128            image.normal: "speaker.png";
129         }
130      }
131      part { name: "state"; type: RECT;
132         description { state: "default" 0.0;
133            rel1.relative: -1.0 -1.0;
134            rel2.relative: 2.0 2.0;
135            color: 51 153 255 255;
136         }
137         description { state: "mute" 0.0;
138            inherit: "default" 0.0;
139            color: 255 153 51 255;
140         }
141      }
142#define LED(_NAME, _BASE, _X, _SIZE) \
143      part { name: _NAME; type: RECT; \
144         clip_to: "state"; \
145         description { state: "default" 0.0; \
146            fixed: 1 1; \
147            rel1.relative: ((_BASE+(_X*8))/160) (80/160); \
148            rel2.relative: ((_BASE+(_X*8))/160) (80/160); \
149            min: 1 1; \
150            max: 1 1; \
151            visible: 0; \
152            color: 255 255 255 0; \
153         } \
154         description { state: "active" 0.0; \
155            inherit: "default" 0.0; \
156            visible: 1; \
157            color: 255 255 255 255; \
158         } \
159      } \
160      part { name: _NAME"g"; \
161         clip_to: "state"; \
162         description { state: "default" 0.0; \
163            rel1.to: _NAME; \
164            rel2.to: _NAME; \
165            image.normal: "led_dot_white.png"; \
166            min: _SIZE _SIZE; \
167            visible: 0; \
168            color: 255 255 255 0; \
169         } \
170         description { state: "active" 0.0; \
171            inherit: "default" 0.0; \
172            visible: 1; \
173            color: 255 255 255 255; \
174         } \
175      }
176      LED("r0", 99,  0,  1)
177      LED("r1", 99,  1,  9)
178      LED("r2", 99,  2, 15)
179      LED("r3", 99,  3, 21)
180      LED("r4", 99,  4, 27)
181      LED("l0", 61,  0,  1)
182      LED("l1", 61, -1,  9)
183      LED("l2", 61, -2, 15)
184      LED("l3", 61, -3, 21)
185      LED("l4", 61, -4, 27)
186#undef LED
187      part { name: "over"; type: RECT;
188         description { state: "default" 0.0;
189            color: 255 255 255 0;
190         }
191      }
192   }
193   programs {
194      program { name: "mute";
195         action: STATE_SET "mute" 0.0;
196         transition: LINEAR 0.3;
197         target: "state";
198      }
199      program { name: "unmute";
200         action: STATE_SET "default" 0.0;
201         transition: LINEAR 0.2;
202         target: "state";
203      }
204#define PROG(_NAME) \
205      program { name: _NAME"-on"; \
206         action: STATE_SET "active" 0.0; \
207         target: _NAME; \
208         target: _NAME"g"; \
209      } \
210      program { name: _NAME"-off"; \
211         action: STATE_SET "default" 0.0; \
212         target: _NAME; \
213         target: _NAME"g"; \
214      }
215      PROG("r0")
216      PROG("r1")
217      PROG("r2")
218      PROG("r3")
219      PROG("r4")
220      PROG("l0")
221      PROG("l1")
222      PROG("l2")
223      PROG("l3")
224      PROG("l4")
225#undef PROG
226   }
227}
228
229
230