@@ -33,11 +33,8 @@ namespace lsp
3333 // Style definition
3434 namespace style
3535 {
36- LSP_TK_STYLE_DEF_BEGIN (LedMeterChannel, Widget)
37- prop::RangeFloat sValue ;
38- prop::Float sPeak ;
39- prop::Float sHeaderValue ;
40- prop::Float sBalance ;
36+ typedef struct LedMeterChannelColors
37+ {
4138 prop::Color sColor ;
4239 prop::Color sValueColor ;
4340 prop::ColorRanges sValueRanges ;
@@ -48,6 +45,26 @@ namespace lsp
4845 prop::ColorRanges sTextRanges ;
4946 prop::ColorRanges sHeaderRanges ;
5047 prop::Color sBalanceColor ;
48+
49+ void listener (tk::prop::Listener *listener);
50+ bool property_changed (Property *prop);
51+ } LedMeterChannelColors;
52+
53+ enum LedMeterChannelColorState
54+ {
55+ LEDMETERCH_NORMAL = 0 ,
56+ LEDMETERCH_INACTIVE = 1 << 0 ,
57+
58+ LEDMETERCH_TOTAL = 1 << 1
59+ };
60+
61+ LSP_TK_STYLE_DEF_BEGIN (LedMeterChannel, Widget)
62+ LedMeterChannelColors vColors[LEDMETERCH_TOTAL];
63+
64+ prop::RangeFloat sValue ;
65+ prop::Float sPeak ;
66+ prop::Float sHeaderValue ;
67+ prop::Float sBalance ;
5168 prop::String sText ;
5269 prop::String sHeader ;
5370 prop::String sEstText ;
@@ -75,20 +92,20 @@ namespace lsp
7592 friend class LedMeter ;
7693
7794 protected:
95+ enum lmc_flags_t
96+ {
97+ LMC_0 = style::LEDMETERCH_NORMAL,
98+ LMC_1 = style::LEDMETERCH_INACTIVE,
99+ LMC_TOTAL = style::LEDMETERCH_TOTAL
100+ };
101+
102+ protected:
103+ style::LedMeterChannelColors vColors[LMC_TOTAL];
104+
78105 prop::RangeFloat sValue ;
79106 prop::Float sPeak ;
80107 prop::Float sHeaderValue ;
81108 prop::Float sBalance ;
82- prop::Color sColor ;
83- prop::Color sValueColor ;
84- prop::ColorRanges sValueRanges ;
85- prop::Color sPeakColor ;
86- prop::ColorRanges sPeakRanges ;
87- prop::Color sTextColor ;
88- prop::Color sHeaderColor ;
89- prop::ColorRanges sTextRanges ;
90- prop::ColorRanges sHeaderRanges ;
91- prop::Color sBalanceColor ;
92109 prop::String sText ;
93110 prop::String sHeader ;
94111 prop::String sEstText ;
@@ -111,10 +128,11 @@ namespace lsp
111128 ws::rectangle_t sAHeader ; // Header drawing area
112129
113130 protected:
114- void draw_meter (ws::ISurface *s, ssize_t angle, float scaling, float bright);
115- void draw_label (ws::ISurface *s, const Font *f, float fscaling, float bright);
116- void draw_header (ws::ISurface *s, const Font *f, float fscaling, float bright);
117- const lsp::Color *get_color (float value, const ColorRanges *ranges, const Color *dfl);
131+ void draw_meter (ws::ISurface *s, ssize_t angle, float scaling, float bright);
132+ void draw_label (ws::ISurface *s, const Font *f, float fscaling, float bright);
133+ void draw_header (ws::ISurface *s, const Font *f, float fscaling, float bright);
134+ const lsp::Color *get_color (float value, const ColorRanges *ranges, const Color *dfl);
135+ style::LedMeterChannelColors *select_colors ();
118136
119137 public:
120138 explicit LedMeterChannel (Display *dpy);
@@ -137,20 +155,32 @@ namespace lsp
137155 virtual void realize (const ws::rectangle_t *r) override ;
138156
139157 public:
158+ LSP_TK_PROPERTY (Color, color, &vColors[LMC_0].sColor )
159+ LSP_TK_PROPERTY (Color, value_color, &vColors[LMC_0].sValueColor )
160+ LSP_TK_PROPERTY (ColorRanges, value_ranges, &vColors[LMC_0].sValueRanges )
161+ LSP_TK_PROPERTY (Color, peak_color, &vColors[LMC_0].sPeakColor )
162+ LSP_TK_PROPERTY (ColorRanges, peak_ranges, &vColors[LMC_0].sPeakRanges )
163+ LSP_TK_PROPERTY (Color, text_color, &vColors[LMC_0].sTextColor )
164+ LSP_TK_PROPERTY (Color, header_color, &vColors[LMC_0].sHeaderColor )
165+ LSP_TK_PROPERTY (ColorRanges, text_ranges, &vColors[LMC_0].sTextRanges )
166+ LSP_TK_PROPERTY (ColorRanges, header_ranges, &vColors[LMC_0].sHeaderRanges )
167+ LSP_TK_PROPERTY (Color, balance_color, &vColors[LMC_0].sBalanceColor )
168+
169+ LSP_TK_PROPERTY (Color, inactive_color, &vColors[LMC_1].sColor )
170+ LSP_TK_PROPERTY (Color, inactive_value_color, &vColors[LMC_1].sValueColor )
171+ LSP_TK_PROPERTY (ColorRanges, inactive_value_ranges, &vColors[LMC_1].sValueRanges )
172+ LSP_TK_PROPERTY (Color, inactive_peak_color, &vColors[LMC_1].sPeakColor )
173+ LSP_TK_PROPERTY (ColorRanges, inactive_peak_ranges, &vColors[LMC_1].sPeakRanges )
174+ LSP_TK_PROPERTY (Color, inactive_text_color, &vColors[LMC_1].sTextColor )
175+ LSP_TK_PROPERTY (Color, inactive_header_color, &vColors[LMC_1].sHeaderColor )
176+ LSP_TK_PROPERTY (ColorRanges, inactive_text_ranges, &vColors[LMC_1].sTextRanges )
177+ LSP_TK_PROPERTY (ColorRanges, inactive_header_ranges, &vColors[LMC_1].sHeaderRanges )
178+ LSP_TK_PROPERTY (Color, inactive_balance_color, &vColors[LMC_1].sBalanceColor )
179+
140180 LSP_TK_PROPERTY (RangeFloat, value, &sValue )
141181 LSP_TK_PROPERTY (Float, peak, &sPeak )
142182 LSP_TK_PROPERTY (Float, header_value, &sHeaderValue )
143183 LSP_TK_PROPERTY (Float, balance, &sBalance )
144- LSP_TK_PROPERTY (Color, color, &sColor )
145- LSP_TK_PROPERTY (Color, value_color, &sValueColor )
146- LSP_TK_PROPERTY (ColorRanges, value_ranges, &sValueRanges )
147- LSP_TK_PROPERTY (Color, peak_color, &sPeakColor )
148- LSP_TK_PROPERTY (ColorRanges, peak_ranges, &sPeakRanges )
149- LSP_TK_PROPERTY (Color, text_color, &sTextColor )
150- LSP_TK_PROPERTY (Color, header_color, &sHeaderColor )
151- LSP_TK_PROPERTY (ColorRanges, text_ranges, &sTextRanges )
152- LSP_TK_PROPERTY (ColorRanges, header_ranges, &sHeaderRanges )
153- LSP_TK_PROPERTY (Color, balance_color, &sBalanceColor )
154184 LSP_TK_PROPERTY (String, text, &sText )
155185 LSP_TK_PROPERTY (String, header, &sHeader )
156186 LSP_TK_PROPERTY (String, estimation_text, &sEstText )
0 commit comments