コード例 #1
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		#Resolve every color in the 4D array with the current time.
		r=[]
		
		#cubes
		r.append([])
		for i in range(len(self.frame[0])):
			r[0].append([])
			for j in range(len(self.frame[0][i])):
				r[0][i].append([])
				for k in range(len(self.frame[0][i][j])):
					r[0][i][j].append([])
					r[0][i][j][k]=color.get(self.frame[0][i][j][k],time,delta)	

		#leaves
		r.append([])
		for i in range(len(self.frame[1])):
			r[1].append([])
			for j in range(len(self.frame[1][i])):
				r[1][i].append([])
				r[1][i][j]=color.get(self.frame[1][i][j],time,delta)	
		#fissures
		r.append([])
		for i in range(len(self.frame[2])):
			r[2].append([])
			r[2][i]=color.get(self.frame[2][i],time,delta)	
			
		return r
コード例 #2
0
 def render(self, node):
     tags = {
         'drawCentredString': self._drawCenteredString,
         'drawRightString': self._drawRightString,
         'drawString': self._drawString,
         'rect': self._rect,
         'ellipse': self._ellipse,
         'lines': self._lines,
         'grid': self._grid,
         'curves': self._curves,
         'fill': lambda node: self.canvas.setFillColor(color.get(node.get('color'))),
         'stroke': lambda node: self.canvas.setStrokeColor(color.get(node.get('color'))),
         'setFont': self.setFont ,
         'place': self._place,
         'circle': self._circle,
         'lineMode': self._line_mode,
         'path': self._path,
         'rotate': lambda node: self.canvas.rotate(float(node.get('degrees'))),
         'translate': self._translate,
         'image': self._image
     }
     for n in utils._child_get(node, self):
         self.doc.tick()
         if n.tag in tags:
             tags[n.tag](n)
コード例 #3
0
ファイル: trml2pdf.py プロジェクト: tieugene/rml2pdf
 def render(self, node):
     tags = {
             'drawCentredString': self._drawCenteredString,
             'drawCenteredString': self._drawCenteredString,
             'drawRightString': self._drawRightString,
             'drawString': self._drawString,
             'rect': self._rect,
             'ellipse': self._ellipse,
             'lines': self._lines,
             'grid': self._grid,
             'curves': self._curves,
             'fill': lambda node: self.canvas.setFillColor(color.get(node.getAttribute('color'))),
             'stroke': lambda node: self.canvas.setStrokeColor(color.get(node.getAttribute('color'))),
             'setFont': lambda node: self.canvas.setFont(node.getAttribute('name'), utils.unit_get(node.getAttribute('size'))),
             'place': self._place,
             'circle': self._circle,
             'lineMode': self._line_mode,
             'path': self._path,
             'rotate': lambda node: self.canvas.rotate(float(node.getAttribute('degrees'))),
             'translate': self._translate,
             'transform': self._transform,
             'image': self._image,
             'textBox': self._textBox,
             'letterBoxes': self._letterBoxes,
     }
     for nd in node.childNodes:
         notfound = True
         if nd.nodeType==nd.ELEMENT_NODE:
             # FIXME: speedup
             for tag in tags:
                 if nd.localName==tag:
                     tags[tag](nd)
                     notfound = False
                     break
             if (notfound): sys.stderr.write('Graphics %s not implemented yet\n' % nd.localName)
コード例 #4
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		leg = color.get(self.leg, time, delta)
		
		#remember leg for use by parent class.
		self.mostRecentLeg=leg
		
		riseTime = color.get(self.riseSecs, time, delta) * 1000
		
		rows=len(constants.dmxChannels[leg])		
		maxVal=(6*rows)-.001
		val=color.Intify(color.Lineartooth(0,maxVal,riseTime,0))		
		yVal=color.Intify(DivideEffect(val,6))		
		if color.get(yVal,time,delta)<3:
			zVal=SubtractEffect(5,ModEffect(val,6))	#small squares first
		else:
			zVal=ModEffect(val,6)					#big squares first
		
		#keep track of the number of loops this bubble has done
		currentVal=val(time,delta)
		if currentVal<self.prevVal:
			self.tickCount+=1
			self.isDone=True
		self.prevVal=currentVal
	
		bubbleColor = color.get(self.bubbleColor, time, delta)		
		
		return color.get(OneSquareByLoc(0, leg, yVal,zVal,
									bubbleColor, color.Black),time,delta)
コード例 #5
0
ファイル: trml2pdf.py プロジェクト: scsi110/mes-1
 def _table_style_get(self, style_node):
     styles = []
     for node in style_node.childNodes:
         if node.nodeType == node.ELEMENT_NODE:
             start = utils.tuple_int_get(node, 'start', (0, 0))
             stop = utils.tuple_int_get(node, 'stop', (-1, -1))
             if node.localName == 'blockValign':
                 styles.append(('VALIGN', start, stop,
                                str(node.getAttribute('value'))))
             elif node.localName == 'blockFont':
                 styles.append(
                     ('FONT', start, stop, str(node.getAttribute('name'))))
             elif node.localName == 'blockSpan':
                 styles.append(('SPAN', start, stop))
             elif node.localName == 'blockTextColor':
                 styles.append(
                     ('TEXTCOLOR', start, stop,
                      color.get(str(node.getAttribute('colorName')))))
             elif node.localName == 'blockLeading':
                 styles.append(
                     ('LEADING', start, stop,
                      utils.unit_get(node.getAttribute('length'))))
             elif node.localName == 'blockAlignment':
                 styles.append(('ALIGNMENT', start, stop,
                                str(node.getAttribute('value'))))
             elif node.localName == 'blockLeftPadding':
                 styles.append(
                     ('LEFTPADDING', start, stop,
                      utils.unit_get(node.getAttribute('length'))))
             elif node.localName == 'blockRightPadding':
                 styles.append(
                     ('RIGHTPADDING', start, stop,
                      utils.unit_get(node.getAttribute('length'))))
             elif node.localName == 'blockTopPadding':
                 styles.append(
                     ('TOPPADDING', start, stop,
                      utils.unit_get(node.getAttribute('length'))))
             elif node.localName == 'blockBottomPadding':
                 styles.append(
                     ('BOTTOMPADDING', start, stop,
                      utils.unit_get(node.getAttribute('length'))))
             elif node.localName == 'blockBackground':
                 styles.append(('BACKGROUND', start, stop,
                                color.get(node.getAttribute('colorName'))))
             if node.hasAttribute('size'):
                 styles.append(('FONTSIZE', start, stop,
                                utils.unit_get(node.getAttribute('size'))))
             elif node.localName == 'lineStyle':
                 kind = node.getAttribute('kind')
                 kind_list = [
                     'GRID', 'BOX', 'OUTLINE', 'INNERGRID', 'LINEBELOW',
                     'LINEABOVE', 'LINEBEFORE', 'LINEAFTER'
                 ]
                 assert kind in kind_list
                 thick = 1
                 if node.hasAttribute('thickness'):
                     thick = float(node.getAttribute('thickness'))
                 styles.append((kind, start, stop, thick,
                                color.get(node.getAttribute('colorName'))))
     return platypus.tables.TableStyle(styles)
