graphkit-vtk 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/graphkit-vtk.gemspec +2 -2
- data/lib/graphkit-vtk.rb +69 -30
- metadata +3 -3
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.3. | 
| 1 | 
            +
            0.3.1
         | 
    
        data/graphkit-vtk.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "graphkit-vtk"
         | 
| 8 | 
            -
              s.version = "0.3. | 
| 8 | 
            +
              s.version = "0.3.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Edmund Highcock"]
         | 
| 12 | 
            -
              s.date = " | 
| 12 | 
            +
              s.date = "2013-11-30"
         | 
| 13 13 | 
             
              s.description = "An extension allowing graphkits to be rendered using the Visualization Toolkit. Uses the RubyPython gem to access the Python bindings for VTK."
         | 
| 14 14 | 
             
              s.email = "edmundhighcock@sourceforge.net"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
    
        data/lib/graphkit-vtk.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            require 'rubypython'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            class GraphKit
         | 
| 2 4 | 
             
            	class VTKObjectGroup
         | 
| 3 5 |  | 
| @@ -42,6 +44,18 @@ class GraphKit | |
| 42 44 |  | 
| 43 45 | 
             
            		# A hash containing other VTK objects
         | 
| 44 46 | 
             
            		attr_reader :other_objects
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            		def delete
         | 
| 49 | 
            +
            			#([@reader, @mapper, @actor, @volume, @renderer, @renderer_window, @large_image_renderer, @interactor] + other_objects.values).each do |obj|
         | 
| 50 | 
            +
            				#next unless obj
         | 
| 51 | 
            +
            				#begin
         | 
| 52 | 
            +
            					#obj.Delete
         | 
| 53 | 
            +
            				#rescue NoMethodError => err
         | 
| 54 | 
            +
            					#puts err, obj
         | 
| 55 | 
            +
            					#next
         | 
| 56 | 
            +
            				#end
         | 
| 57 | 
            +
            			#end
         | 
| 58 | 
            +
            		end
         | 
| 45 59 |  | 
| 46 60 |  | 
| 47 61 | 
             
            	end
         | 
| @@ -135,12 +149,10 @@ class GraphKit | |
| 135 149 | 
             
            		temp_write = false
         | 
| 136 150 | 
             
            		unless filename
         | 
| 137 151 | 
             
            			temp_write = true
         | 
| 138 | 
            -
            			filename = (Time.now.to_i).to_s + rand(1000000).to_s + ".tmp.vtk"
         | 
| 152 | 
            +
            			filename = (Time.now.to_i).to_s +  $$.to_s + rand(1000000).to_s + ".tmp.vtk"
         | 
| 139 153 | 
             
            			to_vtk_legacy_fast(file_name: filename)
         | 
| 140 154 | 
             
            		end
         | 
| 141 155 |  | 
| 142 | 
            -
            		require 'rubypython'
         | 
| 143 | 
            -
            		RubyPython.start
         | 
| 144 156 | 
             
            		vtk_og = VTKObjectGroup.new
         | 
| 145 157 | 
             
            		vtk  = vtk_og.vtk_module = RubyPython.import('vtk')
         | 
| 146 158 | 
             
            		file_name = filename
         | 
| @@ -205,29 +217,32 @@ class GraphKit | |
| 205 217 | 
             
            	# rendering.
         | 
| 206 218 |  | 
| 207 219 | 
             
            	def vtk_render(output_file='window', input_file=nil, &block)
         | 
| 220 | 
            +
            		#RubyPython.start
         | 
| 208 221 | 
             
            		vtk_og = vtk_object_group(filename)
         | 
| 209 222 | 
             
            		yield(vtk_og) if block
         | 
| 210 | 
            -
            		 | 
| 211 | 
            -
            		# | 
| 212 | 
            -
            		 | 
| 213 | 
            -
            		 | 
| 214 | 
            -
            		 | 
| 215 | 
            -
            		 | 
| 216 | 
            -
            		#vtk_og. | 
| 217 | 
            -
            		 | 
| 218 | 
            -
            		 | 
| 219 | 
            -
            		 | 
| 220 | 
            -
            		 | 
| 221 | 
            -
             | 
| 222 | 
            -
            			 | 
| 223 | 
            -
            			 | 
| 224 | 
            -
            			 | 
