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