コード例 #6
0
ファイル: trml2pdf.py プロジェクト: FashtimeDotCom/trml2pdf
 def render(self, node):
     tags = {
         'drawCentredString': self._drawCenteredString,
         'drawRightString': self._drawRightString,
         'drawString': self._drawString,
         'rect': self._rect,
         'ellipse': self._ellipse,
         'lines': self._lines,
         'grid': self._grid,
         'curves': self._curves,
         'fill': lambda node: self.canvas.setFillColor(color.get(node.getAttribute('color'))),
         'stroke': lambda node: self.canvas.setStrokeColor(color.get(node.getAttribute('color'))),
         'setFont': lambda node: self.canvas.setFont(node.getAttribute('name'), utils.unit_get(node.getAttribute('size'))),
         'place': self._place,
         'circle': self._circle,
         'lineMode': self._line_mode,
         'path': self._path,
         'rotate': lambda node: self.canvas.rotate(float(node.getAttribute('degrees'))),
         'translate': self._translate,
         'image': self._image
     }
     for nd in node.childNodes:
         if nd.nodeType==nd.ELEMENT_NODE:
             for tag in tags:
                 if nd.localName==tag:
                     tags[tag](nd)
                     break
コード例 #7
0
ファイル: trml2pdf.py プロジェクト: jordotech/trml2pdf
 def render(self, node):
     tags = {
         "drawCentredString": self._drawCenteredString,
         "drawRightString": self._drawRightString,
         "drawString": self._drawString,
         "rect": self._rect,
         "ellipse": self._ellipse,
         "lines": self._lines,
         "grid": self._grid,
         "curves": self._curves,
         "fill": lambda node: self.canvas.setFillColor(color.get(node.getAttribute("color"))),
         "stroke": lambda node: self.canvas.setStrokeColor(color.get(node.getAttribute("color"))),
         "setFont": lambda node: self.canvas.setFont(
             node.getAttribute("name"), utils.unit_get(node.getAttribute("size"))
         ),
         "place": self._place,
         "circle": self._circle,
         "lineMode": self._line_mode,
         "path": self._path,
         "rotate": lambda node: self.canvas.rotate(float(node.getAttribute("degrees"))),
         "translate": self._translate,
         "image": self._image,
     }
     for nd in node.childNodes:
         if nd.nodeType == nd.ELEMENT_NODE:
             for tag in tags:
                 if nd.localName == tag:
                     tags[tag](nd)
                     break
コード例 #8
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		z = color.get(self.z, time, delta)
		c = color.get(self.color, time, delta)
		
		r=[color.Black,color.Black,color.Black,color.Black,color.Black,color.Black]
		r[z] = c
		
		return r
コード例 #9
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		frame=self.background(time, delta)
		currentSix=self.sixPattern(time, delta)
		x=color.get(self.x,time,delta)
		y=color.get(self.y,time,delta)
		
		frame[0][x][y]=currentSix
		
		return frame
コード例 #10
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		period = color.get(self.period, time, delta)		
		percRot = delta / period
		degRot = percRot * 360		
		self.rotation += degRot
		self.rotation %= 360
		
		#Calculate tilt degrees by layer
		curTiltDegree = color.get(self.tiltDegree, time, delta)
		tiltArr = []
		for i in range(constants.HEIGHT_OUTER):
			tiltVal=curTiltDegree*i/constants.HEIGHT_OUTER
			tiltArr.append(tiltVal)
		
		#Calculate degrees delay by Z layer
		curZDegree = color.get(self.zDegree, time, delta)
		zArr = []
		for i in range(constants.CUBE_DEPTH):
			zVal=curZDegree*i/constants.CUBE_DEPTH
			zArr.append(zVal)
		fissureZDelay=0-zArr[2]
		
		#cubes
		c=[]
		for i in range(len(constants.dmxChannels)):
			c.append([])
			for j in range(len(constants.dmxChannels[i])):
				c[i].append([])
				for k in range(len(constants.dmxChannels[i][j])):
					c[i][j].append([])
					c[i][j][k]=color.rainbowValue(((float(constants.degreeOnCircle[i][j][k])+self.rotation-tiltArr[j]+zArr[k])%360)/360)
					#c[i][j][k]=color.Rainbow(rotPercent)
					#r[i][j][k]=color.Rainbow(float(constants.degreeOnCircle[i][j][k])/360)
	
		#leaves
		l=[]
		for i in range(len(constants.dmxLeafChannels)):
			l.append([])
			for j in range(len(constants.dmxLeafChannels[i])):
				l[i].append([])
				zLayer=0
				if j==2:
					zLayer=3
				l[i][j]=color.rainbowValue(((float(constants.dmxLeafDegrees[i][j])+self.rotation-tiltArr[4]+zArr[zLayer])%360)/360)		
				#l[i][j]=color.Rainbow(float(constants.dmxLeafDegrees[i][j])/360)
				
		#fissures
		f=[]
		for i in range(len(constants.dmxFissureChannels)):
			f.append([])
			f[i]=color.rainbowValue(((float(constants.dmxFissureDegrees[i])+self.rotation-fissureZDelay)%360)/360)		
			#f[i]=color.Rainbow(float(constants.dmxFissureDegrees[i])/360)	
		
		self.frame = [c,l,f]
		return self.frame
コード例 #11
0
 def render(self, node):
     tags = {
         'drawCentredString':
         self._drawCenteredString,
         'drawRightString':
         self._drawRightString,
         'drawString':
         self._drawString,
         'rect':
         self._rect,
         'ellipse':
         self._ellipse,
         'lines':
         self._lines,
         'grid':
         self._grid,
         'curves':
         self._curves,
         'fill':
         lambda node: self.canvas.setFillColor(
             color.get(node.getAttribute('color'))),
         'stroke':
         lambda node: self.canvas.setStrokeColor(
             color.get(node.getAttribute('color'))),
         'setFont':
         lambda node: self.canvas.setFont(
             node.getAttribute('name'),
             utils.unit_get(node.getAttribute('size'))),
         'place':
         self._place,
         'circle':
         self._circle,
         'lineMode':
         self._line_mode,
         'path':
         self._path,
         'rotate':
         lambda node: self.canvas.rotate(float(node.getAttribute('degrees'))
                                         ),
         'translate':
         self._translate,
         'image':
         self._image
     }
     for nd in node.childNodes:
         if nd.nodeType == nd.ELEMENT_NODE:
             for tag in tags:
                 if nd.localName == tag:
                     tags[tag](nd)
                     break
