Add a color fucker effect for global modifications
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 22 Aug 2013 08:52:37 +0000 (01:52 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Thu, 22 Aug 2013 08:52:37 +0000 (01:52 -0700)
SugarCubes.pde
TestPatterns.pde
_Internals.pde

index 637f7c65e483b48adc649267e83438b78d20d8c9..dac639a1a787b145e0eeb1385b264ffac81b7704 100644 (file)
@@ -106,6 +106,7 @@ LXEffect[] effects(GLucose glucose) {
     new FlashEffect(lx),
     new BoomEffect(glucose),
     new DesaturationEffect(lx),
+    new ColorFuckerEffect(glucose),
   };
 }
 
index b2e49f1d129bcacdfd81985825951828b0cd7fec..ab90d21effa4316d26a27312a36d4bc00edeb411 100644 (file)
@@ -259,6 +259,30 @@ class TestProjectionPattern extends TestPattern {
   } 
 }
 
+class ColorFuckerEffect extends SCEffect {
+  
+  BasicParameter hueShift = new BasicParameter("HSHFT", 0);
+  BasicParameter sat = new BasicParameter("SAT", 1);  
+  BasicParameter bright = new BasicParameter("BRT", 1);
+  
+  ColorFuckerEffect(GLucose glucose) {
+    super(glucose);
+    addParameter(hueShift);
+    addParameter(bright);
+    addParameter(sat);    
+  }
+  
+  public void doApply(int[] colors) {
+    for (int i = 0; i < colors.length; ++i) {
+      colors[i] = color(
+        (hue(colors[i]) + hueShift.getValuef()*360.) % 360,
+        saturation(colors[i]) * sat.getValuef(),
+        brightness(colors[i]) * bright.getValuef()
+      );
+    }
+  }
+}
+
 class TestCubePattern extends TestPattern {
   
   private SawLFO index = new SawLFO(0, Cube.POINTS_PER_CUBE, Cube.POINTS_PER_CUBE*60);
index 580e1730433f070baf019a40e421d19997ac34fc..8b2e3da71afa4e408845f78669dace1f2a580e82 100644 (file)
@@ -204,6 +204,10 @@ void draw() {
     debugUI.draw();
   }
   
+  // TODO(dan): if you want to, here would be a good place to
+  // put in gamma correction, modifying the colors that get
+  // sent to the pandaboards, without mucking up the UI here
+  
   // TODO(mcslee): move into GLucose engine
   for (PandaDriver p : pandaBoards) {
     p.send(colors);