Greyscale bars/Display: Difference between revisions
Content added Content deleted
(→{{header|Lua}}: added Lua solution) |
|||
Line 548: | Line 548: | ||
n *= 2 |
n *= 2 |
||
.</lang> |
.</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}}== |
=={{header|Euler Math Toolbox}}== |