X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Ftheme.cpp;h=f3e1aa1c64bb53cdc913e7f5fdb6d326362ff860;hb=e15251d2787cb8e6b677af801de6180e55171763;hp=e3cdac2df54feac52374d623ce36bf34841cabf9;hpb=9ece26cae09110a3c6a0c74aefb2269a6dd9a7d9;p=nageru diff --git a/nageru/theme.cpp b/nageru/theme.cpp index e3cdac2..f3e1aa1 100644 --- a/nageru/theme.cpp +++ b/nageru/theme.cpp @@ -1687,11 +1687,27 @@ bool Theme::get_supports_set_wb(unsigned channel) void Theme::set_wb(unsigned channel, float r, float g, float b) { lock_guard lock(m); - if (channel_signals.count(channel)) { - white_balance_for_signal[channel_signals[channel]] = WhiteBalance{ r, g, b }; + white_balance_for_signal[channel_signals[channel]] = 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 lock(m); + white_balance_for_signal[signal] = RGBTriplet{ 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, @@ -1711,12 +1727,12 @@ void Theme::set_wb(unsigned channel, float r, float g, float b) 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 }; } }