]> git.sesse.net Git - nageru/blobdiff - nageru/theme.cpp
Make Futatabi fades apply white balance.
[nageru] / nageru / theme.cpp
index e3cdac2df54feac52374d623ce36bf34841cabf9..f3e1aa1c64bb53cdc913e7f5fdb6d326362ff860 100644 (file)
@@ -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<mutex> 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<mutex> 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 };
        }
 }