class Bitmap
def draw_ring(x,y,diameter,thickness,color)
outer_radius = diameter / 2
inner_radius = outer_radius - thickness + 1
draw_circle_w_thickness(x,y,inner_radius,outer_radius,color)
end
def xLine(x1,x2,y,color)
while x1 <= x2
self.set_pixel(x1,y,color)
x1 += 1
end
end
def yLine(x,y1,y2,color)
while y1 <= y2
self.set_pixel(x,y1,color)
y1 += 1
end
end
def draw_circle_w_thickness(xc,yc,inner,outer,color)
xo = outer
xi = inner
y = 0
erro = 1 - xo
erri = 1 - xi
while(xo >= y)
xLine(xc + xi, xc + xo, yc + y, color)
yLine(xc + y, yc + xi, yc + xo, color)
xLine(xc - xo, xc - xi, yc + y, color)
yLine(xc - y, yc + xi, yc + xo, color)
xLine(xc - xo, xc - xi, yc - y, color)
yLine(xc - y, yc - xo, yc - xi, color)
xLine(xc + xi, xc + xo, yc - y, color)
yLine(xc + y, yc - xo, yc - xi, color)
y += 1
if erro < 0
erro += 2 * y + 1
else
xo -= 1
erro += 2 * (y - xo + 1)
end
if y > inner
xi = y
else
if erri < 0
erri += 2 * y + 1
else
xi -= 1
erri += 2 * (y - xi + 1)
end
end
end
end
end
class Bitmap
def draw_ring(x,y,diameter,thickness,color)
outer_radius = diameter / 2
inner_radius = outer_radius - thickness + 1
draw_circle_w_thickness(x,y,inner_radius,outer_radius,color)
end
def xLine(x1,x2,y,color)
while x1 <= x2
self.set_pixel(x1,y,color)
x1 += 1
end
end
def yLine(x,y1,y2,color)
while y1 <= y2
self.set_pixel(x,y1,color)
y1 += 1
end
end
def draw_circle_w_thickness(xc,yc,inner,outer,color)
xo = outer
xi = inner
y = 0
erro = 1 - xo
erri = 1 - xi
while(xo >= y)
xLine(xc + xi, xc + xo, yc + y, color)
yLine(xc + y, yc + xi, yc + xo, color)
xLine(xc - xo, xc - xi, yc + y, color)
yLine(xc - y, yc + xi, yc + xo, color)
xLine(xc - xo, xc - xi, yc - y, color)
yLine(xc - y, yc - xo, yc - xi, color)
xLine(xc + xi, xc + xo, yc - y, color)
yLine(xc + y, yc - xo, yc - xi, color)
y += 1
if erro < 0
erro += 2 * y + 1
else
xo -= 1
erro += 2 * (y - xo + 1)
end
if y > inner
xi = y
else
if erri < 0
erri += 2 * y + 1
else
xi -= 1
erri += 2 * (y - xi + 1)
end
end
end
end
end