}
void Theme::set_wb(unsigned channel, float r, float g, float b)
+{
+ int signal = get_channel_signal(channel);
+
+ lock_guard<mutex> lock(m);
+ if (signal != -1) {
+ white_balance_for_signal[signal] = RGBTriplet{ r, g, b };
+ }
+
+ call_lua_wb_callback(channel, r, g, b);
+}
+
+void Theme::set_wb_for_signal(int signal, float r, float g, float b)
{
lock_guard<mutex> lock(m);
+ white_balance_for_signal[signal] = RGBTriplet{ r, g, b };
- if (channel_signals.count(channel)) {
- white_balance_for_signal[channel_signals[channel]] = WhiteBalance{ r, g, b };
+ for (const auto &channel_and_signal : channel_signals) {
+ if (channel_and_signal.second == signal) {
+ call_lua_wb_callback(channel_and_signal.first, r, g, b);
+ }
}
+}
+void Theme::call_lua_wb_callback(unsigned channel, float r, float g, float b)
+{
lua_getglobal(L, "set_wb");
if (lua_isnil(L, -1)) {
// The function doesn't exist, to just ignore. We've stored the white balance,
assert(lua_gettop(L) == 0);
}
-Theme::WhiteBalance Theme::get_white_balance_for_signal(int signal)
+RGBTriplet Theme::get_white_balance_for_signal(int signal)
{
if (white_balance_for_signal.count(signal)) {
return white_balance_for_signal[signal];
} else {
- return WhiteBalance{ 1.0, 1.0, 1.0 };
+ return RGBTriplet{ 1.0, 1.0, 1.0 };
}
}