[varLib.varStore] Cache scalars in VarStoreInstancer
This commit is contained in:
parent
5fabd3eb32
commit
e05ece2715
@ -76,22 +76,26 @@ class VarStoreInstancer(object):
|
|||||||
self._clearCaches()
|
self._clearCaches()
|
||||||
|
|
||||||
def _clearCaches(self):
|
def _clearCaches(self):
|
||||||
pass
|
self._scalars = {}
|
||||||
#self._scalars = {}
|
|
||||||
|
def _getScalar(self, regionIdx):
|
||||||
|
scalar = self._scalars.get(regionIdx)
|
||||||
|
if scalar is None:
|
||||||
|
support = VarRegion_get_support(self._regions[regionIdx], self.fvar_axes)
|
||||||
|
scalar = supportScalar(self.location, support)
|
||||||
|
self._scalars[regionIdx] = scalar
|
||||||
|
return scalar
|
||||||
|
|
||||||
def __getitem__(self, varidx):
|
def __getitem__(self, varidx):
|
||||||
|
|
||||||
major, minor = varidx >> 16, varidx & 0xFFFF
|
major, minor = varidx >> 16, varidx & 0xFFFF
|
||||||
|
|
||||||
varData = self._varData
|
varData = self._varData
|
||||||
supports = [VarRegion_get_support(self._regions[ri], self.fvar_axes)
|
scalars = [self._getScalar(ri) for ri in varData[major].VarRegionIndex]
|
||||||
for ri in varData[major].VarRegionIndex]
|
|
||||||
|
|
||||||
deltas = varData[major].Item[minor]
|
deltas = varData[major].Item[minor]
|
||||||
delta = 0.
|
delta = 0.
|
||||||
for d,s in zip(deltas, supports):
|
for d,s in zip(deltas, scalars):
|
||||||
if not d: continue
|
delta += d * s
|
||||||
scalar = supportScalar(self.location, s)
|
|
||||||
delta += d * scalar
|
|
||||||
return delta
|
return delta
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user