aboutsummaryrefslogtreecommitdiff
path: root/pixelcore/Pixel.py
diff options
context:
space:
mode:
authorGravatar Russell Cohen <rcoh@mit.edu>2010-11-24 01:09:12 -0500
committerGravatar Russell Cohen <rcoh@mit.edu>2010-11-24 01:09:12 -0500
commitb042647b68abdc82490ca6e059993b8eba28904c (patch)
treea9ee95a38e98b377c251b7b2e9af9cbd8056cf7c /pixelcore/Pixel.py
parent407ac922fc4178021cf3a16dfb1bd875b6083ac4 (diff)
Refactoring complete! Made modules/packages as appropriate. Finally.
Diffstat (limited to 'pixelcore/Pixel.py')
-rw-r--r--pixelcore/Pixel.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/pixelcore/Pixel.py b/pixelcore/Pixel.py
new file mode 100644
index 0000000..6784c63
--- /dev/null
+++ b/pixelcore/Pixel.py
@@ -0,0 +1,44 @@
+import Util
+import pdb
+from pixelevents.StepEvent import *
+#Pixel keeps a queue of events (PixelEvent objects) (actually a dictionary
+#keyed by event time). Every time is state is
+#requested, it processes all the members of its cue. If a member returns none,
+#it is removed from the queue. Otherwise, its value added to the Pixels color
+#weighted by z-index.
+class Pixel:
+ radius = 2
+ timeOff = -1
+ def __init__(self, location, color):
+ self.location = location
+ self.color = color
+ self.events = {}
+ def turnOn(self):
+ self.turnOnFor(-1)
+ def turnOnFor(self, time):
+ event = StepEvent.generate(time, (255,0,255)) #TODO: Move color to
+ self.processInput(event, 0)
+ #arg
+ def processInput(self,pixelEvent,zindex): #consider migrating arg to dict
+ self.events[Util.time()] = (zindex, pixelEvent)
+ def clearAllEvents(self):
+ self.events = {}
+ def state(self):
+ deadEvents = []
+ currentTime = Util.time()
+ resultingColor = (0,0,0)
+ for eventTime in self.events: #TODO: right color weighting code
+ (zindex,event) = self.events[eventTime]
+ eventResult = event.state(currentTime-eventTime)
+ if eventResult != None:
+ resultingColor = Util.combineColors(eventResult, resultingColor)
+ print resultingColor
+ else:
+ deadEvents.append(eventTime)
+ [self.events.pop(event) for event in deadEvents]
+ if sum(resultingColor) > 0:
+ print resultingColor
+ return tuple(resultingColor)
+ def __str__(self):
+ return 'Loc: ' + str(self.location)
+