extract_curves 0.0.1-i586-linux

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.
Files changed (99) hide show
  1. data/CVS/Entries +4 -0
  2. data/CVS/Repository +1 -0
  3. data/CVS/Root +1 -0
  4. data/bin/CVS/Entries +5 -0
  5. data/bin/CVS/Repository +1 -0
  6. data/bin/CVS/Root +1 -0
  7. data/bin/ec_rect2polar.rb +22 -0
  8. data/bin/ec_rev_lines.rb +5 -0
  9. data/bin/ec_sph_area.rb +30 -0
  10. data/bin/extract_curves.rb +2145 -0
  11. data/ruby_ext/CVS/Entries +1 -0
  12. data/ruby_ext/CVS/Repository +1 -0
  13. data/ruby_ext/CVS/Root +1 -0
  14. data/ruby_ext/pav/CVS/Entries +14 -0
  15. data/ruby_ext/pav/CVS/Repository +1 -0
  16. data/ruby_ext/pav/CVS/Root +1 -0
  17. data/ruby_ext/pav/extconf.rb +22 -0
  18. data/ruby_ext/pav/pav.so +0 -0
  19. data/ruby_libs/CVS/Entries +1 -0
  20. data/ruby_libs/CVS/Repository +1 -0
  21. data/ruby_libs/CVS/Root +1 -0
  22. data/ruby_libs/pav/CVS/Entries +20 -0
  23. data/ruby_libs/pav/CVS/Repository +1 -0
  24. data/ruby_libs/pav/CVS/Root +1 -0
  25. data/ruby_libs/pav/attr_cache.rb +211 -0
  26. data/ruby_libs/pav/attr_cache.t1.rb +32 -0
  27. data/ruby_libs/pav/cache.rb +31 -0
  28. data/ruby_libs/pav/dbg_log.rb +458 -0
  29. data/ruby_libs/pav/floatsio.rb +53 -0
  30. data/ruby_libs/pav/generator_cache.rb +165 -0
  31. data/ruby_libs/pav/gtk/CVS/Entries +4 -0
  32. data/ruby_libs/pav/gtk/CVS/Repository +1 -0
  33. data/ruby_libs/pav/gtk/CVS/Root +1 -0
  34. data/ruby_libs/pav/gtk/button.rb +130 -0
  35. data/ruby_libs/pav/gtk/icons.rb +87 -0
  36. data/ruby_libs/pav/gtk/toolbar.rb +192 -0
  37. data/ruby_libs/pav/heap.rb +54 -0
  38. data/ruby_libs/pav/icons/CVS/Entries +17 -0
  39. data/ruby_libs/pav/icons/CVS/Repository +1 -0
  40. data/ruby_libs/pav/icons/CVS/Root +1 -0
  41. data/ruby_libs/pav/icons/alt_handle.xpm +3832 -0
  42. data/ruby_libs/pav/icons/alt_handle_hover.xpm +3368 -0
  43. data/ruby_libs/pav/icons/alt_handle_pressed.xpm +3828 -0
  44. data/ruby_libs/pav/icons/extract_curves/CVS/Entries +6 -0
  45. data/ruby_libs/pav/icons/extract_curves/CVS/Repository +1 -0
  46. data/ruby_libs/pav/icons/extract_curves/CVS/Root +1 -0
  47. data/ruby_libs/pav/icons/extract_curves/extract_curves-icon-rgb.ppm +14 -0
  48. data/ruby_libs/pav/icons/extract_curves/extract_curves-logo-rgb.gif +0 -0
  49. data/ruby_libs/pav/icons/extract_curves/trace_mark.xpm +38 -0
  50. data/ruby_libs/pav/icons/handle.xpm +213 -0
  51. data/ruby_libs/pav/icons/next.xpm +29 -0
  52. data/ruby_libs/pav/icons/next_hover.xpm +315 -0
  53. data/ruby_libs/pav/icons/next_pressed.xpm +144 -0
  54. data/ruby_libs/pav/icons/prev.xpm +29 -0
  55. data/ruby_libs/pav/icons/prev_hover.xpm +315 -0
  56. data/ruby_libs/pav/icons/prev_pressed.xpm +144 -0
  57. data/ruby_libs/pav/icons/vnext.xpm +29 -0
  58. data/ruby_libs/pav/icons/vprev.xpm +29 -0
  59. data/ruby_libs/pav/numeric/CVS/Entries +2 -0
  60. data/ruby_libs/pav/numeric/CVS/Repository +1 -0
  61. data/ruby_libs/pav/numeric/CVS/Root +1 -0
  62. data/ruby_libs/pav/numeric/ext.rb +13 -0
  63. data/ruby_libs/pav/pav_find.rb +90 -0
  64. data/ruby_libs/pav/pix/CVS/Entries +11 -0
  65. data/ruby_libs/pav/pix/CVS/Repository +1 -0
  66. data/ruby_libs/pav/pix/CVS/Root +1 -0
  67. data/ruby_libs/pav/pix/aapix.rb +378 -0
  68. data/ruby_libs/pav/pix/blob.rb +543 -0
  69. data/ruby_libs/pav/pix/circle.rb +73 -0
  70. data/ruby_libs/pav/pix/contour/CVS/Entries +5 -0
  71. data/ruby_libs/pav/pix/contour/CVS/Repository +1 -0
  72. data/ruby_libs/pav/pix/contour/CVS/Root +1 -0
  73. data/ruby_libs/pav/pix/contour/calc_situations.rb +9 -0
  74. data/ruby_libs/pav/pix/contour/carp_calc.rb +212 -0
  75. data/ruby_libs/pav/pix/contour/situations.dmp +0 -0
  76. data/ruby_libs/pav/pix/contour/situations.rb +21 -0
  77. data/ruby_libs/pav/pix/contour.rb +644 -0
  78. data/ruby_libs/pav/pix/curve.rb +1508 -0
  79. data/ruby_libs/pav/pix/img_obj.rb +751 -0
  80. data/ruby_libs/pav/pix/node.rb +712 -0
  81. data/ruby_libs/pav/pix/node_grp.rb +853 -0
  82. data/ruby_libs/pav/pix/shaved_core.rb +534 -0
  83. data/ruby_libs/pav/pix/subpix.rb +212 -0
  84. data/ruby_libs/pav/pix.rb +402 -0
  85. data/ruby_libs/pav/rand_accessible.rb +16 -0
  86. data/ruby_libs/pav/rangeset.rb +63 -0
  87. data/ruby_libs/pav/search.rb +210 -0
  88. data/ruby_libs/pav/set.rb +20 -0
  89. data/ruby_libs/pav/string/CVS/Entries +6 -0
  90. data/ruby_libs/pav/string/CVS/Repository +1 -0
  91. data/ruby_libs/pav/string/CVS/Root +1 -0
  92. data/ruby_libs/pav/string/bits.rb +523 -0
  93. data/ruby_libs/pav/string/ext.rb +58 -0
  94. data/ruby_libs/pav/string/observable.rb +155 -0
  95. data/ruby_libs/pav/string/text.rb +79 -0
  96. data/ruby_libs/pav/string/words.rb +42 -0
  97. data/ruby_libs/pav/sub_arr.rb +55 -0
  98. data/ruby_libs/pav/traced_obj.rb +79 -0
  99. metadata +147 -0
