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)