Mercurial > code > home > repos > light9
diff DataTypes/dmx.py @ 0:45b12307c695
Initial revision
author | drewp |
---|---|
date | Wed, 03 Jul 2002 09:37:57 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DataTypes/dmx.py Wed Jul 03 09:37:57 2002 +0000 @@ -0,0 +1,31 @@ + +class DMX(list): + """the signal that goes on a real-life dmx wire. it's up to 512 + un-named channels each with a 8-bit value on each channel. this type + is useful for a DMXOut node or DMXLevelDisplay node. the channels are + stored in a python list where the first channel is at index 0. the + first channel in dmx terminology would be called channel 1.""" + + def __init__(self,dmxlevels): + if len(dmxlevels)>512: + raise TypeError("DMX objects can't have more than 512 channels") + list.extend(dmxlevels) # list.__init__ did't work right + + def append(self,level): + if len(self)==512: + raise TypeError("DMX objects can't have more than 512 channels") + list.append(self,level) + + def extend(self,levels): + if len(self)+len(levels)>512: + raise TypeError("DMX objects can't have more than 512 channels") + list.extend(self,levels) + + def __setslice__(self,i,j,seq): + newlength = len(self)-(max(0,j)-max(0,i))+len(seq) + # we could check if newlength>512, but any length-changing slice is + # probably wrong for this datatype + if newlength!=len(self): + raise NotImplementedError("Different-length setslice would disturb DMX channels") + list.__setslice__(self,i,j,seq) +