コード例 #12
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		layer = color.get(self.layer, time, delta)
		currentSix = self.sixPattern(time, delta)
		
		#current background frame
		frame = self.backgroundEffect(time, delta)
		
		#foreach leg
		for x in range(6):
			if x%2==1:				#inner leg
				if layer<4:
					frame[0][x][layer]=currentSix
				elif layer==4:
					#convert to leaf
					iLeaf=int((x-1)/2)
					frame[1][iLeaf]=SixToLeaf(currentSix)
			else:					#outer leg				
				frame[0][x][layer]=currentSix
		
		#fissures
		if layer==0:
			for i in range(len(frame[2])):
				frame[2][i]=SixToFissure(currentSix)

		self.frame = frame
		
		return Frame.__call__(self, time, delta)
コード例 #13
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		z = color.get(self.zPos,time,delta)
				
		#Move to next color if needed
		if z==0 and self.lastZ==1:
			if type(self.squareColor)==RandomColorSource:
				self.squareColor.NextColor()	#works if is RandomColorSource.	
				
		self.lastZ=z
		
		#Determine inner or outer legs
		if z>5:
			legOffset=0
		else:
			legOffset=1
		
		#Convert to correct z-dimension
		z%=6
		z=5-z
		
		#Render 6-pattern
		sixPatternBottom=SixSingle(z,self.squareColor)		
		sixPatternTop=SixSingle(5-z,self.squareColor)		
		
		#Amplify to correct legs
		effect=AdditionEffect([SixToLegDiff(0+legOffset,sixPatternBottom,sixPatternTop,MonoFrame(color.Black))
								  ,SixToLegDiff(2+legOffset,sixPatternBottom,sixPatternTop,MonoFrame(color.Black))
								  ,SixToLegDiff(4+legOffset,sixPatternBottom,sixPatternTop,MonoFrame(color.Black))])								  
		
		self.frame=effect(time,delta)		
		return Frame.__call__(self, time, delta)
コード例 #14
0
 def _para_style_update(self, node):
     data = {}
     for attr in ['textColor', 'backColor', 'bulletColor', 'borderColor']:
         if node.get(attr):
             data[attr] = color.get(node.get(attr))
     for attr in ['bulletFontName', 'fontName']:
         if node.get(attr):
             fontname= select_fontname(node.get(attr), None)
             if fontname is not None:
                 data['fontName'] = fontname
     for attr in ['bulletText']:
         if node.get(attr):
             data[attr] = node.get(attr)
     for attr in ['fontSize', 'leftIndent', 'rightIndent', 'spaceBefore', 'spaceAfter',
         'firstLineIndent', 'bulletIndent', 'bulletFontSize', 'leading',
         'borderWidth','borderPadding','borderRadius']:
         if node.get(attr):
             data[attr] = utils.unit_get(node.get(attr))
     if node.get('alignment'):
         align = {
             'right':reportlab.lib.enums.TA_RIGHT,
             'center':reportlab.lib.enums.TA_CENTER,
             'justify':reportlab.lib.enums.TA_JUSTIFY
         }
         data['alignment'] = align.get(node.get('alignment').lower(), reportlab.lib.enums.TA_LEFT)
     return data
コード例 #15
0
 def _para_style_update(self, node):
     data = {}
     for attr in ['textColor', 'backColor', 'bulletColor', 'borderColor']:
         if node.get(attr):
             data[attr] = color.get(node.get(attr))
     for attr in ['bulletFontName', 'fontName']:
         if node.get(attr):
             fontname= select_fontname(node.get(attr), None)
             if fontname is not None:
                 data['fontName'] = fontname
     for attr in ['bulletText']:
         if node.get(attr):
             data[attr] = node.get(attr)
     for attr in ['fontSize', 'leftIndent', 'rightIndent', 'spaceBefore', 'spaceAfter',
         'firstLineIndent', 'bulletIndent', 'bulletFontSize', 'leading',
         'borderWidth','borderPadding','borderRadius']:
         if node.get(attr):
             data[attr] = utils.unit_get(node.get(attr))
     if node.get('alignment'):
         align = {
             'right':reportlab.lib.enums.TA_RIGHT,
             'center':reportlab.lib.enums.TA_CENTER,
             'justify':reportlab.lib.enums.TA_JUSTIFY
         }
         data['alignment'] = align.get(node.get('alignment').lower(), reportlab.lib.enums.TA_LEFT)
     return data
コード例 #16
0
ファイル: trml2pdf.py プロジェクト: jordotech/trml2pdf
 def _para_style_update(self, style, node):
     for attr in ["textColor", "backColor", "bulletColor"]:
         if node.hasAttribute(attr):
             style.__dict__[attr] = color.get(node.getAttribute(attr))
     for attr in ["fontName", "bulletFontName", "bulletText"]:
         if node.hasAttribute(attr):
             style.__dict__[attr] = node.getAttribute(attr)
     for attr in [
         "fontSize",
         "leftIndent",
         "rightIndent",
         "spaceBefore",
         "spaceAfter",
         "firstLineIndent",
         "bulletIndent",
         "bulletFontSize",
         "leading",
     ]:
         if node.hasAttribute(attr):
             style.__dict__[attr] = utils.unit_get(node.getAttribute(attr))
     if node.hasAttribute("alignment"):
         align = {
             "right": reportlab.lib.enums.TA_RIGHT,
             "center": reportlab.lib.enums.TA_CENTER,
             "justify": reportlab.lib.enums.TA_JUSTIFY,
         }
         style.alignment = align.get(node.getAttribute("alignment").lower(), reportlab.lib.enums.TA_LEFT)
     return style
コード例 #17
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		leg = color.get(self.leg, time, delta)
		currentSixBottom = self.sixPatternBottom(time, delta)
		currentSixTop = self.sixPatternTop(time, delta)
		
		#current background frame
		frame = self.backgroundEffect(time, delta)
		
		#foreach layer
		for y in range(len(frame[0][leg])):
			if y<3:		#bottom
				frame[0][leg][y]=currentSixBottom
			else:		#top
				frame[0][leg][y]=currentSixTop
						
		if leg%2==1:
			#Is inner leg. Apply to leaf as well.
			iLeaf=int((leg-1)/2)
			frame[1][iLeaf]=SixToLeaf(currentSixTop)
		else:
			#Is outer leg.  Apply to fissure.
			iFissure=int(leg/2)
			frame[2][iFissure]=SixToFissure(currentSixBottom)

		self.frame = frame
		
		return Frame.__call__(self, time, delta)
