From 61ad95ca712a374f6e58127fda738b67c57d743d Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Wed, 04 Jan 2017 21:19:52 +0000
Subject: [PATCH] Added many changes to trisurf.py. Mostly readability. Great fix in class Runner by introducing @property tag

---
 python/trisurf/VTKRendering.py |   99 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/python/trisurf/VTKRendering.py b/python/trisurf/VTKRendering.py
index c393051..76ff9e7 100644
--- a/python/trisurf/VTKRendering.py
+++ b/python/trisurf/VTKRendering.py
@@ -4,19 +4,100 @@
 	from vtk import *
 
 
+
+class MultiRender:
+	def __init__(self,args,host):
+		target_runs=getRargetRunIdxList(args)
+		if target_runs==None:
+			target_runs=list(range(1,len(host['runs'])+1))
+		nruns=len(target_runs)
+		#prepare rendering window
+		self.renderer_window = vtkRenderWindow()
+		self.renderer_window.AddRenderer(self.renderer)
+		self.renderer_window.SetSize(1200,600)
+		interactor = vtkRenderWindowInteractor()
+		interactor.SetRenderWindow(self.renderer_window)
+		interactor.Initialize()
+		interactor.AddObserver("TimerEvent", self.RenderUpdate)
+		timerIDR = interactor.CreateRepeatingTimer(1000)
+		self.filename=[]
+		self.renderer=[]
+		i=0
+		for run in target_runs:	
+			#for each target run calculate renderer location
+			r.vtkRenderer()
+			r.SetBackground(0,0,0)
+			p=1.0/float(nruns)
+			x1=i*p
+			x2=(i+1)*p
+			r.SetViewport(x1,0.0,x2,1.0)
+			self.renderer.Append(r)
+			self.renderer_window.AddRenderer(r)
+			i=i+1
+		#call Renderer object with Run, renderer
+		#start endless loop of interactor
+		interactor.Start()
+
+	def lastVTU(self,run):
+		Dir=trisurf.Directory(maindir=run.maindir,simdir=run.subdir)
+		filename=os.path.join("./",Dir.fullpath(),run.getLastVTU())
+		return filename
+
+	def lastActorForRun(self,run):
+		filename=self.lastVTU(run)
+		reader=vtkXMLUnstructuredGridReader()
+		reader.SetFileName(self.filename)
+		reader.Update() # Needed because of GetScalarRange
+		output = reader.GetOutput()
+		scalar_range = output.GetScalarRange()
+		mapper = vtkDataSetMapper()
+		mapper.SetInput(output)
+		mapper.SetScalarRange(scalar_range)
+
+		# Create the Actor
+		actor = vtkActor()
+		actor.SetMapper(mapper)
+		return actor
+
+
+
+	def RenderUpdate(self, obj, event):
+		i=0
+		for run in runs:
+			if(self.lastVTU(run)!=self.filename[i]):
+				#print("updejt")
+				self.renderer.RemoveActor(self.actor)
+				self.renderer.RemoveActor(self.textactor)
+				self.actor=self.lastActor()
+				self.textactor=self.textActor()
+				self.renderer.AddActor(self.actor)
+				self.renderer.AddActor(self.textactor)
+				self.renderer_window.Render()
+			#self.render.RemoveActor(self.actor)
+			i=i+1	
+		return
+
+
 class Renderer:
 	def __init__(self,args,host):
 		self.host=host
 		self.args=args
 		self.renderer = vtkRenderer()
 		self.actor=self.lastActor()
+		self.textactor=self.textActor()
 		self.renderer.AddActor(self.actor)
+		self.renderer.AddActor(self.textactor)
 		self.renderer.SetBackground(0, 0, 0) # Set background to white
-
 		# Create the RendererWindow
 		self.renderer_window = vtkRenderWindow()
 		self.renderer_window.AddRenderer(self.renderer)
-		
+		self.renderer_window.SetSize(1200,600)
+	
+		self.renderer.SetViewport(0.0,0.0,0.5,1.0)
+		rend=vtk.vtkRenderer()
+		rend.AddActor(self.actor)
+		rend.SetViewport(0.5,0.0,1.0,1.0)
+		self.renderer_window.AddRenderer(rend)	
 # Set up a check for aborting rendering.
 		# Create the RendererWindowInteractor and display the vtk_file
 		interactor = vtkRenderWindowInteractor()
@@ -32,6 +113,15 @@
 		Dir=trisurf.Directory(maindir=self.host['runs'][0].maindir,simdir=self.host['runs'][0].subdir)
 		filename=os.path.join("./",Dir.fullpath(),self.host['runs'][0].getLastVTU())
 		return filename
+
+	def textActor(self):
+		textactor=vtkTextActor()
+		textactor.SetInput(self.filename)
+		tp=textactor.GetTextProperty()
+		tp.SetColor(1,1,1)
+		tp.SetFontSize(11)
+		textactor.SetDisplayPosition(20,30)
+		return textactor
 
 	def lastActor(self):
 		self.filename=self.lastVTU()
@@ -52,10 +142,13 @@
 
 	def RenderUpdate(self, obj, event):
 		if(self.lastVTU()!=self.filename):
-			print("updejt")
+			#print("updejt")
 			self.renderer.RemoveActor(self.actor)
+			self.renderer.RemoveActor(self.textactor)
 			self.actor=self.lastActor()
+			self.textactor=self.textActor()
 			self.renderer.AddActor(self.actor)
+			self.renderer.AddActor(self.textactor)
 			self.renderer_window.Render()
 		#self.render.RemoveActor(self.actor)
 		

--
Gitblit v1.9.3