New smooth video mode that mixes the new frame with the previous one
[kaka/cakelight.git] / src / kaka / cakelight / SmoothVideoMode.java
diff --git a/src/kaka/cakelight/SmoothVideoMode.java b/src/kaka/cakelight/SmoothVideoMode.java
new file mode 100644 (file)
index 0000000..e9ef442
--- /dev/null
@@ -0,0 +1,26 @@
+package kaka.cakelight;
+
+public class SmoothVideoMode extends VideoMode {
+    private LedFrame frame;
+    private int ledCount;
+
+    @Override
+    public void enter(Configuration config) {
+        super.enter(config);
+        frame = LedFrame.from(config);
+        ledCount = config.leds.getCount();
+    }
+
+    @Override
+    public void updateWithFrame(LedFrame frame) {
+        super.updateWithFrame(smooth(frame));
+    }
+
+    private LedFrame smooth(LedFrame f) {
+        for (int i = 0; i < ledCount; i++) {
+            Color c = frame.getLedColor(i).interpolate(f.getLedColor(i), 0.5);
+            frame.setLedColor(i, c);
+        }
+        return frame;
+    }
+}