Faster glyph drawing

This commit is contained in:
Devine Lu Linvega 2024-03-20 10:58:11 -07:00
parent 51210d6efb
commit 88d01bb3d6
1 changed files with 11 additions and 12 deletions

View File

@ -1193,7 +1193,7 @@
( | reset state )
<reset-state>
( | paint )
.scroll/x LDZ2 ;draw-character/anchor STA2
.scroll/x LDZ2 .Screen/x DEO2
#0020 .Screen/y DEO2
[ LIT2 15 -Screen/auto ] DEO
get-scroll-addr
@ -1201,7 +1201,7 @@
scan-state draw-character LDAk #0a NEQ ?{
<draw-lb>
.Screen/y DEI2 .Screen/height DEI2 #0010 SUB2 GTH2 ?&end
.scroll/x LDZ2 ;draw-character/anchor STA2 }
.scroll/x LDZ2 .Screen/x DEO2 }
next-glyph LDAk ?&>l
( | draw size left )
#0000 OVR2 SUB2 #0f <draw-decimal>
@ -1216,18 +1216,17 @@
JMP2r
@draw-character ( addr* -- addr* )
get-glyph-addr .Screen/addr DEO2
get-color ,&c STR
[ LIT2r &anchor $2 ] LITr -Screen/x DEO2kr
( | draw normal )
[ LIT2 &c $1 -Screen/sprite ] DEOk DEO
( | draw underline )
[ LIT2 00 -state/underline ] LDZ EQU ?{
[ LITr -Screen/x ] DEI2r
( glyph* ) get-glyph-addr .Screen/addr DEO2
( color ) get-color ,&color STR
( width* ) get-glyph-width STH2
( draw2 ) [ LIT2 &color $1 -Screen/sprite ]
( draw1 ) DUPr [ LITr 08 LTHr JMPr DEOk ] DEO
( [ LIT2 00 -state/underline ] LDZ EQU ?{
DEO2kr
;underline-icn .Screen/addr DEO2
[ LIT2 05 -Screen/sprite ] DEOk DEO }
( | set position )
get-glyph-width POPr STH2r ADD2 ,&anchor STR2
[ LIT2 05 -Screen/sprite ] DEOk DEO } )
ADD2r [ LITr -Screen/x ] DEO2r
JMP2r
@draw-glyph-utf8 ( addr* -- addr* )