コード例 #18
0
ファイル: trml2pdf.py プロジェクト: jordotech/trml2pdf
 def _table_style_get(self, style_node):
     styles = []
     for node in style_node.childNodes:
         if node.nodeType == node.ELEMENT_NODE:
             start = utils.tuple_int_get(node, "start", (0, 0))
             stop = utils.tuple_int_get(node, "stop", (-1, -1))
             if node.localName == "blockValign":
                 styles.append(("VALIGN", start, stop, str(node.getAttribute("value"))))
             elif node.localName == "blockFont":
                 styles.append(("FONT", start, stop, str(node.getAttribute("name"))))
             elif node.localName == "blockTextColor":
                 styles.append(("TEXTCOLOR", start, stop, color.get(str(node.getAttribute("colorName")))))
             elif node.localName == "blockLeading":
                 styles.append(("LEADING", start, stop, utils.unit_get(node.getAttribute("length"))))
             elif node.localName == "blockAlignment":
                 styles.append(("ALIGNMENT", start, stop, str(node.getAttribute("value"))))
             elif node.localName == "blockLeftPadding":
                 styles.append(("LEFTPADDING", start, stop, utils.unit_get(node.getAttribute("length"))))
             elif node.localName == "blockRightPadding":
                 styles.append(("RIGHTPADDING", start, stop, utils.unit_get(node.getAttribute("length"))))
             elif node.localName == "blockTopPadding":
                 styles.append(("TOPPADDING", start, stop, utils.unit_get(node.getAttribute("length"))))
             elif node.localName == "blockBottomPadding":
                 styles.append(("BOTTOMPADDING", start, stop, utils.unit_get(node.getAttribute("length"))))
             elif node.localName == "blockBackground":
                 styles.append(("BACKGROUND", start, stop, color.get(node.getAttribute("colorName"))))
             if node.hasAttribute("size"):
                 styles.append(("FONTSIZE", start, stop, utils.unit_get(node.getAttribute("size"))))
             elif node.localName == "lineStyle":
                 kind = node.getAttribute("kind")
                 kind_list = [
                     "GRID",
                     "BOX",
                     "OUTLINE",
                     "INNERGRID",
                     "LINEBELOW",
                     "LINEABOVE",
                     "LINEBEFORE",
                     "LINEAFTER",
                 ]
                 assert kind in kind_list
                 thick = 1
                 if node.hasAttribute("thickness"):
                     thick = float(node.getAttribute("thickness"))
                 styles.append((kind, start, stop, thick, color.get(node.getAttribute("colorName"))))
     return platypus.tables.TableStyle(styles)
コード例 #19
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):	
		#determine the current number of seconds we will delay
		delaySec=color.get(self.delaySec, time, delta)
		
		effectiveTime=time-(delaySec*1000)
		effectiveDelta=effectiveTime-self.lastEffectiveTime
		self.lastEffectiveTime=effectiveTime
		
		return self.baseFrame(effectiveTime,effectiveDelta)		
コード例 #20
0
    def printc(self, col, *args):
        self.printLine('|')
        row = '|'

        for i in range(len(self.lengths)):
            if (self.lengths[i] < 0):
                fmt = ' {:<' + str(abs(self.lengths[i])) + '}|'
            else:
                fmt = ' {:' + str(abs(self.lengths[i])) + '}|'
            row += fmt.format(args[i])
        self.printFunc(color.get(col, row))
        self.pause()
コード例 #21
0
ファイル: trml2pdf.py プロジェクト: FashtimeDotCom/trml2pdf
 def _table_style_get(self, style_node):
     styles = []
     for node in style_node.childNodes:
         if node.nodeType==node.ELEMENT_NODE:
             start = utils.tuple_int_get(node, 'start', (0,0) )
             stop = utils.tuple_int_get(node, 'stop', (-1,-1) )
             if node.localName=='blockValign':
                 styles.append(('VALIGN', start, stop, str(node.getAttribute('value'))))
             elif node.localName=='blockFont':
                 styles.append(('FONT', start, stop, str(node.getAttribute('name'))))
             elif node.localName=='blockSpan':
                     styles.append(('SPAN', start, stop))
             elif node.localName=='blockTextColor':
                 styles.append(('TEXTCOLOR', start, stop, color.get(str(node.getAttribute('colorName')))))
             elif node.localName=='blockLeading':
                 styles.append(('LEADING', start, stop, utils.unit_get(node.getAttribute('length'))))
             elif node.localName=='blockAlignment':
                 styles.append(('ALIGNMENT', start, stop, str(node.getAttribute('value'))))
             elif node.localName=='blockLeftPadding':
                 styles.append(('LEFTPADDING', start, stop, utils.unit_get(node.getAttribute('length'))))
             elif node.localName=='blockRightPadding':
                 styles.append(('RIGHTPADDING', start, stop, utils.unit_get(node.getAttribute('length'))))
             elif node.localName=='blockTopPadding':
                 styles.append(('TOPPADDING', start, stop, utils.unit_get(node.getAttribute('length'))))
             elif node.localName=='blockBottomPadding':
                 styles.append(('BOTTOMPADDING', start, stop, utils.unit_get(node.getAttribute('length'))))
             elif node.localName=='blockBackground':
                 styles.append(('BACKGROUND', start, stop, color.get(node.getAttribute('colorName'))))
             if node.hasAttribute('size'):
                 styles.append(('FONTSIZE', start, stop, utils.unit_get(node.getAttribute('size'))))
             elif node.localName=='lineStyle':
                 kind = node.getAttribute('kind')
                 kind_list = [ 'GRID', 'BOX', 'OUTLINE', 'INNERGRID', 'LINEBELOW', 'LINEABOVE','LINEBEFORE', 'LINEAFTER' ]
                 assert kind in kind_list
                 thick = 1
                 if node.hasAttribute('thickness'):
                     thick = float(node.getAttribute('thickness'))
                 styles.append((kind, start, stop, thick,  color.get(node.getAttribute('colorName'))))
     return platypus.tables.TableStyle(styles)
コード例 #22
0
 def render(self, node):
     tags = {
         'drawCentredString': self._drawCenteredString,
         'drawRightString': self._drawRightString,
         'drawString': self._drawString,
         'rect': self._rect,
         'ellipse': self._ellipse,
         'lines': self._lines,
         'grid': self._grid,
         'curves': self._curves,
         'fill': lambda node: self.canvas.setFillColor(color.get(node.get('color'))),
         'stroke': lambda node: self.canvas.setStrokeColor(color.get(node.get('color'))),
         'setFont': self.setFont ,
         'place': self._place,
         'circle': self._circle,
         'lineMode': self._line_mode,
         'path': self._path,
         'rotate': lambda node: self.canvas.rotate(float(node.get('degrees'))),
         'translate': self._translate,
         'image': self._image
     }
     for n in utils._child_get(node, self):
         if n.tag in tags:
             tags[n.tag](n)
コード例 #23
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		if (self.firstCall):
			self.firstCall=False
			self.firstCallTime=time-delta #elapsed is never quite zero, in case that would be a problem.
			self.elapsed=0.0
		
		#Note this does not depend on delta, so it can be called multiple times within one frame.
		self.elapsed=time-self.firstCallTime	
		
		#Determine if time is up
		if self.elapsed>(self.runSecs*1000):
			self.isComplete=True
		
		#Get current frame/value/etc.
		return color.get(self.pattern,self.elapsed,delta)
