Mercurial > code > home > repos > homeauto
changeset 1433:be9b456717bd
round numbers. py3 updates. ws
Ignore-this: d1191987ce8070c9700a26b89436478a
darcs-hash:284883b8403f0563572a154cca19d5e96a5e5654
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sun, 11 Aug 2019 03:25:20 -0700 |
parents | ff868a0abac7 |
children | 3ec2ca0b63ff |
files | lib/devices_shared/devices_shared.py |
diffstat | 1 files changed, 17 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/devices_shared/devices_shared.py Sat Aug 10 23:44:17 2019 -0700 +++ b/lib/devices_shared/devices_shared.py Sun Aug 11 03:25:20 2019 -0700 @@ -1,10 +1,10 @@ -from __future__ import division import time import numpy import logging import imageio from rdflib import Namespace, RDF, URIRef, Literal +XS = Namespace('http://www.w3.org/2001/XMLSchema#double') ROOM = Namespace('http://projects.bigasterisk.com/room/') log = logging.getLogger() @@ -58,6 +58,9 @@ self.x = (self.end - now) / dur * self.x0 + (now - self.start) / dur * self.x2 return self.x +def roundedLit(x): + return Literal('%g' % x, datatype=XS['double']) + class ScanGroup(object): def __init__(self, uri, numLeds): @@ -86,12 +89,12 @@ except IOError as e: log.warn('getPixelColumn %r', e) log.debug('current = %r', self.current) - + def currentStatements(self): return [ (self.uri, RDF.type, ROOM['ScanGroup']), - (self.uri, ROOM['xValue'], Literal(self.x.get())), - (self.uri, ROOM['yValue'], Literal(self.y.get())), + (self.uri, ROOM['xValue'], roundedLit(self.x.get())), + (self.uri, ROOM['yValue'], roundedLit(self.y.get())), (self.uri, ROOM['heightValue'], Literal(self.height.get())), (self.uri, ROOM['src'], Literal(self.src)), ] @@ -100,14 +103,14 @@ return list(self.current[i,:]) args = {ROOM['src']: ('src', str), - ROOM['x']: ('x', int), - ROOM['y']: ('y', int), - ROOM['height']: ('height', int), + ROOM['x']: ('x', float), + ROOM['y']: ('y', float), + ROOM['height']: ('height', float), ROOM['interpolate']: ('interpolate', lambda x: x), ROOM['rate']: ('rate', float), } - + class RgbPixelsAnimation(object): def __init__(self, graph, uri, updateOutput): @@ -116,7 +119,7 @@ self.uri = uri self.updateOutput = updateOutput self.setupGroups() - + def setupGroups(self): self.groups = {} self.groupWithIndex = {} @@ -131,15 +134,15 @@ self.groupWithIndex[i] = sg, i - s attrStatements.update(self.graph.triples((grp, None, None))) self.onStatements(attrStatements, _groups=False) - + def maxIndex(self): - return max(v[1] for v in self.groups.itervalues()) + return max(v[1] for v in self.groups.values()) def hostStatements(self): return ( [(self.uri, ROOM['pixelGroup'], grp) for grp in self.groups.keys()] + sum([v[2].currentStatements() - for v in self.groups.itervalues()], []) + + for v in self.groups.values()], []) + [] # current ) @@ -151,11 +154,11 @@ raise NotImplementedError('%r colorOrder %r' % (uri, colorOrder)) stripType = None return colorOrder, stripType - + def step(self): # if animating... self.updateOutput() - + def onStatements(self, statements, _groups=True): needSetup = False animateCalls = {} # group uri : kw for animateTo