@@ -0,0 +1,79 @@
1
+ require 'pav/string/ext'
2
+ require 'pav/string/observable'
3
+
4
+ class StringLns
5
+ attr_reader :ln_start_idxs, :str
6
+
7
+ include Enumerable
8
+
9
+ def initialize(str)
10
+ @str = str
11
+ @ln_start_idxs = []
12
+ i = 0
13
+ str.each_line { |ln|
14
+ @ln_start_idxs << i
15
+ i += ln.length
16
+ }
17
+ @ln_start_idxs << i
18
+ end
19
+
20
+ def [](*args)
21
+ if args.length == 1
22
+ is = args
23
+ elsif args.length == 2
24
+ is = args[0]..args[0]+args[1]-1
25
+ else
26
+ raise ArgumentError, "Unknown number of arguments"
27
+ end
28
+ res = is.collect{ |i|
29
+ if i < 0
30
+ if i <= -@ln_start_idxs.length
31
+ nil
32
+ else
33
+ @str[@ln_start_idxs[i-1]...
34
+ @ln_start_idxs[i]]
35
+ end
36
+ else
37
+ if i+1 >= @ln_start_idxs.length
38
+ nil
39
+ else
40
+ @str[@ln_start_idxs[i]...
41
+ @ln_start_idxs[i+1]]
42
+ end
43
+ end
44
+ }
45
+ if args.length == 1 && args[0].kind_of?(Numeric) then res[0]
46
+ else res end
47
+ end
48
+
49
+ def each
50
+ [0..@ln_start_idxs-1].each { |i|
51
+ yield @str[@ln_start_idxs[i]..@ln_start_idxs[i+1]]
52
+ }
53
+ end
54
+
55
+ def length
56
+ @ln_start_idxs.length - 1
57
+ end
58
+ end
59
+
60
+ class StringLnsObserver
61
+ def self.update(str, meth, args, block)
62
+ str.kill_lns
63
+ end
64
+ end
65
+
66
+ class String
67
+ def lns
68
+ self.add_observer(StringLnsObserver)
69
+ def lns
70
+ @lns = StringLns.new(self) unless @lns
71
+ @lns
72
+ end
73
+ self.lns
74
+ end
75
+
76
+ def kill_lns
77
+ @lns = nil
78
+ end
79
+ end
@@ -0,0 +1,42 @@
1
+ require 'pav/string/ext'
2
+
3
+ class String
4
+ PLURAL_ES = %w[tomatoes potatoes branches ses zes xes]
5
+ PLURAL_EN = %w[oxen]
6
+ PLURAL_VES_F = %w[dwarves shelves elves]
7
+ PLURAL_VES_FE = %w[lives knives]
8
+ PLURAL_ICES_EX = %w[indices vertices vortices]
9
+
10
+ PLURAL_TRANSFORMS = self.constants.find_all { |c|
11
+ c.starts_with("PLURAL_") }.collect { |c|
12
+ to, from = *c["PLURAL_".length...c.length].split("_")
13
+ to.downcase!
14
+ if from then from.downcase! else from = ""; end
15
+ [to, from, self.const_get(c)]
16
+ }
17
+ SINGULAR_TRANSFORMS = PLURAL_TRANSFORMS.collect { |pl_t|
18
+ [pl_t[1], pl_t[0], pl_t[2].collect{|w| w[0,w.length-pl_t[0].length].
19
+ concat(pl_t[1])}]
20
+ }
21
+
22
+ def singular
23
+ dn_case = self.downcase
24
+ PLURAL_TRANSFORMS.each { |t| t[2].each { |word|
25
+ return self[0, self.length-t[0].length].concat(t[1]) if
26
+ dn_case.ends_with(word)
27
+ }}
28
+ if dn_case.ends_with("s")
29
+ return self[0, self.length-1]
30
+ end
31
+ self.dup
32
+ end
33
+
34
+ def plural
35
+ dn_case = self.downcase
36
+ SINGULAR_TRANSFORMS.each { |t| t[2].each { |word|
37
+ return self[0, self.length-t[0].length].concat(t[1]) if
38
+ dn_case.ends_with(word)
39
+ }}
40
+ self + "s"
41
+ end
42
+ end
@@ -0,0 +1,55 @@
1
+ require 'pav/dbg_log'
2
+ require 'pav/rand_accessible'
3
+
4
+ class SubArr
5
+ include RandomlyReadable
6
+ include Enumerable
7
+
8
+ attr_reader :arr
9
+ attr_accessor :start_i, :end_i
10
+
11
+ def initialize(arr, start_i=0, end_i=nil)
12
+ @arr = arr
13
+ @start_i = start_i
14
+ @end_i = end_i ? end_i : @arr.length
15
+ end
16
+
17
+ def at(i)
18
+ i = self.length + i if i < 0
19
+ i += @start_i
20
+ return nil if i < @start_i || i >= @end_i
21
+ @arr.at(i % @arr.length)
22
+ end
23
+
24
+ def length
25
+ end_i - start_i
26
+ end
27
+
28
+ def empty?
29
+ self.length < 1
30
+ end
31
+
32
+ def first
33
+ self.at(0)
34
+ end
35
+
36
+ def each
37
+ return if @arr.empty?
38
+ for i in @start_i...@end_i
39
+ yield(@arr.at(i % @arr.length))
40
+ end
41
+ end
42
+
43
+ def to_a
44
+ res = Array.new(self.length)
45
+ self.each_with_index { |lm, i| res[i] = lm }
46
+ res
47
+ end
48
+
49
+ def to_s(expand_arr=false)
50
+ "<#{self.class.name}:#{"%x" % self.object_id} @start_i=#{
51
+ @start_i}, @end_i=#{end_i} @arr: #{expand_arr&&expand_arr!=0 ?
52
+ @arr.inspect : @arr.length.to_s + " element" +
53
+ (@arr.length==1 ? "" : "s")}>"
54
+ end
55
+ end
@@ -0,0 +1,79 @@
1
+ require 'pav/dbg_log'
2
+
3
+ class TracedObj
4
+ attr_reader :__to_filters__, :__to_obj__
5
+ attr_accessor :__to_processor__
6
+
7
+ def initialize(obj, excl_meths=[])
8
+ @__to_obj__ = obj
9
+ if excl_meths && !excl_meths.empty?
10
+ @__to_filters__ = [ proc { |obj, id, args, block|
11
+ !excl_meths.include?(id) } ]
12
+ else
13
+ @__to_filters__ = []
14
+ end
15
+ @__to_processor__ = proc { |obj, id, args, block|
16
+ $PDbgLog.sig_call(self)
17
+ $PDbgLog.puts_msg "#{obj.class.name}#{(
18
+ obj.kind_of?(Class) || obj.kind_of?(Module)) ? "#" :
19
+ "."}#{id}(#{args.collect {|a| a.inspect}.join(", ")
20
+ }) #{caller(2).join("\n")}"
21
+ res = obj.send(id, *args, &block)
22
+ $PDbgLog.sig_return(res.inspect)
23
+ res
24
+ }
25
+ end
26
+
27
+ def method_missing(id, *args, &block)
28
+ for filt in @__to_filters__
29
+ return @__to_obj__.send(id, *args, &block) unless
30
+ filt.call(@__to_obj__, id, args, block)
31
+ end
32
+ @__to_processor__.call(@__to_obj__, id, args, block)
33
+ end
34
+
35
+ def __to_add_filter__(block=Proc.new)
36
+ if block
37
+ @__to_filters__.push(block)
38
+ @__to_filters__.length-1
39
+ else
40
+ nil
41
+ end
42
+ end
43
+
44
+ def to_s(*args, &block)
45
+ id = "to_s"
46
+ for filt in @__to_filters__
47
+ return @__to_obj__.send(id, *args, &block) unless
48
+ filt.call(@__to_obj__, id, args, block)
49
+ end
50
+ @__to_processor__.call(@__to_obj__, id, args, block)
51
+ end
52
+
53
+ def to_a(*args, &block)
54
+ id = "to_a"
55
+ for filt in @__to_filters__
56
+ return @__to_obj__.send(id, *args, &block) unless
57
+ filt.call(@__to_obj__, id, args, block)
58
+ end
59
+ @__to_processor__.call(@__to_obj__, id, args, block)
60
+ end
61
+
62
+ def inspect(*args, &block)
63
+ id = "inspect"
64
+ for filt in @__to_filters__
65
+ return @__to_obj__.send(id, *args, &block) unless
66
+ filt.call(@__to_obj__, id, args, block)
67
+ end
68
+ @__to_processor__.call(@__to_obj__, id, args, block)
69
+ end
70
+
71
+ def hash(*args, &block)
72
+ id = "hash"
73
+ for filt in @__to_filters__
74
+ return @__to_obj__.send(id, *args, &block) unless
75
+ filt.call(@__to_obj__, id, args, block)
76
+ end
77
+ @__to_processor__.call(@__to_obj__, id, args, block)
78
+ end
79
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: extract_curves
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2005-11-15 00:00:00 -05:00
8
+ summary: GUI digitizer of a raster trace of the geometric curve corresponding to the characteristics of motion of a process.
9
+ require_paths:
10
+ - ruby_libs
11
+ - ruby_ext
12
+ email: pavpen@berkeley.edu
13
+ homepage:
14
+ rubyforge_project:
15
+ description: "Extract Curves a simplistic GTK Ruby-based appliaction which can convert the raster image file result of a geometric-trace-producing process's interaction with the characteristic of motion of another (interesting) process into a list of rectangular coordinates (in raster image's system) representing the inferred characteristic of motion of an image blob. Blob recognition is done by color: * by maximum pixel neighbor-to-neighbor difference * by maximum difference from blob's average color * by maximum difference from a pixel neighborhood's average color (using RGB or HSV). Use other software to pre-process (e.g. enhance contrast, or even reduce to gray scale), but Extract Curves's skeletonization is done based on the hypothesis of a recognized image blob, as opposed to a collection of pixels. Output is human-readable (tab-separated)."
16
+ autorequire:
17
+ default_executable: extract_curves
18
+ bindir: bin
19
+ has_rdoc: false
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 1.8.3
25
+ version:
26
+ platform: i586-linux
27
+ signing_key:
28
+ cert_chain:
29
+ authors:
30
+ - Pavel Minev Penev
31
+ files:
32
+ - CVS/Entries
33
+ - CVS/Repository
34
+ - CVS/Root
35
+ - bin/extract_curves.rb
36
+ - bin/ec_sph_area.rb
37
+ - bin/ec_rev_lines.rb
38
+ - bin/ec_rect2polar.rb
39
+ - bin/CVS/Entries
40
+ - bin/CVS/Repository
41
+ - bin/CVS/Root
42
+ - ruby_ext/pav/pav.so
43
+ - ruby_ext/pav/extconf.rb
44
+ - ruby_ext/pav/CVS/Entries
45
+ - ruby_ext/pav/CVS/Repository
46
+ - ruby_ext/pav/CVS/Root
47
+ - ruby_ext/CVS/Entries
48
+ - ruby_ext/CVS/Repository
49
+ - ruby_ext/CVS/Root
50
+ - ruby_libs/pav/string/observable.rb
51
+ - ruby_libs/pav/string/text.rb
52
+ - ruby_libs/pav/string/ext.rb
53
+ - ruby_libs/pav/string/bits.rb
54
+ - ruby_libs/pav/string/words.rb
55
+ - ruby_libs/pav/string/CVS/Entries
56
+ - ruby_libs/pav/string/CVS/Repository
57
+ - ruby_libs/pav/string/CVS/Root
58
+ - ruby_libs/pav/numeric/ext.rb
59
+ - ruby_libs/pav/numeric/CVS/Entries
60
+ - ruby_libs/pav/numeric/CVS/Repository
61
+ - ruby_libs/pav/numeric/CVS/Root
62
+ - ruby_libs/pav/icons/vprev.xpm
63
+ - ruby_libs/pav/icons/vnext.xpm
64
+ - ruby_libs/pav/icons/prev_pressed.xpm
65
+ - ruby_libs/pav/icons/prev_hover.xpm
66
+ - ruby_libs/pav/icons/prev.xpm
67
+ - ruby_libs/pav/icons/next_pressed.xpm
68
+ - ruby_libs/pav/icons/next_hover.xpm
69
+ - ruby_libs/pav/icons/next.xpm
70
+ - ruby_libs/pav/icons/handle.xpm
71
+ - ruby_libs/pav/icons/alt_handle_pressed.xpm
72
+ - ruby_libs/pav/icons/alt_handle_hover.xpm
73
+ - ruby_libs/pav/icons/alt_handle.xpm
74
+ - ruby_libs/pav/icons/extract_curves/trace_mark.xpm
75
+ - ruby_libs/pav/icons/extract_curves/extract_curves-logo-rgb.gif
76
+ - ruby_libs/pav/icons/extract_curves/extract_curves-icon-rgb.ppm
77
+ - ruby_libs/pav/icons/extract_curves/CVS/Entries
78
+ - ruby_libs/pav/icons/extract_curves/CVS/Repository
79
+ - ruby_libs/pav/icons/extract_curves/CVS/Root
80
+ - ruby_libs/pav/icons/CVS/Entries
81
+ - ruby_libs/pav/icons/CVS/Repository
82
+ - ruby_libs/pav/icons/CVS/Root
83
+ - ruby_libs/pav/traced_obj.rb
84
+ - ruby_libs/pav/sub_arr.rb
85
+ - ruby_libs/pav/set.rb
86
+ - ruby_libs/pav/search.rb
87
+ - ruby_libs/pav/rangeset.rb
88
+ - ruby_libs/pav/rand_accessible.rb
89
+ - ruby_libs/pav/pix.rb
90
+ - ruby_libs/pav/pav_find.rb
91
+ - ruby_libs/pav/heap.rb
92
+ - ruby_libs/pav/generator_cache.rb
93
+ - ruby_libs/pav/floatsio.rb
94
+ - ruby_libs/pav/dbg_log.rb
95
+ - ruby_libs/pav/cache.rb
96
+ - ruby_libs/pav/attr_cache.t1.rb
97
+ - ruby_libs/pav/attr_cache.rb
98
+ - ruby_libs/pav/pix/subpix.rb
99
+ - ruby_libs/pav/pix/shaved_core.rb
100
+ - ruby_libs/pav/pix/node_grp.rb
101
+ - ruby_libs/pav/pix/node.rb
102
+ - ruby_libs/pav/pix/img_obj.rb
103
+ - ruby_libs/pav/pix/curve.rb
104
+ - ruby_libs/pav/pix/contour.rb
105
+ - ruby_libs/pav/pix/circle.rb
106
+ - ruby_libs/pav/pix/blob.rb
107
+ - ruby_libs/pav/pix/aapix.rb
108
+ - ruby_libs/pav/pix/contour/situations.rb
109
+ - ruby_libs/pav/pix/contour/situations.dmp
110
+ - ruby_libs/pav/pix/contour/carp_calc.rb
111
+ - ruby_libs/pav/pix/contour/calc_situations.rb
112
+ - ruby_libs/pav/pix/contour/CVS/Entries
113
+ - ruby_libs/pav/pix/contour/CVS/Repository
114
+ - ruby_libs/pav/pix/contour/CVS/Root
115
+ - ruby_libs/pav/pix/CVS/Entries
116
+ - ruby_libs/pav/pix/CVS/Repository
117
+ - ruby_libs/pav/pix/CVS/Root
118
+ - ruby_libs/pav/gtk/toolbar.rb
119
+ - ruby_libs/pav/gtk/icons.rb
120
+ - ruby_libs/pav/gtk/button.rb
121
+ - ruby_libs/pav/gtk/CVS/Entries
122
+ - ruby_libs/pav/gtk/CVS/Repository
123
+ - ruby_libs/pav/gtk/CVS/Root
124
+ - ruby_libs/pav/CVS/Entries
125
+ - ruby_libs/pav/CVS/Repository
126
+ - ruby_libs/pav/CVS/Root
127
+ - ruby_libs/CVS/Entries
128
+ - ruby_libs/CVS/Repository
129
+ - ruby_libs/CVS/Root
130
+ test_files: []
131
+
132
+ rdoc_options: []
133
+
134
+ extra_rdoc_files: []
135
+
136
+ executables:
137
+ - ec_rect2polar.rb
138
+ - ec_rev_lines.rb
139
+ - ec_sph_area.rb
140
+ - extract_curves.rb
141
+ extensions: []
142
+
143
+ requirements:
144
+ - libgtk2-ruby >= 2.6.0
145
+ - libgtk2.0-0 >= 2.6.0
146
+ dependencies: []
147
+