コード例 #24
0
ファイル: trml2pdf.py プロジェクト: guzzi235/saas3
 def render(self, node):
     tags = {
         "drawCentredString": self._drawCenteredString,
         "drawRightString": self._drawRightString,
         "drawString": self._drawString,
         "rect": self._rect,
         "ellipse": self._ellipse,
         "lines": self._lines,
         "grid": self._grid,
         "curves": self._curves,
         "fill": lambda node: self.canvas.setFillColor(color.get(node.get("color"))),
         "stroke": lambda node: self.canvas.setStrokeColor(color.get(node.get("color"))),
         "setFont": self.setFont,
         "place": self._place,
         "circle": self._circle,
         "lineMode": self._line_mode,
         "path": self._path,
         "rotate": lambda node: self.canvas.rotate(float(node.get("degrees"))),
         "translate": self._translate,
         "image": self._image,
     }
     for n in utils._child_get(node, self):
         if n.tag in tags:
             tags[n.tag](n)
コード例 #25
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		s = color.get(self.s, time, delta)
		x = color.get(self.x, time, delta)
		y = color.get(self.y, time, delta)
		z = color.get(self.z, time, delta)
		colorOne = color.get(self.colorOne, time, delta)
		backgroundColor = color.get(self.backgroundColor, time, delta)		
		
		self.frame=MonoFrame(backgroundColor).frame
		self.frame[s][x][y][z]=colorOne
		
		return Frame.__call__(self, time, delta)
コード例 #26
0
ファイル: trml2pdf.py プロジェクト: FashtimeDotCom/trml2pdf
 def _para_style_update(self, style, node):
     for attr in ['textColor', 'backColor', 'bulletColor']:
         if node.hasAttribute(attr):
             style.__dict__[attr] = color.get(node.getAttribute(attr))
     for attr in ['fontName', 'bulletFontName', 'bulletText']:
         if node.hasAttribute(attr):
             style.__dict__[attr] = node.getAttribute(attr)
     for attr in ['fontSize', 'leftIndent', 'rightIndent', 'spaceBefore', 'spaceAfter', 'firstLineIndent', 'bulletIndent', 'bulletFontSize', 'leading']:
         if node.hasAttribute(attr):
             style.__dict__[attr] = utils.unit_get(node.getAttribute(attr))
     if node.hasAttribute('alignment'):
         align = {
             'right':reportlab.lib.enums.TA_RIGHT,
             'center':reportlab.lib.enums.TA_CENTER,
             'justify':reportlab.lib.enums.TA_JUSTIFY
         }
         style.alignment = align.get(node.getAttribute('alignment').lower(), reportlab.lib.enums.TA_LEFT)
     return style
コード例 #27
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		period = color.get(self.period, time, delta)
		period = period/self.numBeads
		velocity = delta / period
		#velocity = period / self.numBeads
		self.position += velocity
	
		fpart, pos = math.modf(self.position)
		#fpart = abs(fpart)
		#if(self.position < 0):
		#	fpart = 1.0 - fpart
			
		iBead=int(pos)%self.numBeads
		
		r=[]
		for z in range(constants.CUBE_DEPTH):			
			r.append(self.beads[iBead%self.numBeads])
			iBead+=1
		
		return r
コード例 #28
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		frame = self.source(time, delta)
		period = color.get(self.period, time, delta)
		velocity = delta / period
		self.position += velocity
		
		#**** INCOMPLETE.  NEEDS TO ADDRESS LEAVES AND FISSURES ****

		#cubes
		cubes=frame[0]
		resolution = len(cubes)
		c=[]
		for i in range(len(cubes)):
			c.append([])
			for j in range(len(cubes[i])):
				if j<constants.HEIGHT_INNER:
					fpart, pos = math.modf(self.position)
					fpart = abs(fpart)
					if(self.position < 0):
						fpart = 1.0 - fpart
					cur = int(pos + i) % resolution
					next = int(cur + 1) % resolution			
				else:
					#The topmost cubes on the outer shell need special handling
					fpart, pos = math.modf(self.position)
					fpart = abs(fpart)
					if(self.position < 0):
						fpart = 1.0 - fpart
					cur = int(pos + i) % resolution
					next = int(int((int(cur + 1) % resolution)/2)*2)
					cur=int(int(cur/2)*2)
			
				c[i].append([])
				for k in range(len(cubes[i][j])):
					c[i][j].append([])
					color1=cubes[cur][j][k]
					color2=cubes[next][j][k]
					c[i][j][k]=color.blend(color1, color2, abs(fpart))
		#leaves
		#fissures
		return [c,frame[1],frame[2]]
コード例 #29
0
ファイル: trml2pdf.py プロジェクト: toamxinh/odoo8
 def _para_style_update(self, node):
     data = {}
     for attr in ["textColor", "backColor", "bulletColor", "borderColor"]:
         if node.get(attr):
             data[attr] = color.get(node.get(attr))
     for attr in ["bulletFontName", "fontName"]:
         if node.get(attr):
             fontname = select_fontname(node.get(attr), None)
             if fontname is not None:
                 data["fontName"] = fontname
     for attr in ["bulletText"]:
         if node.get(attr):
             data[attr] = node.get(attr)
     for attr in [
         "fontSize",
         "leftIndent",
         "rightIndent",
         "spaceBefore",
         "spaceAfter",
         "firstLineIndent",
         "bulletIndent",
         "bulletFontSize",
         "leading",
         "borderWidth",
         "borderPadding",
         "borderRadius",
     ]:
         if node.get(attr):
             data[attr] = utils.unit_get(node.get(attr))
     if node.get("alignment"):
         align = {
             "right": reportlab.lib.enums.TA_RIGHT,
             "center": reportlab.lib.enums.TA_CENTER,
             "justify": reportlab.lib.enums.TA_JUSTIFY,
         }
         data["alignment"] = align.get(node.get("alignment").lower(), reportlab.lib.enums.TA_LEFT)
     data["splitLongWords"] = 0
     return data
コード例 #30
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		z = color.get(self.zPos,time,delta)

		#Determine inner or outer legs
		if z>5:
			legOffset=0
		else:
			legOffset=1
		
		#Convert to correct z-dimension
		z%=6
		z=5-z
		
		#Render 6-pattern
		sixPattern=SixSingle(z,self.squareColor)		
		
		#Amplify to correct legs
		effect=AdditionEffect([SixToLeg(0+legOffset,sixPattern,MonoFrame(color.Black))
								  ,SixToLeg(2+legOffset,sixPattern,MonoFrame(color.Black))
								  ,SixToLeg(4+legOffset,sixPattern,MonoFrame(color.Black))])								  
		
		self.frame=effect(time,delta)		
		return Frame.__call__(self, time, delta)
