Jump to content

Bitmap/Flood fill: Difference between revisions

(Added Delphi reference to Pascal code)
Line 2,593:
=={{header|Ruby}}==
 
Uses [[Raster graphics operations/Ruby]]
'''Note''' This code is not completely functional. Please add the remaining classes (Pixel, ..) and initializers. Or maybe a library to be included to make this work.
 
<lang ruby>class# RGBColourfrozen_string_literal: true
 
require_relative 'raster_graphics'
 
class RGBColour
def ==(a_colour)
values == a_colour.values
end
end
 
class Queue < Array
alias_method :enqueue, :push
alias_method :dequeue, :shift
end
 
Line 2,613 ⟶ 2,612:
until queue.empty?
p = queue.dequeue
ifnext unless self[p.x, p.y] == current_colour
 
west = find_border(p, current_colour, :west)
eastwest = find_border(p, current_colour, :eastwest)
east = draw_linefind_border(westp, eastcurrent_colour, new_colour:east)
draw_line(west, east, q = westnew_colour)
while q.x <= east.xwest
while q.x <= east.x
[:north, :south].each do |direction|
%i[north south].each do n = neighbour(q, |direction)|
n = queue.enqueueneighbour(n) if self[n.xq, n.y] == current_colourdirection)
queue.enqueue(n) if self[n.x, n.y] == current_colour
end
q = neighbour(q, :east)
end
q = neighbour(q, :east)
end
end
Line 2,649 ⟶ 2,648:
 
bitmap = Pixmap.new(300, 300)
bitmap.draw_circle(Pixel[149, 149], 120, RGBColour::BLACK)
bitmap.draw_circle(Pixel[200, 100], 40, RGBColour::BLACK)
bitmap.flood_fill(Pixel[140, 160], RGBColour::BLUE)</lang>
bitmap.save_as_png('flood_fill.png')</lang>
 
{{libheader|RubyGems}}
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.