RosettaCodeData/Task/Greyscale-bars-Display/MAXScript/greyscale-bars-display.max

70 lines
1.7 KiB
Plaintext

fn drawBarRow _bmp _row _width _number _inverse=
(
local dir = if _inverse then 1 else -1
if not _inverse then
(
setpixels _bmp [0,_row] (for i in 1 to (_width/_number) collect (black))
for i = (_width/_number) to _width by (_width/_number) do
(
local loopPosition = i/(_width-(_width/_number)) as float
local colorsArr = for c in 1 to (_width/_number) collect (white*loopPosition)
setpixels _bmp [i,_row] colorsArr
)
return _bmp
)
else
(
setpixels _bmp [0,_row] (for i in 1 to (_width/_number) collect (white))
for i = _width to (_width/_number) by ((_width/_number)*-1) do
(
local loopPosition = 1.0-(i/(_width-(_width/_number))) as float
local colorsArr = for c in 1 to (_width/_number) collect (white*loopPosition)
setpixels _bmp [i,_row] colorsArr
)
return _bmp
)
)
fn bitmap_verticalBars =
(
local width = (sysinfo.desktopsize).x
local height = (sysinfo.desktopsize).y
local theBitmap = bitmap width height color:white
local row = 0
while row <= (height-1) do
(
local barNumber = 0
case of
(
(row < (height/4)): (barNumber = 1)
(row >= (height/4) and row < (height/2)): (barNumber = 2)
(row >= (height/2) and row < (height-(height/4))): (barNumber = 3)
(row >= (height-(height/4))): (barNumber = 4)
default: return theBitmap
)
case barNumber of
(
1: (
theBitmap = drawBarRow theBitmap row width 8 false
)
2: (
theBitmap = drawBarRow theBitmap row width 16 true
)
3: (
theBitmap = drawBarRow theBitmap row width 32 false
)
4: (
theBitmap = drawBarRow theBitmap row width 64 true
)
)
row += 1
--
)
return theBitmap
)
b = bitmap_verticalBars()
display b