Greyscale bars/Display: Difference between revisions

(→‎{{header|Lua}}: added Lua solution)
Line 548:
n *= 2
.</lang>
 
=={{header|Eiffel}}==
 
[https://github.com/ljr1981/rosettacode_answers/blob/main/testing/rc_greyscale_bars/rc_greyscale_bars_test_set.e Full Example Code]
 
[https://github.com/ljr1981/rosettacode_answers/blob/main/testing/rc_greyscale_bars/eifgreyscale.png PNG Output]
 
<lang>
feature -- Test routines
 
rc_greyscale_bars_test
-- Greyscale bars/Display
note
testing:
"execution/isolated",
"execution/serial"
local
y: INTEGER
do
y := 0
paint_row (black, y, r1_div_count, r1_width)
 
y := y + row_height
paint_row (white, y, r2_div_count, r2_width)
 
y := y + row_height
paint_row (black, y, r3_div_count, r3_width)
 
y := y + row_height
paint_row (white, y, r4_div_count, r4_width)
 
pic.save_to_named_file (create {EV_PNG_FORMAT}, ".\testing\rc_greyscale_bars\eifgreyscale.png")
end
 
feature {NONE} -- Test Support
 
paint_row (a_init_color: REAL; a_y, r_div, r_width: INTEGER)
-- `paint_row' with rectangles from `black' to `white' or reverse.
require
valid_color: a_init_color = white or else a_init_color = black
valid_y: (<<0,row_height * 1, row_height * 2, row_height * 3>>).has (a_y)
valid_div: (<<r1_div_count, r2_div_count, r3_div_count, r4_div_count>>).has (r_div)
valid_width: (<<r1_width, r2_width, r3_width, r4_width>>).has (r_width)
local
color: REAL
x, dir: INTEGER
do
color := a_init_color
if color = white then dir := down else dir := up end
⟳ i:1 |..| r_div ¦
pic.set_foreground_color (create {EV_COLOR}.make_with_rgb (color, color, color))
pic.fill_rectangle (x, a_y, r_width, row_height)
color := color + ((1/r_div).truncated_to_real * dir)
x := x + r_width
end
 
feature -- Constants
 
pic: EV_PIXMAP
once
create Result.make_with_size (width, height)
end
 
width: INTEGER = 1024
height: INTEGER = 768
 
row_height: INTEGER once Result := (height / 4).truncated_to_integer end
 
r1_width: INTEGER = 128; r1_div_count: INTEGER = 8
r2_width: INTEGER = 64; r2_div_count: INTEGER = 16
r3_width: INTEGER = 32; r3_div_count: INTEGER = 32
r4_width: INTEGER = 16; r4_div_count: INTEGER = 64
 
black: REAL = 0.0
white: REAL = 1.0
down: INTEGER = -1
up: INTEGER = 1
</lang>
 
=={{header|Euler Math Toolbox}}==
Anonymous user