extract_curves 0.0.1-i586-linux

Sign up to get free protection for your applications and to get access to all the features.
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,130 @@
1
+ require 'gtk2'
2
+ require 'pav/gtk/icons'
3
+
4
+ module PGtk
5
+
6
+ class Button < Gtk::Viewport
7
+ attr_reader :content, :content_hover, :content_pressed, :hovered,
8
+ :pressed, :show_box, :hide_box
9
+ attr_accessor :left_click_proc, :middle_click_proc,
10
+ :right_click_proc
11
+
12
+ def initialize(cont_spec=nil, w_cont_hover=nil, h_cont_hover=nil,
13
+ cont_hover=nil, cont_pressed=nil, &left_click_proc)
14
+ if cont_pressed
15
+ @content = PGtk.stock_image_of_size(cont_spec,
16
+ w_cont_hover, h_cont_hover)
17
+ @content_hover = PGtk.stock_image_of_size(cont_hover,
18
+ w_cont_hover, h_cont_hover)
19
+ @content_pressed = PGtk.stock_image_of_size(
20
+ cont_pressed, w_cont_hover, h_cont_hover)
21
+ elsif cont_hover
22
+ @content = PGtk.stock_image_of_size(cont_spec,
23
+ w_cont_hover, h_cont_hover)
24
+ @content_hover = PGtk.stock_image_of_size(cont_hover,
25
+ w_cont_hover, h_cont_hover)
26
+ elsif h_cont_hover
27
+ if w_cont_hover.kind_of?(Integer)
28
+ @content = PGtk.stock_image_of_size(cont_spec,
29
+ w_cont_hover, h_cont_hover)
30
+ @content_hover = nil
31
+ else
32
+ @content = Gtk::Image.new(cont_spec, h_cont_hover)
33
+ @content_hover = Gtk::Image.new(w_cont_hover,
34
+ h_cont_hover)
35
+ end
36
+ elsif w_cont_hover
37
+ if w_cont_hover.kind_of?(Symbol)
38
+ @content = Gtk::Image.new(cont_spec,
39
+ Gtk::IconSize::BUTTON)
40
+ @content_hover = Gtk::Image.new(w_cont_hover,
41
+ Gtk::IconSize::BUTTON)
42
+ else
43
+ @content = Gtk::Image.new(cont_spec, w_cont_hover)
44
+ @content_hover = nil
45
+ end
46
+ elsif cont_spec
47
+ @content = Gtk::Image.new(cont_spec,
48
+ Gtk::IconSize::BUTTON)
49
+ @content_hover = nil
50
+ end
51
+ @left_click_proc = left_click_proc if block_given?
52
+ super(nil, nil)
53
+ @show_box = Gtk::HBox.new(false, 1)
54
+ @hide_box = Gtk::HBox.new(false, 1)
55
+ self << @show_box
56
+ @show_box.pack_start(@content, true, true) if @content
57
+ @hide_box.pack_start(@content_hover, true, true) if
58
+ @content_hover
59
+ @hide_box.pack_start(@content_pressed, true, true) if
60
+ @content_pressed
61
+ self.events |= Gdk::Event::BUTTON_RELEASE_MASK |
62
+ Gdk::Event::BUTTON_PRESS_MASK |
63
+ Gdk::Event::ENTER_NOTIFY_MASK |
64
+ Gdk::Event::LEAVE_NOTIFY_MASK
65
+ self.shadow_type = Gtk::SHADOW_OUT
66
+ self.signal_connect('button_press_event') { |wgt, ev|
67
+ @pressed = ev.button
68
+ if [@left_click_proc, @middle_click_proc,
69
+ @right_click_proc].at(@pressed-1) &&
70
+ @content_pressed
71
+ tmp=(@content_hover ? @content_hover : @content)
72
+ tmp.reparent(@hide_box)
73
+ tmp.hide
74
+ @content_pressed.reparent(@show_box)
75
+ @content_pressed.show
76
+ end
77
+ false
78
+ }
79
+ self.signal_connect('button_release_event') { |wgt, ev|
80
+ @pressed = nil
81
+ if @content_pressed
82
+ @content_pressed.reparent(@hide_box)
83
+ @content_pressed.hide
84
+ tmp=(@content_hover ? @content_hover : @content)
85
+ tmp.reparent(@show_box)
86
+ tmp.show
87
+ end
88
+ if @hovered &&(tmp=[@left_click_proc,@middle_click_proc,
89
+ @right_click_proc].at(ev.button-1))
90
+ tmp.call(wgt, ev)
91
+ else
92
+ false
93
+ end
94
+ }
95
+ self.signal_connect('enter_notify_event') { |wgt, ev|
96
+ @hovered = true
97
+ if @pressed && [@left_click_proc, @middle_click_proc,
98
+ @right_click_proc].at(@pressed-1) &&
99
+ @content_pressed
100
+ @content.reparent(@hide_box)
101
+ @content.hide
102
+ @content_pressed.reparent(@show_box)
103
+ @content_pressed.show
104
+ elsif @content_hover
105
+ @content.reparent(@hide_box)
106
+ @content.hide
107
+ @content_hover.reparent(@show_box)
108
+ @content_hover.show
109
+ end
110
+ false
111
+ }
112
+ self.signal_connect('leave_notify_event') { |wgt, ev|
113
+ @hovered = false
114
+ if @pressed
115
+ @content_pressed.reparent(@hide_box)
116
+ @content_pressed.hide
117
+ @content_hover.reparent(@hide_box)
118
+ @content_hover.hide
119
+ elsif @content_hover
120
+ @content_hover.reparent(@hide_box)
121
+ @content_hover.hide
122
+ end
123
+ @content.reparent(@show_box)
124
+ @content.show
125
+ false
126
+ }
127
+ end
128
+ end
129
+
130
+ end
@@ -0,0 +1,87 @@
1
+ require 'gtk2'
2
+ require 'pav/pav_find'
3
+ require 'pav/string/ext'
4
+
5
+ module PGtk
6
+
7
+ pgtk_symbs = [[:"pgtk-handle", 'Handle', 'alt_handle.xpm'],
8
+ [:"pgtk-handle-hover", 'Handle', 'alt_handle_hover.xpm'],
9
+ [:"pgtk-handle-pressed", 'Handle', 'alt_handle_pressed.xpm'],
10
+ [:"pgtk-previous", 'Previous', 'prev.xpm'],
11
+ [:"pgtk-previous-hover", 'Previous', 'prev_hover.xpm'],
12
+ [:"pgtk-previous-pressed", 'Previous', 'prev_pressed.xpm'],
13
+ [:"pgtk-next", 'Next', 'next.xpm'],
14
+ [:"pgtk-next-hover", 'Next', 'next_hover.xpm'],
15
+ [:"pgtk-next-pressed", 'Next', 'next_pressed.xpm'],
16
+ [:"pgtk-vertical-previous", 'Vertical previous', 'vprev.xpm'],
17
+ [:"pgtk-vertical-next", 'Vertical next', 'vnext.xpm']]
18
+ pgtk_symbs.each { |s| Gtk::Stock.add(s[0], s[1]) }
19
+ ifactory = Gtk::IconFactory.new
20
+ ifactory.add_default
21
+ pb_handle = pb_vhandle = nil
22
+ found_cnt = 0
23
+ PavFind.pfind($:) { |path|
24
+ pgtk_symbs.each { |s|
25
+ if path.ends_with("pav/icons/" + s[2]) && !s[3]
26
+ s[3] = Gdk::Pixbuf.new(path)
27
+ break if (found_cnt += 1) >= pgtk_symbs.length
28
+ end
29
+ }
30
+ break if found_cnt >= pgtk_symbs.length
31
+ }
32
+ pgtk_symbs.each { |s| ifactory.add(s[0].to_s, Gtk::IconSet.new(s[3])) }
33
+
34
+ @icon_cache = {}
35
+
36
+ def self.find_icon_file(fpath)
37
+ PavFind.pfind($:) { |path|
38
+ return path if path.ends_with(fpath)
39
+ }
40
+ end
41
+
42
+ def self.stock_image_of_size(stock_id, w, h)
43
+ if (tmp = @icon_cache[[stock_id, w, h]])
44
+ tmp.kind_of?(Gdk::Pixbuf) ? Gtk::Image.new(tmp) :
45
+ Gtk::Image.new(stock_id, tmp)
46
+ end
47
+ icon_set = Gtk::IconFactory.lookup_default(stock_id.to_s) ||
48
+ Gtk::IcontFactory.lookup_default("gtk-missing-image")
49
+ max_size = nil
50
+ max_sz = [0,0]
51
+ found_size = nil
52
+ icon_set.sizes.each { |size|
53
+ if (sz=Gtk::IconSize.lookup(size)) == [w, h]
54
+ found_size = size
55
+ end
56
+ if sz[0]*sz[1] > max_sz[0]*max_sz[1]
57
+ max_size = size
58
+ max_sz = Gtk::IconSize.lookup(max_size)
59
+ end
60
+ }
61
+ if found_size
62
+ @icon_cache[[stock_id, w, h]] = found_size
63
+ Gtk::Image.new(stock_id, found_size)
64
+ else
65
+ wd = Gtk::Window.new
66
+ pb=wd.render_icon(stock_id,max_size,stock_id.to_s+":#{w}x#{h}").
67
+ scale(w, h, Gdk::Pixbuf::INTERP_BILINEAR)
68
+ wd.destroy
69
+ @icon_cache[[stock_id, w, h]] = pb
70
+ Gtk::Image.new(pb)
71
+ end
72
+ end
73
+
74
+ def self.stock_icon_btn_of_size(window, stock_id, w, h)
75
+ res = Gtk::Button.new << self.stock_image_of_size(stock_id, w-10, h-10)
76
+ res.set_size_request(w, h)
77
+ res
78
+ end
79
+
80
+ def self.stock_icon_tool_btn_of_size(window, stock_id, w, h)
81
+ res = Gtk::ToolButton.new("")
82
+ res.icon_widget = self.stock_image_of_size(stock_id, w-10, h-10)
83
+ res.set_size_request(w, h)
84
+ res
85
+ end
86
+
87
+ end
@@ -0,0 +1,192 @@
1
+ require 'gtk2'
2
+ require 'find'
3
+ require 'pav/gtk/button'
4
+
5
+ module PGtk
6
+
7
+ class Toolbar < Gtk::Table
8
+ attr_reader :toolbar, :ctrl_bar, :spaces_at, :iconized
9
+
10
+ def initialize
11
+ @toolbar = Gtk::Toolbar.new
12
+ @ctrl_bar = Gtk::Toolbar.new
13
+ btn_sz = Gtk::IconSize.lookup(Gtk::IconSize::MENU)
14
+ btn_sz[0] = (btn_sz[0])/2.3; btn_sz[1] = (btn_sz[1])/2.3
15
+ #@handle_btn = Toolbar.stock_icon_tool_btn_of_size(@toolbar,
16
+ # :"pgtk-handle", btn_sz[0], btn_sz[1])
17
+ @handle_btn = Button.new(:"pgtk-handle", btn_sz[0], btn_sz[1],
18
+ :"pgtk-handle-hover", :"pgtk-handle-pressed") { |wgt,ev|
19
+ self.iconized ^= true }
20
+ @handle_btn.shadow_type = Gtk::SHADOW_NONE
21
+ @l_fwd_btn = Button.new(:"pgtk-next", btn_sz[0], btn_sz[1],
22
+ :"pgtk-next-hover", :"pgtk-next-pressed") { |wgt, ev|
23
+ self.scroll_fwd; false }
24
+ @l_fwd_btn.shadow_type = Gtk::SHADOW_NONE
25
+ @l_bck_btn = Button.new(:"pgtk-previous", btn_sz[0], btn_sz[1],
26
+ :"pgtk-previous-hover", :"pgtk-previous-pressed") {
27
+ |wgt, ev| self.scroll_back; false }
28
+ @l_bck_btn.shadow_type = Gtk::SHADOW_NONE
29
+ @ctrl_bar.append(Gtk::HBox.new << @handle_btn)
30
+ @ctrl_bar.append(Gtk::HBox.new << @l_bck_btn)
31
+ @ctrl_bar.append(Gtk::HBox.new << @l_fwd_btn)
32
+ @ctrl_bar.orientation = 1
33
+ @hadj = Gtk::Adjustment.new(0,0,1.0,1,10,0)
34
+ @vadj = Gtk::Adjustment.new(0,0,1.0,1,10,0)
35
+ @viewport = Gtk::Viewport.new(@hadj, @vadj)
36
+ @viewport.add(@toolbar)
37
+ @viewport.shadow_type = Gtk::SHADOW_NONE
38
+ super(2, 2)
39
+ self.attach(@ctrl_bar, 0,1, 0,1, 0, 0, 0,0)
40
+ self.attach(@viewport, 1,2, 0,1, Gtk::FILL|Gtk::EXPAND, 0, 0,0)
41
+ @spaces_at = []
42
+ end
43
+
44
+ def iconized?
45
+ @iconized
46
+ end
47
+
48
+ def iconized=(val)
49
+ if val
50
+ return if @iconized
51
+ @iconized = true
52
+ self.remove(@viewport)
53
+ @l_fwd_btn.hide
54
+ @l_bck_btn.hide
55
+ else
56
+ return unless @iconized
57
+ @iconized = false
58
+ @l_fwd_btn.show
59
+ @l_bck_btn.show
60
+ if @toolbar.orientation == Gtk::ORIENTATION_HORIZONTAL
61
+ self.attach(@viewport, 1,2, 0,1,
62
+ Gtk::FILL|Gtk::EXPAND,0, 0,0)
63
+ else
64
+ self.attach(@viewport, 0,1, 1,2,0,
65
+ Gtk::FILL|Gtk::EXPAND,0, 0)
66
+ end
67
+ end
68
+ end
69
+
70
+ def dir_size_request=(val)
71
+ if @toolbar.orientation==Gtk::ORIENTATION_HORIZONTAL
72
+ @viewport.width_request = val-@ctrl_bar.allocation.width
73
+ else
74
+ @viewport.height_request=val-@ctrl_bar.allocation.height
75
+ end
76
+ end
77
+
78
+ def method_missing(id, *args, &block)
79
+ @toolbar.send(id, *args, &block)
80
+ end
81
+
82
+ def append_space(*args, &block)
83
+ @spaces_at << @toolbar.children.length + @spaces_at.length
84
+ @toolbar.append_space(*args, &block)
85
+ end
86
+
87
+ def insert_space(i)
88
+ @spaces_at << i
89
+ @spaces_at.sort!
90
+ @toolbar.insert_space(i)
91
+ end
92
+
93
+ def set_orientation(o)
94
+ @toolbar.set_orientation(o)
95
+ if o == Gtk::ORIENTATION_HORIZONTAL
96
+ @ctrl_bar.set_orientation(Gtk::ORIENTATION_VERTICAL)
97
+ h = @ctrl_bar.allocation.height
98
+ self.get_tool_sizes.each { |s| h = s if s > h }
99
+ self.remove(@viewport)
100
+ self.attach(@viewport, 1,2, 0,1,
101
+ Gtk::FILL|Gtk::EXPAND,0, 0,0)
102
+ self.height_request = h
103
+ else
104
+ @ctrl_bar.set_orientation(Gtk::ORIENTATION_HORIZONTAL)
105
+ w = @ctrl_bar.allocation.width
106
+ self.get_tool_sizes.each { |s| w = s if s > w }
107
+ self.remove(@viewport)
108
+ self.attach(@viewport, 0,1, 1,2, 0,
109
+ Gtk::FILL|Gtk::EXPAND, 0,0)
110
+ self.width_request = w
111
+ end
112
+ end
113
+
114
+ alias_method :orientation=, :set_orientation
115
+
116
+ def get_tool_sizes
117
+ if @toolbar.orientation == Gtk::ORIENTATION_HORIZONTAL
118
+ @toolbar.children.collect { |c| c.allocation.width }
119
+ else
120
+ @toolbar.children.collect { |c| c.allocation.height }
121
+ end
122
+ end
123
+
124
+ def get_scroll_adj
125
+ @toolbar.orientation == Gtk::ORIENTATION_HORIZONTAL ? @hadj :
126
+ @vadj
127
+ end
128
+
129
+ def get_win_size
130
+ if @toolbar.orientation == Gtk::ORIENTATION_HORIZONTAL
131
+ @viewport.allocation.width
132
+ else
133
+ @viewport.allocation.height
134
+ end
135
+ end
136
+
137
+ def get_toolbar_size
138
+ @toolbar.orientation == Gtk::ORIENTATION_HORIZONTAL ?
139
+ @toolbar.allocation.width : @toolbar.allocation.height
140
+ #size = 14*@spaces_at.length
141
+ #self.get_tool_sizes.each { |s| size += s }
142
+ #size
143
+ end
144
+
145
+ def scroll_fwd(*args)
146
+ adj = self.get_scroll_adj
147
+ sizes = self.get_tool_sizes
148
+ size = self.get_toolbar_size
149
+ win_size = self.get_win_size
150
+ start_x = adj.value
151
+ end_x = start_x + win_size
152
+ dspc_i = spc_i = size_i = 0
153
+ new_end_x = 0
154
+ while new_end_x <= end_x && size_i < sizes.length
155
+ while spc_i < @spaces_at.length &&
156
+ @spaces_at[spc_i] - dspc_i <= size_i
157
+ new_end_x += 14
158
+ spc_i += 1; dspc_i += 1
159
+ end
160
+ new_end_x += sizes[size_i]
161
+ size_i += 1
162
+ end
163
+ new_end_x = size if new_end_x > size
164
+ start_x = new_end_x - win_size
165
+ adj.value = start_x >= 0 ? start_x : 0
166
+ end
167
+
168
+ def scroll_back(*args)
169
+ adj = self.get_scroll_adj
170
+ sizes = self.get_tool_sizes
171
+ size = self.get_toolbar_size
172
+ win_size = self.get_win_size
173
+ start_x = adj.value
174
+ end_x = start_x + win_size
175
+ dspc_i = spc_i = size_i = 0
176
+ o_new_start_x = new_start_x = 0
177
+ while size_i < sizes.length
178
+ while spc_i < @spaces_at.length &&
179
+ @spaces_at[spc_i] - dspc_i <= size_i
180
+ new_start_x += 14
181
+ spc_i += 1; dspc_i += 1
182
+ end
183
+ break if new_start_x + sizes[size_i] >= start_x
184
+ o_new_start_x = new_start_x
185
+ new_start_x += sizes[size_i]
186
+ size_i += 1
187
+ end
188
+ adj.value = o_new_start_x
189
+ end
190
+ end
191
+
192
+ end
@@ -0,0 +1,54 @@
1
+ class PMinHeap < Array
2
+ attr_reader :comparator
3
+
4
+ def initialize(&comparator)
5
+ if block_given?
6
+ @comparator = comparator
7
+ else
8
+ @comparator = proc { |a, b| a <=> b }
9
+ end
10
+ super()
11
+ end
12
+
13
+ def push(lm)
14
+ i = self.length
15
+ super(lm)
16
+ while i>0 && @comparator.call(self[parent_i=((i-1)>>1)], lm) > 0
17
+ self[i] = self[parent_i]
18
+ i = parent_i
19
+ end
20
+ self[i] = lm
21
+ self
22
+ end
23
+
24
+ alias_method :<<, :push
25
+
26
+ def pop
27
+ res = self.first
28
+ lm = super
29
+ return res if self.empty?
30
+ i = 0
31
+ len = self.length
32
+ while (chld_i = (i<<1) + 1) < len
33
+ l_chld_i = chld_i + 1
34
+ chld_i = l_chld_i if l_chld_i < len &&
35
+ @comparator.call(self[l_chld_i],self[chld_i])<0
36
+ if @comparator.call(lm, self[chld_i]) > 0
37
+ self[i] = self[chld_i]
38
+ i = chld_i
39
+ else
40
+ self[i] = lm
41
+ return res
42
+ end
43
+ end
44
+ self[i] = lm
45
+ res
46
+ end
47
+
48
+ alias_method :shift, :pop
49
+
50
+ def concat(arr)
51
+ arr.each { |lm| self.push(lm) }
52
+ self
53
+ end
54
+ end
@@ -0,0 +1,17 @@
1
+ /alt_handle.xcf/1.1.1.1/Tue Nov 15 17:32:49 2005//
2
+ /alt_handle.xpm/1.1.1.1/Tue Nov 15 17:32:46 2005//
3
+ /alt_handle_hover.xcf/1.1.1.1/Tue Nov 15 17:32:50 2005//
4
+ /alt_handle_hover.xpm/1.1.1.1/Tue Nov 15 17:32:43 2005//
5
+ /alt_handle_pressed.xcf/1.1.1.1/Tue Nov 15 17:32:48 2005//
6
+ /alt_handle_pressed.xpm/1.1.1.1/Tue Nov 15 17:32:45 2005//
7
+ /handle.xcf/1.1.1.1/Tue Nov 15 17:32:48 2005//
8
+ /handle.xpm/1.1.1.1/Tue Nov 15 17:32:41 2005//
9
+ /next.xpm/1.1.1.1/Tue Nov 15 17:32:41 2005//
10
+ /next_hover.xpm/1.1.1.1/Tue Nov 15 17:32:43 2005//
11
+ /next_pressed.xpm/1.1.1.1/Tue Nov 15 17:32:48 2005//
12
+ /prev.xpm/1.1.1.1/Tue Nov 15 17:32:41 2005//
13
+ /prev_hover.xpm/1.1.1.1/Tue Nov 15 17:32:43 2005//
14
+ /prev_pressed.xpm/1.1.1.1/Tue Nov 15 17:32:48 2005//
15
+ /vnext.xpm/1.1.1.1/Tue Nov 15 17:32:48 2005//
16
+ /vprev.xpm/1.1.1.1/Tue Nov 15 17:32:48 2005//
17
+ D/extract_curves////
@@ -0,0 +1 @@
1
+ extract-curves/ruby_libs/pav/icons
@@ -0,0 +1 @@
1
+ :ext:pavpen@rubyforge.org:/var/cvs/extract-curves