X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2FConsole.java;h=0b956aecd1ff641d8ce06fb88068978bad0d71f7;hb=baaaa10bd2e30428f8ca0f04855a24138e70d097;hp=7f8b8eeb53954c9ad97e0036103a36e0ffc66c5a;hpb=e2721d511abab891e138bc87ab6b6cf2a90bdf19;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/Console.java b/src/kaka/cakelight/Console.java index 7f8b8ee..0b956ae 100644 --- a/src/kaka/cakelight/Console.java +++ b/src/kaka/cakelight/Console.java @@ -22,6 +22,14 @@ public class Console extends Thread { this.cakelight = cakelight; this.config = config; reader = new BufferedReader(new InputStreamReader(System.in)); + + public CakeLight getCakelight() { + return cakelight; + } + + public Configuration getConfig() { + return config; + } } @Override @@ -62,7 +70,7 @@ public class Console extends Thread { config.video.saturation = Double.parseDouble(split[1]); System.out.println("setting saturation to " + config.video.saturation); } else if (input.matches("(n|noise)(\\s+[a-z0-9]+){2}")) { - TwoColorNoiseMode.getCommand().activate(cakelight, config, input.split("\\s+")); + TwoColorNoiseMode.getCommand().activate(this, input.split("\\s+")); System.out.println("setting two-color noise mode"); } } catch (IOException e) { @@ -74,6 +82,33 @@ public class Console extends Thread { public interface Command { String[] getNames(); - void activate(CakeLight cakelight, Configuration config, String[] args); + void activate(Console console, String[] args); + + default Color parseColor(String s) { + switch (s.toLowerCase()) { + case "r": return Color.rgb(255, 0, 0); + case "g": return Color.rgb(0, 255, 0); + case "b": return Color.rgb(0, 0, 255); + default: // assume hexadecimal + if (s.startsWith("#")) { + s = s.substring(1); + } + if (s.length() == 3) { + return Color.rgb( + Integer.parseInt(s.substring(0, 1), 16) * 16 + Integer.parseInt(s.substring(0, 1), 16), + Integer.parseInt(s.substring(1, 2), 16) * 16 + Integer.parseInt(s.substring(1, 2), 16), + Integer.parseInt(s.substring(2, 3), 16) * 16 + Integer.parseInt(s.substring(2, 3), 16) + ); + } else if (s.length() == 6) { + return Color.rgb( + Integer.parseInt(s.substring(0, 2), 16), + Integer.parseInt(s.substring(2, 4), 16), + Integer.parseInt(s.substring(4, 6), 16) + ); + } + } + System.out.println("Failed to parse color '" + s + "'. Using black instead."); + return Color.BLACK; + } } }