| 225 | 
            -
            			jpeg_writer.SetInput( | 
| 226 | 
            -
            			 | 
| 227 | 
            -
            			 | 
| 228 | 
            -
            			jpeg_writer. | 
| 229 | 
            -
             | 
| 230 | 
            -
            		 | 
| 223 | 
            +
            		write_file(output_file, vtk_og)
         | 
| 224 | 
            +
            		#vtk = vtk_og.vtk_module
         | 
| 225 | 
            +
            		##filter = vtk.vtkWindowToImageFilter 
         | 
| 226 | 
            +
            		##vtk_og.renderer_window.SetOffScreenRendering(1)
         | 
| 227 | 
            +
            		##gf = vtk.vtkGraphicsFactory
         | 
| 228 | 
            +
            		##gf.SetOffScreenOnlyMode(1)
         | 
| 229 | 
            +
            		#vtk_og.renderer_window.Start
         | 
| 230 | 
            +
            		##vtk_og.reader.Update
         | 
| 231 | 
            +
            		##vtk_og.renderer.Update
         | 
| 232 | 
            +
            		##filter.SetInput(vtk_og.renderer_window)
         | 
| 233 | 
            +
            		###########case File.extname(output_file)
         | 
| 234 | 
            +
            		###########when '.jpeg', '.jpg'
         | 
| 235 | 
            +
            			###########jpeg_writer = vtk.vtkJPEGWriter
         | 
| 236 | 
            +
            			############vtk_og.renderer.DeviceRender
         | 
| 237 | 
            +
            			############jpeg_writer.SetInput(vtk_og.renderer.GetOutput)
         | 
| 238 | 
            +
            			############jpeg_writer.SetInput(render_large.GetOutput)
         | 
| 239 | 
            +
            			###########jpeg_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
         | 
| 240 | 
            +
            			############filter.Update
         | 
| 241 | 
            +
            			###########jpeg_writer.SetFileName(output_file)
         | 
| 242 | 
            +
            			###########jpeg_writer.Write
         | 
| 243 | 
            +
            		###########end
         | 
| 244 | 
            +
            		#vtk_og.renderer_window.Finalize
         | 
| 245 | 
            +
            		#RubyPython.stop
         | 
| 231 246 |  | 
| 232 247 | 
             
            	end
         | 
| 233 248 |  | 
| @@ -239,18 +254,18 @@ class GraphKit | |
| 239 254 | 
             
            	#
         | 
| 240 255 | 
             
            	# function can be :raycast or :tetrahedra
         | 
| 241 256 | 
             
            	#
         | 
| 242 | 
            -
            	def vtk_volume_object_group( function = :raycast, filename = nil)
         | 
| 257 | 
            +
            	def vtk_volume_object_group( function = :raycast, filename = nil, options={})
         | 
| 243 258 | 
             
            		# If we are not given a filename, need to write the
         | 
| 244 259 | 
             
            		# data in VTK format... can change at some point? 
         | 
| 245 260 | 
             
            		temp_write = false
         | 
| 246 261 | 
             
            		unless filename
         | 
| 247 262 | 
             
            			temp_write = true
         | 
| 248 | 
            -
            			filename = (Time.now.to_i).to_s + rand(1000000).to_s + ".tmp.vtk"
         | 
| 263 | 
            +
            			filename = (Time.now.to_i).to_s + $$.to_s + rand(1000000).to_s + ".tmp.vtk"
         | 
| 249 264 | 
             
            			to_vtk_legacy_fast(file_name: filename)
         | 
| 250 265 | 
             
            		end
         | 
| 251 266 |  | 
| 252 | 
            -
            		require 'rubypython'
         | 
| 253 | 
            -
            		RubyPython.start
         | 
| 267 | 
            +
            		#require 'rubypython'
         | 
| 268 | 
            +
            		#RubyPython.start
         | 
| 254 269 | 
             
            		vtk_og = VTKObjectGroup.new
         | 
| 255 270 | 
             
            		vtk  = vtk_og.vtk_module = RubyPython.import('vtk')
         | 
| 256 271 | 
             
            		file_name = filename
         | 
| @@ -279,6 +294,11 @@ class GraphKit | |
| 279 294 | 
             
            		ep scalar_range.to_a
         | 
| 280 295 | 
             
            		max = max.to_s.to_f
         | 
| 281 296 | 
             
            		min = min.to_s.to_f
         | 
| 297 | 
            +
            		range = (max-min)
         | 
| 298 | 
            +
            		if options[:cut_range_factor]
         | 
| 299 | 
            +
            		min = min + range/2.0*options[:cut_range_factor]
         | 
| 300 | 
            +
            		max = max - range/2.0*options[:cut_range_factor] 
         | 
| 301 | 
            +
            		end
         | 
| 282 302 | 
             
            		ep 'max', max, max.class, 'min', min, min.class
         | 
| 283 303 |  | 
| 284 304 | 
             
            		coltranfunc.AddRGBPoint(min, 0.0, 0.0, 1.0)
         | 
| @@ -297,6 +317,7 @@ class GraphKit | |
| 297 317 |  | 
| 298 318 | 
             
            		case function
         | 
| 299 319 | 
             
            		when :raycast
         | 
| 320 | 
            +
            			ep "RAYCAST"
         | 
| 300 321 | 
             
            			vtk_og.mapper = mapper = vtk.vtkUnstructuredGridVolumeRayCastMapper
         | 
| 301 322 | 
             
            			mapper.SetInput(tf.GetOutput)
         | 
| 302 323 | 
             
            			mapper.SetRayCastFunction(vtk.vtkUnstructuredGridBunykRayCastFunction)
         | 
| @@ -359,10 +380,17 @@ class GraphKit | |
| 359 380 | 
             
            	# The optional block yields a VTKObjectGroup which contains references 
         | 
| 360 381 | 
             
            	# to all the VTK objects for arbitrary manipulation before
         | 
| 361 382 | 
             
            	# rendering.
         | 
| 362 | 
            -
             | 
| 383 | 
            +
             
         | 
| 384 | 
            +
            #puts 'LOADING'	
         | 
| 363 385 | 
             
            	def vtk_render_volume(output_file='window', function = :raycast, input_file=nil, &block)
         | 
| 386 | 
            +
            		puts 'HERE'
         | 
| 364 387 | 
             
            		vtk_og = vtk_volume_object_group(function, filename)
         | 
| 365 388 | 
             
            		yield(vtk_og) if block
         | 
| 389 | 
            +
            		write_file(output_file, vtk_og)
         | 
| 390 | 
            +
            		#vtk_og.delete
         | 
| 391 | 
            +
            	end
         | 
| 392 | 
            +
             | 
| 393 | 
            +
            	def write_file(output_file, vtk_og)
         | 
| 366 394 | 
             
            		vtk = vtk_og.vtk_module
         | 
| 367 395 | 
             
            		#filter = vtk.vtkWindowToImageFilter 
         | 
| 368 396 | 
             
            		#vtk_og.renderer_window.SetOffScreenRendering(1)
         | 
| @@ -382,9 +410,20 @@ class GraphKit | |
| 382 410 | 
             
            			#filter.Update
         | 
| 383 411 | 
             
            			jpeg_writer.SetFileName(output_file)
         | 
| 384 412 | 
             
            			jpeg_writer.Write
         | 
| 413 | 
            +
            		when '.gif'
         | 
| 414 | 
            +
            			gif_writer = vtk.vtkGIFWriter
         | 
| 415 | 
            +
            			gif_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
         | 
| 416 | 
            +
            			gif_writer.SetFileName(output_file)
         | 
| 417 | 
            +
            			gif_writer.Write
         | 
| 418 | 
            +
            		when '.tiff'
         | 
| 419 | 
            +
            			tiff_writer = vtk.vtkTIFFWriter
         | 
| 420 | 
            +
            			tiff_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
         | 
| 421 | 
            +
            			tiff_writer.SetFileName(output_file)
         | 
| 422 | 
            +
            			tiff_writer.Write
         | 
| 423 | 
            +
            		else
         | 
| 424 | 
            +
            			raise 'Cannot write files of this type: ' + output_file
         | 
| 385 425 | 
             
            		end
         | 
| 386 426 | 
             
            		vtk_og.renderer_window.Finalize
         | 
| 387 | 
            -
             | 
| 388 427 | 
             
            	end
         | 
| 389 428 |  | 
| 390 429 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: graphkit-vtk
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2013-11-30 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: graphkit
         | 
| @@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 143 143 | 
             
                  version: '0'
         | 
| 144 144 | 
             
                  segments:
         | 
| 145 145 | 
             
                  - 0
         | 
| 146 | 
            -
                  hash:  | 
| 146 | 
            +
                  hash: 2778311942598943607
         | 
| 147 147 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 148 148 | 
             
              none: false
         | 
| 149 149 | 
             
              requirements:
         |