Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
74
Task/Bitmap/UNIX-Shell/bitmap.sh
Normal file
74
Task/Bitmap/UNIX-Shell/bitmap.sh
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
typeset -T RGBColor_t=(
|
||||
integer r g b
|
||||
function to_s {
|
||||
printf "%d %d %d" ${_.r} ${_.g} ${_.b}
|
||||
}
|
||||
function white { print "255 255 255"; }
|
||||
function black { print "0 0 0"; }
|
||||
function red { print "255 0 0"; }
|
||||
function green { print "0 255 0"; }
|
||||
function blue { print "0 0 255"; }
|
||||
function yellow { print "255 255 0"; }
|
||||
function magenta { print "255 0 255"; }
|
||||
function cyan { print "0 255 255"; }
|
||||
)
|
||||
|
||||
typeset -T Bitmap_t=(
|
||||
integer height
|
||||
integer width
|
||||
typeset -a data
|
||||
|
||||
function fill {
|
||||
typeset color=$1
|
||||
if [[ -z ${color:+set} ]]; then
|
||||
print -u2 "error: no fill color specified"
|
||||
return 1
|
||||
fi
|
||||
integer x y
|
||||
for ((y=0; y<_.height; y++)); do
|
||||
for ((x=0; x<_.width; x++)); do
|
||||
_.data[y][x]="$color"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
function setpixel {
|
||||
integer x=$1 y=$2
|
||||
typeset color=$3
|
||||
_.data[y][x]=$color
|
||||
}
|
||||
|
||||
function getpixel {
|
||||
integer x=$1 y=$2
|
||||
print "${_.data[y][x]}"
|
||||
}
|
||||
|
||||
function to_s {
|
||||
typeset ppm=""
|
||||
ppm+="P3"$'\n'
|
||||
ppm+="${_.width} ${_.height}"$'\n'
|
||||
ppm+="255"$'\n'
|
||||
typeset sep
|
||||
for ((y=0; y<_.height; y++)); do
|
||||
sep=""
|
||||
for ((x=0; x<_.width; x++)); do
|
||||
ppm+="$sep${_.data[y][x]}"
|
||||
sep=" "
|
||||
done
|
||||
ppm+=$'\n'
|
||||
done
|
||||
print -- "$ppm"
|
||||
}
|
||||
)
|
||||
|
||||
RGBColor_t color
|
||||
Bitmap_t b=( width=3 height=2 )
|
||||
b.fill "$(color.white)"
|
||||
b.setpixel 0 0 "$(color.red)"
|
||||
b.setpixel 1 0 "$(color.green)"
|
||||
b.setpixel 2 0 "$(color.blue)"
|
||||
b.setpixel 0 1 "$(color.yellow)"
|
||||
b.setpixel 1 1 "$(color.white)"
|
||||
b.setpixel 2 1 "$(color.black)"
|
||||
echo "$(b.getpixel 0 0)"
|
||||
b.to_s
|
||||
Loading…
Add table
Add a link
Reference in a new issue