Mercurial > code > home > repos > light9
view DataTypes/dmx.py @ 16:7dbe8067acea
fixed bug with channel levels not displaying
fixed bug with channel levels not displaying
moved an import from rsn to io
author | drewp |
---|---|
date | Sun, 07 Jul 2002 06:33:29 +0000 |
parents | 45b12307c695 |
children |
line wrap: on
line source
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)