예제 #1
0
 def _render(self, name, intent, dataGetter, **kwds):
     from xml.sax.saxutils import escape
     spec = self.intentSpecs[intent]
     valueName = spec.valueName
     D = self._defaults.get(intent, {}).copy()
     escapeAction = D.get('escape')
     D.update(kwds)
     if self.uppercase and 'content' in D and isinstance(D['content'], str):
         D['content'] = self.upper(D['content'])
     if valueName not in kwds:
         data = dataGetter(name, intent)
         if self.uppercase and isinstance(data, str):
             data = self.upper(data)
         if escapeAction == 'escape':
             data = escape(data)
         D[valueName] = data
     if spec.preRenderFunc: spec.preRenderFunc(D)
     rml = []
     add = rml.append
     if 'rotation' in D:
         angle = D['rotation']
         add('<saveState/><rotate degrees="%s"/>' % angle)
         angle = float(angle)
         from reportlab.graphics.shapes import rotate, inverse, transformPoint
         D['x'], D['y'] = transformPoint(inverse(rotate(float(angle))),
                                         (float(D['x']), float(D['y'])))
     add(spec.rml(D))
     if 'rotation' in D: add('<restoreState/>')
     return ''.join(rml)  #+('<!--%s-->' % name)
예제 #2
0
 def _render(self,name,intent,dataGetter,**kwds):
     from xml.sax.saxutils import escape
     spec = self.intentSpecs[intent]
     valueName = spec.valueName
     D=self._defaults.get(intent,{}).copy()
     escapeAction=D.get('escape')
     D.update(kwds)
     if self.uppercase and 'content' in D and isinstance(D['content'],str):
         D['content'] = self.upper(D['content'])
     if valueName not in kwds:
         data = dataGetter(name, intent)
         if self.uppercase and isinstance(data,str):
             data = self.upper(data)
         if escapeAction == 'escape':
             data = escape(data)
         D[valueName] = data
     if spec.preRenderFunc: spec.preRenderFunc(D)
     rml = []
     add = rml.append
     if 'rotation' in D:
         angle = D['rotation']
         add('<saveState/><rotate degrees="%s"/>' % angle)
         angle = float(angle)
         from reportlab.graphics.shapes import rotate, inverse, transformPoint
         D['x'],D['y'] = transformPoint(inverse(rotate(float(angle))),(float(D['x']),float(D['y'])))
     add(spec.rml(D))
     if 'rotation' in D: add('<restoreState/>')
     return ''.join(rml)#+('<!--%s-->' % name)
예제 #3
0
파일: utils.py 프로젝트: fhelmli/homeNOWG2
 def transformAndFlatten(A, p):
     ''' transform an flatten a list of points
     A   transformation matrix
     p   points [(x0,y0),....(xk,yk).....]
     '''
     if tuple(A) != (1, 0, 0, 1, 0, 0):
         iA = inverse(A)
         p = transformPoints(iA, p)
     return tuple(flatten(p))
예제 #4
0
 def transformAndFlatten(A,p):
     ''' transform an flatten a list of points
     A   transformation matrix
     p   points [(x0,y0),....(xk,yk).....]
     '''
     if tuple(A)!=(1,0,0,1,0,0):
         iA = inverse(A)
         p = transformPoints(iA,p)
     return tuple(flatten(p))