コード例 #31
0
 def _para_style_update(self, style, node):
     for attr in ['textColor', 'backColor', 'bulletColor']:
         if node.hasAttribute(attr):
             style.__dict__[attr] = color.get(node.getAttribute(attr))
     for attr in ['fontName', 'bulletFontName', 'bulletText']:
         if node.hasAttribute(attr):
             style.__dict__[attr] = node.getAttribute(attr)
     for attr in [
             'fontSize', 'leftIndent', 'rightIndent', 'spaceBefore',
             'spaceAfter', 'firstLineIndent', 'bulletIndent',
             'bulletFontSize', 'leading'
     ]:
         if node.hasAttribute(attr):
             style.__dict__[attr] = utils.unit_get(node.getAttribute(attr))
     if node.hasAttribute('alignment'):
         align = {
             'right': reportlab.lib.enums.TA_RIGHT,
             'center': reportlab.lib.enums.TA_CENTER,
             'justify': reportlab.lib.enums.TA_JUSTIFY
         }
         style.alignment = align.get(
             node.getAttribute('alignment').lower(),
             reportlab.lib.enums.TA_LEFT)
     return style
コード例 #32
0
ファイル: trml2pdf.py プロジェクト: mrmoyeez/XacCRM
            return platypus.CondPageBreak(1000)  # TODO: change the 1000 !
        elif node.tag == 'setNextFrame':
            from reportlab.platypus.doctemplate import NextFrameFlowable
            return NextFrameFlowable(str(node.get('name')))
        elif node.tag == 'currentFrame':
            from reportlab.platypus.doctemplate import CurrentFrameFlowable
            return CurrentFrameFlowable(str(node.get('name')))
        elif node.tag == 'frameEnd':
            return EndFrameFlowable()
        elif node.tag == 'hr':
            width_hr = node.get('width') or '100%'
            color_hr = node.get('color') or 'black'
            thickness_hr = node.get('thickness') or 1
            lineCap_hr = node.get('lineCap') or 'round'
            return platypus.flowables.HRFlowable(width=width_hr,
                                                 color=color.get(color_hr),
                                                 thickness=float(thickness_hr),
                                                 lineCap=str(lineCap_hr))
        else:
            sys.stderr.write('Warning: flowable not yet implemented: %s !\n' %
                             (node.tag, ))
            return None

    def render(self, node_story):
        def process_story(node_story):
            sub_story = []
            for node in utils._child_get(node_story, self):
                if node.tag == etree.Comment:
                    node.text = ''
                    continue
                flow = self._flowable(node)
コード例 #33
0
ファイル: trml2pdf.py プロジェクト: Buyanbat/XacCRM
        elif node.tag=='nextFrame':
            return platypus.CondPageBreak(1000)           # TODO: change the 1000 !
        elif node.tag == 'setNextFrame':
            from reportlab.platypus.doctemplate import NextFrameFlowable
            return NextFrameFlowable(str(node.get('name')))
        elif node.tag == 'currentFrame':
            from reportlab.platypus.doctemplate import CurrentFrameFlowable
            return CurrentFrameFlowable(str(node.get('name')))
        elif node.tag == 'frameEnd':
            return EndFrameFlowable()
        elif node.tag == 'hr':
            width_hr=node.get('width') or '100%'
            color_hr=node.get('color')  or 'black'
            thickness_hr=node.get('thickness') or 1
            lineCap_hr=node.get('lineCap') or 'round'
            return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
        else:
            sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
            return None

    def render(self, node_story):
        def process_story(node_story):
            sub_story = []
            for node in utils._child_get(node_story, self):
                if node.tag == etree.Comment:
                    node.text = ''
                    continue
                flow = self._flowable(node)
                if flow:
                    if isinstance(flow,list):
                        sub_story = sub_story + flow
コード例 #34
0
ファイル: trml2pdf.py プロジェクト: guzzi235/saas3
    def _flowable(self, node, extra_style=None):
        if node.tag == "pto":
            return self._pto(node)
        if node.tag == "para":
            style = self.styles.para_style_get(node)
            if extra_style:
                style.__dict__.update(extra_style)
            result = []
            for i in self._textual(node).split("\n"):
                result.append(platypus.Paragraph(i, style, **(utils.attr_get(node, [], {"bulletText": "str"}))))
            return result
        elif node.tag == "barCode":
            try:
                from reportlab.graphics.barcode import code128
                from reportlab.graphics.barcode import code39
                from reportlab.graphics.barcode import code93
                from reportlab.graphics.barcode import common
                from reportlab.graphics.barcode import fourstate
                from reportlab.graphics.barcode import usps
                from reportlab.graphics.barcode import createBarcodeDrawing

            except ImportError:
                _logger.warning("Cannot use barcode renderers:", exc_info=True)
                return None
            args = utils.attr_get(
                node,
                [],
                {
                    "ratio": "float",
                    "xdim": "unit",
                    "height": "unit",
                    "checksum": "int",
                    "quiet": "int",
                    "width": "unit",
                    "stop": "bool",
                    "bearers": "int",
                    "barWidth": "float",
                    "barHeight": "float",
                },
            )
            codes = {
                "codabar": lambda x: common.Codabar(x, **args),
                "code11": lambda x: common.Code11(x, **args),
                "code128": lambda x: code128.Code128(str(x), **args),
                "standard39": lambda x: code39.Standard39(str(x), **args),
                "standard93": lambda x: code93.Standard93(str(x), **args),
                "i2of5": lambda x: common.I2of5(x, **args),
                "extended39": lambda x: code39.Extended39(str(x), **args),
                "extended93": lambda x: code93.Extended93(str(x), **args),
                "msi": lambda x: common.MSI(x, **args),
                "fim": lambda x: usps.FIM(x, **args),
                "postnet": lambda x: usps.POSTNET(x, **args),
                "ean13": lambda x: createBarcodeDrawing("EAN13", value=str(x), **args),
                "qrcode": lambda x: createBarcodeDrawing("QR", value=x, **args),
            }
            code = "code128"
            if node.get("code"):
                code = node.get("code").lower()
            return codes[code](self._textual(node))
        elif node.tag == "name":
            self.styles.names[node.get("id")] = node.get("value")
            return None
        elif node.tag == "xpre":
            style = self.styles.para_style_get(node)
            return platypus.XPreformatted(
                self._textual(node),
                style,
                **(utils.attr_get(node, [], {"bulletText": "str", "dedent": "int", "frags": "int"}))
            )
        elif node.tag == "pre":
            style = self.styles.para_style_get(node)
            return platypus.Preformatted(
                self._textual(node), style, **(utils.attr_get(node, [], {"bulletText": "str", "dedent": "int"}))
            )
        elif node.tag == "illustration":
            return self._illustration(node)
        elif node.tag == "blockTable":
            return self._table(node)
        elif node.tag == "title":
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles["Title"]
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {"bulletText": "str"})))
        elif re.match("^h([1-9]+[0-9]*)$", (node.tag or "")):
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles["Heading" + str(node.tag[1:])]
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {"bulletText": "str"})))
        elif node.tag == "image":
            image_data = False
            if not node.get("file"):
                if node.get("name"):
                    if node.get("name") in self.doc.images:
                        _logger.debug("Image %s read ", node.get("name"))
                        image_data = self.doc.images[node.get("name")].read()
                    else:
                        _logger.warning("Image %s not defined", node.get("name"))
                        return False
                else:
                    import base64

                    newtext = node.text
                    if self.localcontext:
                        newtext = utils._process_text(self, node.text or "")
                    image_data = base64.decodestring(newtext)
                if not image_data:
                    _logger.debug("No inline image data")
                    return False
                image = StringIO(image_data)
            else:
                _logger.debug("Image get from file %s", node.get("file"))
                image = _open_image(node.get("file"), path=self.doc.path)
            return platypus.Image(
                image, mask=(250, 255, 250, 255, 250, 255), **(utils.attr_get(node, ["width", "height"]))
            )
        elif node.tag == "spacer":
            if node.get("width"):
                width = utils.unit_get(node.get("width"))
            else:
                width = utils.unit_get("1cm")
            length = utils.unit_get(node.get("length"))
            return platypus.Spacer(width=width, height=length)
        elif node.tag == "section":
            return self.render(node)
        elif node.tag == "pageNumberReset":
            return PageReset()
        elif node.tag in ("pageBreak", "nextPage"):
            return platypus.PageBreak()
        elif node.tag == "condPageBreak":
            return platypus.CondPageBreak(**(utils.attr_get(node, ["height"])))
        elif node.tag == "setNextTemplate":
            return platypus.NextPageTemplate(str(node.get("name")))
        elif node.tag == "nextFrame":
            return platypus.CondPageBreak(1000)  # TODO: change the 1000 !
        elif node.tag == "setNextFrame":
            from reportlab.platypus.doctemplate import NextFrameFlowable

            return NextFrameFlowable(str(node.get("name")))
        elif node.tag == "currentFrame":
            from reportlab.platypus.doctemplate import CurrentFrameFlowable

            return CurrentFrameFlowable(str(node.get("name")))
        elif node.tag == "frameEnd":
            return EndFrameFlowable()
        elif node.tag == "hr":
            width_hr = node.get("width") or "100%"
            color_hr = node.get("color") or "black"
            thickness_hr = node.get("thickness") or 1
            lineCap_hr = node.get("lineCap") or "round"
            return platypus.flowables.HRFlowable(
                width=width_hr, color=color.get(color_hr), thickness=float(thickness_hr), lineCap=str(lineCap_hr)
            )
        else:
            sys.stderr.write("Warning: flowable not yet implemented: %s !\n" % (node.tag,))
            return None
