lib/window_blessing/buffer.rb in window_blessing-0.0.1 vs lib/window_blessing/buffer.rb in window_blessing-0.0.4
- old
+ new
@@ -64,18 +64,26 @@
def sanitize_contents(range=0..-1)
@contents[range] = @contents[range].collect {|l| l.gsub(/[\x00-\x1f]/,'?')}
end
- def normalize(range=0..-1)
+ # options
+ # :fg - color
+ # :bg - color
+ def normalize(range=0..-1, options={})
+ ranged_size = size.clone
+ ranged_size.y = range_length(range) || size.y
@contents||=[]
@fg_buffer||=[]
@bg_buffer||=[]
- @contents = @contents.gsub(/[\x00-\x09\x11-\x1f]/,'?').split("\n") if @contents.kind_of?(String)
- @contents[range] = resize2d @contents[range] , size, " "
- @fg_buffer[range] = resize2d @fg_buffer[range], size, Buffer.default_fg
- @bg_buffer[range] = resize2d @bg_buffer[range], size, Buffer.default_bg
+ if @contents.kind_of?(String)
+ @contents = @contents.split("\n")
+ sanitize_contents
+ end
+ @contents[range] = resize2d @contents[range] , ranged_size, " "
+ @fg_buffer[range] = resize2d @fg_buffer[range], ranged_size, options[:fg] || Buffer.default_fg
+ @bg_buffer[range] = resize2d @bg_buffer[range], ranged_size, options[:bg] || Buffer.default_bg
end
def on_dirty(&block)
@on_dirty = block
end
@@ -174,10 +182,12 @@
fg = options[:fg]
bg = options[:bg]
fg = fg.to_screen_color if fg.kind_of?(Color)
bg = bg.to_screen_color if bg.kind_of?(Color)
+ return if area.size==point
+
if area != internal_area
@contents = overlay2d(area.loc, gen_array2d(area.size, string), contents) if string
@fg_buffer = overlay2d(area.loc, gen_array2d(area.size, fg), fg_buffer) if fg
@bg_buffer = overlay2d(area.loc, gen_array2d(area.size, bg), bg_buffer) if bg
else
@@ -194,10 +204,10 @@
def draw_rect(rectangle, options={})
fill({:area => rectangle, :string => " ", :fg => Buffer.default_fg, :bg => Buffer.default_bg}.merge options)
end
def draw_buffer(loc, buffer, source_area = nil)
- source_area = (source_area || buffer.internal_area) | (crop_area - loc)
+ source_area = buffer.internal_area | source_area | (crop_area - loc)
return unless source_area.present?
unless source_area == buffer.internal_area
loc += source_area.loc
buffer = buffer.subbuffer(source_area)