graphkit-vtk 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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: