X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2FVideoFrame.java;h=931237dae82c80ae5a2f146bc0f95f7d78292580;hb=a80ebf3ee72e48244d0c6ed78857cfa2fbb6a881;hp=30d8593c231c042e779f43c428487844b0003646;hpb=adc29b9a70fa1d03ac67b0b3f397fed7a75f4d7b;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/VideoFrame.java b/src/kaka/cakelight/VideoFrame.java index 30d8593..931237d 100644 --- a/src/kaka/cakelight/VideoFrame.java +++ b/src/kaka/cakelight/VideoFrame.java @@ -104,7 +104,10 @@ public class VideoFrame { private Color wrappedGetLedColor(ListPosition listPosition, int xy) { Color c = getLedColor(listPosition, xy); double[] hsv = c.toHSV(); - return Color.hsv(hsv[0], 1, 1); + double saturation = config.video.saturation >= 0.5 + ? hsv[1] + (config.video.saturation - 0.5) * 2 * (1 - hsv[1]) + : hsv[1] - (1 - config.video.saturation * 2) * hsv[1]; + return Color.hsv(hsv[0], saturation, hsv[2]); } private Color getLedColor(ListPosition listPosition, int xy) { @@ -172,10 +175,27 @@ public class VideoFrame { public LedFrame getLedFrame() { LedFrame frame = LedFrame.from(config); int led = 0; - for (int i = 0; i < config.leds.cols; i++) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.BOTTOM, i)); - for (int i = config.leds.rows - 1; i >= 0; i--) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.RIGHT, i)); - for (int i = config.leds.cols - 1; i >= 0; i--) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.TOP, i)); - for (int i = 0; i < config.leds.rows; i++) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.LEFT, i)); + + if (config.video.list.bottom) + for (int i = 0; i < config.leds.cols; i++) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.BOTTOM, i)); + else + for (int i = 0; i < config.leds.cols; i++) frame.setLedColor(led++, Color.BLACK); + + if (config.video.list.right) + for (int i = config.leds.rows - 1; i >= 0; i--) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.RIGHT, i)); + else + for (int i = config.leds.rows - 1; i >= 0; i--) frame.setLedColor(led++, Color.BLACK); + + if (config.video.list.top) + for (int i = config.leds.cols - 1; i >= 0; i--) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.TOP, i)); + else + for (int i = config.leds.cols - 1; i >= 0; i--) frame.setLedColor(led++, Color.BLACK); + + if (config.video.list.left) + for (int i = 0; i < config.leds.rows; i++) frame.setLedColor(led++, wrappedGetLedColor(ListPosition.LEFT, i)); + else + for (int i = 0; i < config.leds.rows; i++) frame.setLedColor(led++, Color.BLACK); + return frame; } }