changeset 1136:f48be3d18387

Strip can be scaled. Ignore-this: e8a739d189357b5befcca2ba6fc78ec7
author drewp@bigasterisk.com
date Sat, 14 Jun 2014 07:10:00 +0000
parents d5c87125225e
children 05f272019697
files light9/Effects.py light9/effecteval/effect.py
diffstat 2 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/light9/Effects.py	Sat Jun 14 06:54:54 2014 +0000
+++ b/light9/Effects.py	Sat Jun 14 07:10:00 2014 +0000
@@ -27,6 +27,17 @@
         x.pixels = [tuple(color)] * 50
         return x
 
+    def __mul__(self, f):
+        if not isinstance(f, (int, float)):
+            raise TypeError
+            
+        s = Strip()
+        s.which = self.which
+        s.pixels = [(r*f, g*f, b*f) for r,g,b in self.pixels]
+        return s
+
+    __rmul__ = __mul__
+
 @register
 class Blacklight(float):
     """a level for the blacklight PWM output"""
--- a/light9/effecteval/effect.py	Sat Jun 14 06:54:54 2014 +0000
+++ b/light9/effecteval/effect.py	Sat Jun 14 07:10:00 2014 +0000
@@ -9,6 +9,9 @@
 
 # consider http://waxeye.org/ for a parser that can be used in py and js
 
+class CouldNotConvert(TypeError):
+    pass
+
 class CodeLine(object):
     """code string is immutable"""
     def __init__(self, graph, code):
@@ -64,18 +67,24 @@
         out = {}
         subs = Submaster.get_global_submasters(self.graph)
         for localVar, uri in resources.items():
+            
             for rdfClass in self.graph.objects(uri, RDF.type):
                 if rdfClass == L9['Curve']:
                     cr = CurveResource(self.graph, uri)
                     cr.loadCurve()
                     out[localVar] = cr.curve
+                    break
                 elif rdfClass == L9['Submaster']:
                     out[localVar] = subs.get_sub_by_uri(uri)
+                    break
                 else:
-                    out[localVar] = uri
+                    out[localVar] = CouldNotConvert(uri)
+                    break
+            else:
+                out[localVar] = CouldNotConvert(uri)
 
         return out
-
+        
 class EffectNode(object):
     def __init__(self, graph, uri):
         self.graph, self.uri = graph, uri