Skip to content

Commit 5a0bbfb

Browse files
committed
Added color inactivity to LedMeterChannel
1 parent ccc1f81 commit 5a0bbfb

File tree

3 files changed

+191
-96
lines changed

3 files changed

+191
-96
lines changed

include/lsp-plug.in/tk/prop/collection/ColorRanges.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ namespace lsp
175175
* Unbind property
176176
*/
177177
inline status_t unbind() { return tk::ColorRanges::unbind(&sListener); };
178-
178+
inline void listener(prop::Listener *listener) { pListener = listener; }
179179
};
180180

181181
} /* namespace prop */

include/lsp-plug.in/tk/widgets/specific/LedMeterChannel.h

Lines changed: 59 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)