summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaoran S. Diao (刁浩然) <0@hairydiode.xyz>2023-07-02 04:35:10 -0700
committerHaoran S. Diao (刁浩然) <0@hairydiode.xyz>2023-07-02 04:35:10 -0700
commitf1aa71a434bade3fc6ecb28c6816b0111d126e56 (patch)
tree4d19054a2ce78a4273ac1166a67931060dcb4435
parentd41ea136c0380ef7f77256b292171906eabc0f07 (diff)
did some optimizations to make things a lot faster at the cost of making bbrll
only work with 1/0 inputs, and if the buffer is exactly some multiple of 2x4 large
-rw-r--r--README1
-rwxr-xr-xbbrll45
-rwxr-xr-xfontd8
3 files changed, 23 insertions, 31 deletions
diff --git a/README b/README
index d5332b4..36f7bb4 100644
--- a/README
+++ b/README
@@ -22,6 +22,7 @@ begin:
PRINT_RAW or
#prints the raw image buffer
PRINT_BRAILLE or
+ #NOTE: THIS ONLY WORKS IF THE CANVAS Consits of only 0s and 1s
#prints the output in braille, this uses only the width of the
#first row so make sure to call CANVAS or something before hand
END
diff --git a/bbrll b/bbrll
index 661fd14..e94c1e8 100755
--- a/bbrll
+++ b/bbrll
@@ -43,6 +43,8 @@ function canvas() {
#prints a single braille at $1=x $2=y
function print_sin_braille() {
+#NOTE, for optimization purposes, this only works if the buffer consits of 1s
+#and 0s
#bit to braille
#
#0 3
@@ -51,42 +53,31 @@ function print_sin_braille() {
#6 7
#reverse
#(1,3)(0,3)(1,2)(1,1)(1,0)(0,2)(0,1)(0,0)
- #converts anything other than ., and empty string, or space into 1, else
- #0
- prompt='s/[^\. ]/1/;s/^[^1]*$/0/'
- b0=$( echo ${rawbuff[((0+4*$2))]:((0+2*$1)):1} | sed "$prompt" )
- b1=$( echo ${rawbuff[((1+4*$2))]:((0+2*$1)):1} | sed "$prompt" )
- b2=$( echo ${rawbuff[((2+4*$2))]:((0+2*$1)):1} | sed "$prompt" )
- b3=$( echo ${rawbuff[((0+4*$2))]:((1+2*$1)):1} | sed "$prompt" )
- b4=$( echo ${rawbuff[((1+4*$2))]:((1+2*$1)):1} | sed "$prompt" )
- b5=$( echo ${rawbuff[((2+4*$2))]:((1+2*$1)):1} | sed "$prompt" )
- b6=$( echo ${rawbuff[((3+4*$2))]:((0+2*$1)):1} | sed "$prompt" )
- b7=$( echo ${rawbuff[((3+4*$2))]:((1+2*$1)):1} | sed "$prompt" )
- #echo "2#$b7$b600$b5$b4$b3$b2$b1$b0"
+ b0=${rawbuff[((0+4*$2))]:((0+2*$1)):1}
+ b1=${rawbuff[((1+4*$2))]:((0+2*$1)):1}
+ b2=${rawbuff[((2+4*$2))]:((0+2*$1)):1}
+ b3=${rawbuff[((0+4*$2))]:((1+2*$1)):1}
+ b4=${rawbuff[((1+4*$2))]:((1+2*$1)):1}
+ b5=${rawbuff[((2+4*$2))]:((1+2*$1)):1}
+ b6=${rawbuff[((3+4*$2))]:((0+2*$1)):1}
+ b7=${rawbuff[((3+4*$2))]:((1+2*$1)):1}
+
+ #ors it with the utf-8 hex value of the empty braille character
#the two spaces assume aht the encoding is utf-8, convoluted bitwise OR
#and coversion between character and number stuff
- echo "obase=16;$(( 2#$b7${b6}00$b5$b4$b3$b2$b1$b0 | 0x$(echo -n ⠀ |xxd -p -u)))" |bc | xxd --reverse -ps
+ echo "obase=16;$(( 2#$b7${b6}00$b5$b4$b3$b2$b1$b0 | 0xE2A080 ))"|bc | xxd --reverse -ps
}
function print_braille() {
#I do the lazy thing and just test the first line
w=${#rawbuff[0]}
h=${#rawbuff[@]}
- #conver to braille coords, since bash rounds down, account for when
- #there a braille character that will not be completely filled(it can
- #handle this fine because of how the sed pattern was constructed in
- #print_sin_braille)
- if [ $((w % 2)) -gt 0 ]; then
- w=$((w/2+1))
- else
- w=$((w/2))
- fi
- if [ $((h % 4)) -gt 0 ]; then
- h=$((h/4+1))
- else
- h=$((h/4))
- fi
+ #conver to braille coords, we do not want to try to print incomplete
+ #characters because they will break with our optimization, so rounding
+ #down is good
+ w=$((w/2))
+ h=$((h/4))
i=0
j=0
while [ $i -lt $h ]; do
diff --git a/fontd b/fontd
index aecd636..763d9d0 100755
--- a/fontd
+++ b/fontd
@@ -18,10 +18,10 @@ bdf=$(cat $2/*bdf | awk "NR==1{fflag=0}/ENCODING $1$/{if(fflag==0){cflag=1;fflag
#convert to binary, cols depends on size
bin=$(echo $bdf | xxd -r -ps | xxd -b -c $(($size/8))|\
-#strip all the formating, replace '0' with '.' for bbrll
-sed 's/^.*://g;s/\s[^[:space:]]*$//;s/\s//g;s/0/\./g')
-
+#strip all the formating, bbrll takes 0s and 1s as input
+sed 's/^.*://g;s/\s[^[:space:]]*$//;s/\s//g')
#saving it as a var removed newlines, must add in with sed, send to bbrll to
# display
-echo LOAD_RAW $bin END_RAW PRINT_BRAILLE | sed 's/\s/\n/g' | bbrll
+#echo LOAD_RAW $bin END_RAW PRINT_BRAILLE | sed 's/\s/\n/g' | bbrll
+echo LOAD_RAW $bin END_RAW PRINT_RAW | sed 's/\s/\n/g' | bbrll