Create bashfblib.sh
Add main library file
This commit is contained in:
parent
5bdb39444c
commit
ca4f990ec8
65
bashfblib.sh
Normal file
65
bashfblib.sh
Normal file
@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
# Dependency, shell, printf, dd
|
||||
|
||||
# TODO: Dependency on dd can be removed, but will be really slow
|
||||
# TODO: Implement double buffering
|
||||
# TODO: Propose no dependency on printf
|
||||
NO_DD=0
|
||||
USE_DOUBLE_BUFFERING=0
|
||||
NO_PRINTF=0
|
||||
|
||||
# NEED TO FILL THIS INFORMATION
|
||||
# geometry 220 176 220 352 16
|
||||
# rgba 5/11,6/5,5/0,0/0
|
||||
# TODO: Adding a dependency on fbset we may be able to autoset this:
|
||||
SCREEN_WIDTH=220
|
||||
SCREEN_HEIGHT=176
|
||||
RED_DEPTH=5
|
||||
GREEN_DEPTH=6
|
||||
BLUE_DEPTH=5
|
||||
RED_POS=11
|
||||
GREEN_POS=5
|
||||
BLUE_POS=0
|
||||
TEMP=`mktemp`
|
||||
SCREEN_FB=/dev/fb0
|
||||
###
|
||||
|
||||
# AUTOCALCULATED VALUES
|
||||
BIT_PER_PIXEL=$((${RED_DEPTH}+${GREEN_DEPTH}+${BLUE_DEPTH}))
|
||||
BYTE_PER_PIXEL=$((${BIT_PER_PIXEL}/8))
|
||||
SCREEN_STRIDE=$((${BYTE_PER_PIXEL}*${SCREEN_WIDTH}))
|
||||
RED_MAX=$((2**${RED_DEPTH}))
|
||||
GREEN_MAX=$((2**${GREEN_DEPTH}))
|
||||
BLUE_MAX=$((2**${BLUE_DEPTH}))
|
||||
RED_SHIFT=$((2**${RED_POS}))
|
||||
GREEN_SHIFT=$((2**${GREEN_POS}))
|
||||
BLUE_SHIFT=$((2**${BLUE_POS}))
|
||||
|
||||
drawpixel()
|
||||
{
|
||||
x=$1; shift 1
|
||||
y=$1; shift 1
|
||||
r=$1; shift 1
|
||||
g=$1; shift 1
|
||||
b=$1; shift 1
|
||||
|
||||
skip=$(($((${x}*${BYTE_PER_PIXEL}-1))+$((${y}*${SCREEN_STRIDE}))))
|
||||
|
||||
rc=$((${r}*${RED_MAX}/256))
|
||||
gc=$((${g}*${GREEN_MAX}/256))
|
||||
bc=$((${b}*${BLUE_MAX}/256))
|
||||
|
||||
rs=$((${rc}*${RED_SHIFT}))
|
||||
gs=$((${gc}*${GREEN_SHIFT}))
|
||||
bs=$((${bc}*${BLUE_SHIFT}))
|
||||
|
||||
value=$((${rs}+${gs}+${bs}))
|
||||
|
||||
echo -ne "" > ${TEMP}
|
||||
for i in `seq $((${BIT_PER_PIXEL}-8)) -8 0`; do
|
||||
val=$(($((${value}/$((2**$i))))&255))
|
||||
echo -ne "$(printf '\\x%x' ${val})" >> ${TEMP}
|
||||
done
|
||||
|
||||
dd if=${TEMP} of=${SCREEN_FB} bs=1 seek=${skip} count=${BYTE_PER_PIXEL} 2&> /dev/null
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user