コード例 #35
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		c=color.get(self.color, time, delta)
		r=[c,c,c,c,c,c]
		return r
コード例 #36
0
ファイル: trml2pdf.py プロジェクト: lbiemans/docker
    def _flowable(self, node, extra_style=None):
        if node.tag=='pto':
            return self._pto(node)
        if node.tag=='para':
            style = self.styles.para_style_get(node)
            if extra_style:
                style.__dict__.update(extra_style)
            result = []
            for i in self._textual(node).split('\n'):
                result.append(platypus.Paragraph(i, style, **(utils.attr_get(node, [], {'bulletText':'str'}))))
            return result
        elif node.tag=='barCode':
            try:
                from reportlab.graphics.barcode import code128
                from reportlab.graphics.barcode import code39
                from reportlab.graphics.barcode import code93
                from reportlab.graphics.barcode import common
                from reportlab.graphics.barcode import fourstate
                from reportlab.graphics.barcode import usps
                from reportlab.graphics.barcode import createBarcodeDrawing

            except ImportError:
                self._logger.warning("Cannot use barcode renderers:", exc_info=True)
                return None
            args = utils.attr_get(node, [], {'ratio':'float','xdim':'unit','height':'unit','checksum':'int','quiet':'int','width':'unit','stop':'bool','bearers':'int','barWidth':'float','barHeight':'float'})
            codes = {
                'codabar': lambda x: common.Codabar(x, **args),
                'code11': lambda x: common.Code11(x, **args),
                'code128': lambda x: code128.Code128(str(x), **args),
                'standard39': lambda x: code39.Standard39(str(x), **args),
                'standard93': lambda x: code93.Standard93(str(x), **args),
                'i2of5': lambda x: common.I2of5(x, **args),
                'extended39': lambda x: code39.Extended39(str(x), **args),
                'extended93': lambda x: code93.Extended93(str(x), **args),
                'msi': lambda x: common.MSI(x, **args),
                'fim': lambda x: usps.FIM(x, **args),
                'postnet': lambda x: usps.POSTNET(x, **args),
                'ean13': lambda x: createBarcodeDrawing('EAN13', value=str(x), **args),
                'qrcode': lambda x: createBarcodeDrawing('QR', value=x, **args),
            }
            code = 'code128'
            if node.get('code'):
                code = node.get('code').lower()
            return codes[code](self._textual(node))
        elif node.tag=='name':
            self.styles.names[ node.get('id')] = node.get('value')
            return None
        elif node.tag=='xpre':
            style = self.styles.para_style_get(node)
            return platypus.XPreformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int','frags':'int'})))
        elif node.tag=='pre':
            style = self.styles.para_style_get(node)
            return platypus.Preformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int'})))
        elif node.tag=='illustration':
            return  self._illustration(node)
        elif node.tag=='blockTable':
            return  self._table(node)
        elif node.tag=='title':
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Title']
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif re.match('^h([1-9]+[0-9]*)$', (node.tag or '')):
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Heading'+str(node.tag[1:])]
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif node.tag=='image':
            image_data = False
            if not node.get('file'):
                if node.get('name'):
                    if node.get('name') in self.doc.images:
                        self._logger.debug("Image %s read ", node.get('name'))
                        image_data = self.doc.images[node.get('name')].read()
                    else:
                        self._logger.warning("Image %s not defined", node.get('name'))
                        return False
                else:
                    import base64
                    if self.localcontext:
                        newtext = utils._process_text(self, node.text or '')
                        node.text = newtext
                    image_data = base64.decodestring(node.text)
                if not image_data:
                    self._logger.debug("No inline image data")
                    return False
                image = StringIO(image_data)
            else:
                self._logger.debug("Image get from file %s", node.get('file'))
                image = _open_image(node.get('file'), path=self.doc.path)
            return platypus.Image(image, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height'])))
        elif node.tag=='spacer':
            if node.get('width'):
                width = utils.unit_get(node.get('width'))
            else:
                width = utils.unit_get('1cm')
            length = utils.unit_get(node.get('length'))
            return platypus.Spacer(width=width, height=length)
        elif node.tag=='section':
            return self.render(node)
        elif node.tag == 'pageNumberReset':
            return PageReset()
        elif node.tag in ('pageBreak', 'nextPage'):
            return platypus.PageBreak()
        elif node.tag=='condPageBreak':
            return platypus.CondPageBreak(**(utils.attr_get(node, ['height'])))
        elif node.tag=='setNextTemplate':
            return platypus.NextPageTemplate(str(node.get('name')))
        elif node.tag=='nextFrame':
            return platypus.CondPageBreak(1000)           # TODO: change the 1000 !
        elif node.tag == 'setNextFrame':
            from reportlab.platypus.doctemplate import NextFrameFlowable
            return NextFrameFlowable(str(node.get('name')))
        elif node.tag == 'currentFrame':
            from reportlab.platypus.doctemplate import CurrentFrameFlowable
            return CurrentFrameFlowable(str(node.get('name')))
        elif node.tag == 'frameEnd':
            return EndFrameFlowable()
        elif node.tag == 'hr':
            width_hr=node.get('width') or '100%'
            color_hr=node.get('color')  or 'black'
            thickness_hr=node.get('thickness') or 1
            lineCap_hr=node.get('lineCap') or 'round'
            return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
        else:
            sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
            return None
コード例 #37
0
    def _flowable(self, node, extra_style=None):
        if node.tag=='pto':
            return self._pto(node)
        if node.tag=='para':
            style = self.styles.para_style_get(node)
            if extra_style:
                style.__dict__.update(extra_style)
            result = []
            for i in self._textual(node).split('\n'):
                result.append(platypus.Paragraph(i, style, **(utils.attr_get(node, [], {'bulletText':'str'}))))
            return result
        elif node.tag=='barCode':
            try:
                from reportlab.graphics.barcode import code128
                from reportlab.graphics.barcode import code39
                from reportlab.graphics.barcode import code93
                from reportlab.graphics.barcode import common
                from reportlab.graphics.barcode import fourstate
                from reportlab.graphics.barcode import usps
                from reportlab.graphics.barcode import createBarcodeDrawing

            except ImportError:
                _logger.warning("Cannot use barcode renderers:", exc_info=True)
                return None
            args = utils.attr_get(node, [], {'ratio':'float','xdim':'unit','height':'unit','checksum':'int','quiet':'int','width':'unit','stop':'bool','bearers':'int','barWidth':'float','barHeight':'float'})
            codes = {
                'codabar': lambda x: common.Codabar(x, **args),
                'code11': lambda x: common.Code11(x, **args),
                'code128': lambda x: code128.Code128(str(x), **args),
                'standard39': lambda x: code39.Standard39(str(x), **args),
                'standard93': lambda x: code93.Standard93(str(x), **args),
                'i2of5': lambda x: common.I2of5(x, **args),
                'extended39': lambda x: code39.Extended39(str(x), **args),
                'extended93': lambda x: code93.Extended93(str(x), **args),
                'msi': lambda x: common.MSI(x, **args),
                'fim': lambda x: usps.FIM(x, **args),
                'postnet': lambda x: usps.POSTNET(x, **args),
                'ean13': lambda x: createBarcodeDrawing('EAN13', value=str(x), **args),
                'qrcode': lambda x: createBarcodeDrawing('QR', value=x, **args),
            }
            code = 'code128'
            if node.get('code'):
                code = node.get('code').lower()
            return codes[code](self._textual(node))
        elif node.tag=='name':
            self.styles.names[ node.get('id')] = node.get('value')
            return None
        elif node.tag=='xpre':
            style = self.styles.para_style_get(node)
            return platypus.XPreformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int','frags':'int'})))
        elif node.tag=='pre':
            style = self.styles.para_style_get(node)
            return platypus.Preformatted(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str','dedent':'int'})))
        elif node.tag=='illustration':
            return  self._illustration(node)
        elif node.tag=='blockTable':
            return  self._table(node)
        elif node.tag=='title':
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Title']
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif re.match('^h([1-9]+[0-9]*)$', (node.tag or '')):
            styles = reportlab.lib.styles.getSampleStyleSheet()
            style = styles['Heading'+str(node.tag[1:])]
            return platypus.Paragraph(self._textual(node), style, **(utils.attr_get(node, [], {'bulletText':'str'})))
        elif node.tag=='image':
            image_data = False
            if not node.get('file'):
                if node.get('name'):
                    if node.get('name') in self.doc.images:
                        _logger.debug("Image %s read ", node.get('name'))
                        image_data = self.doc.images[node.get('name')].read()
                    else:
                        _logger.warning("Image %s not defined", node.get('name'))
                        return False
                else:
                    import base64
                    newtext = node.text
                    if self.localcontext:
                        newtext = utils._process_text(self, node.text or '')
                    image_data = base64.decodestring(newtext)
                if not image_data:
                    _logger.debug("No inline image data")
                    return False
                image = StringIO(image_data)
            else:
                _logger.debug("Image get from file %s", node.get('file'))
                image = _open_image(node.get('file'), path=self.doc.path)
            return platypus.Image(image, mask=(250,255,250,255,250,255), **(utils.attr_get(node, ['width','height'])))
        elif node.tag=='spacer':
            if node.get('width'):
                width = utils.unit_get(node.get('width'))
            else:
                width = utils.unit_get('1cm')
            length = utils.unit_get(node.get('length'))
            return platypus.Spacer(width=width, height=length)
        elif node.tag=='section':
            return self.render(node)
        elif node.tag == 'pageNumberReset':
            return PageReset()
        elif node.tag in ('pageBreak', 'nextPage'):
            return platypus.PageBreak()
        elif node.tag=='condPageBreak':
            return platypus.CondPageBreak(**(utils.attr_get(node, ['height'])))
        elif node.tag=='setNextTemplate':
            return platypus.NextPageTemplate(str(node.get('name')))
        elif node.tag=='nextFrame':
            return platypus.CondPageBreak(1000)           # TODO: change the 1000 !
        elif node.tag == 'setNextFrame':
            from reportlab.platypus.doctemplate import NextFrameFlowable
            return NextFrameFlowable(str(node.get('name')))
        elif node.tag == 'currentFrame':
            from reportlab.platypus.doctemplate import CurrentFrameFlowable
            return CurrentFrameFlowable(str(node.get('name')))
        elif node.tag == 'frameEnd':
            return EndFrameFlowable()
        elif node.tag == 'hr':
            width_hr=node.get('width') or '100%'
            color_hr=node.get('color')  or 'black'
            thickness_hr=node.get('thickness') or 1
            lineCap_hr=node.get('lineCap') or 'round'
            return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
        else:
            sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
            return None
コード例 #38
0
ファイル: effects.py プロジェクト: jkbelcher/idahocore2013
	def __call__(self, time, delta):
		partA = color.get(self.partA, time, delta)
		partB = color.get(self.partB, time, delta)
		
		return partA/partB