All pastes #349994 Raw Edit

Someone

public text v1 · immutable
·published 2007-02-11 04:39 UTC
rendered paste body
At the top:
import cairo

Then later on:
		
	def OnDraw(self, widget, event):
		"""
		Fires off the drawing operation.
		
		Parameters:
			widget -- reserved for GTK callbacks, don't use it explicitly.
			event -- reserved for GTK callbacks, don't use it explicitly.
		"""
		if self.savedLine == None:
			self.DrawLine()
			
		d = widget.window
		gc = d.new_gc()
		
		# Get a cairo surface for this drawing op
		context = widget.window.cairo_create()

		# Give it our waveform image as a source
		context.set_source_surface(self.savedLine, 0,0)	

		# Blit our waveform across
		context.paint()
		
##		# redraw area from saved gtk.gdk.Image
##		d.draw_image(gc, self.savedLine,
##					 event.area.x, event.area.y,
##					 event.area.x, event.area.y,
##					 event.area.width, event.area.height)

		# Draw play cursor position
		# Set the color:
		col = gc.get_colormap().alloc_color("#FF0000")
		gc.set_foreground(col)
		# And draw:
		x = int(round((self.project.transport.position - self.project.viewStart) * self.project.viewScale))
		d.draw_line(gc, x, 0, x, self.get_allocation().height)	
	
	#_____________________________________________________________________
		
	def DrawLine(self):
		""" 
		Draws the timeline and saves it to memory
		Must be called initially and to redraw the timeline
		after moving the project start.
		
		"""
		rect = self.get_allocation()
		self.savedLine = cairo.ImageSurface(cairo.FORMAT_ARGB32, rect.width, rect.height)

		context = cairo.Context(self.savedLine)
		context.set_line_width(2)
		context.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
		
		
		# Draw white background
		context.rectangle(0, 0, rect.width, rect.height)
		context.set_source_rgb(1,1,1)
		context.fill()