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 CHANGED
@@ -1 +1 @@
1
- 0.3.0
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.0"
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 = "2012-12-31"
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
- vtk = vtk_og.vtk_module
211
- #filter = vtk.vtkWindowToImageFilter
212
- #vtk_og.renderer_window.SetOffScreenRendering(1)
213
- #gf = vtk.vtkGraphicsFactory
214
- #gf.SetOffScreenOnlyMode(1)
215
- vtk_og.renderer_window.Start
216
- #vtk_og.reader.Update
217
- #vtk_og.renderer.Update
218
- #filter.SetInput(vtk_og.renderer_window)
219
- case File.extname(output_file)
220
- when '.jpeg', '.jpg'
221
- jpeg_writer = vtk.vtkJPEGWriter
222
- #vtk_og.renderer.DeviceRender
223
- #jpeg_writer.SetInput(vtk_og.renderer.GetOutput)
224
- #jpeg_writer.SetInput(render_large.GetOutput)
225
- jpeg_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
226
- #filter.Update
227
- jpeg_writer.SetFileName(output_file)
228
- jpeg_writer.Write
229
- end
230
- vtk_og.renderer_window.Finalize
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.0
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: 2012-12-31 00:00:00.000000000 Z
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: 2250138545871999803
146
+ hash: 2778311942598943607
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  none: false
149
149
  requirements: