
Смещаем окно:

Код(из 0530):
http://knikolenko.narod.ru/kolibri/font.inc


SizeFont dd 1
align 4
mydrawbox:
pusha
mov esi,[SizeFont]
mov edi,[SizeFont]
.drpix:
call [putpixel]
inc eax
dec edi
jnz .drpix
sub eax,[SizeFont]
inc ebx
mov edi,[SizeFont]
dec esi
jnz .drpix
popa
ret
align 4
dtext: ; Text String Output (rw by Johnny_B[john@kolibrios.org])
; eax x & y
; ebx font ( 0xX0000000 ) & color ( 0x00RRGGBB )
; ecx start of text
; edx length
; edi 1 force
pushad
mov esi,edx ;esi=length
mov ebp,ecx ;ebp=ptr to text
mov ecx,ebx ;ecx=color
movzx ebx,ax ;ebx=y
shr eax,16 ;eax=x
and esi, 0xFF ;limit of text = 255 symbols
push ecx
shr ecx,24
and ecx,0x0F
test ecx,ecx
jne .dalee
mov ecx,1
.dalee:
mov [SizeFont],ecx
pop ecx
dtext.lnew:
test esi, esi ; zero length ?
jnz @f
jmp dtext.output_end
@@:
movzx edx,byte [ebp] ;edx=ascii code
test edx,edx
jz dtext.output_end
test ecx,0x10000000
jnz dtext.letnew2
align 4
.letnew:
drawletter: ;output char of type 1(monotype)
;eax - x
;ebx - y
;ecx - color
;edx - ascii code
pushad
call [disable_mouse]
mov esi,9
lea ebp,[0x3F600+8*edx+edx]
.symloop:
push esi
mov dl,byte [ebp]
mov esi,8
.pixloop:
test dl,1
jz .nopix
call mydrawbox
.nopix:
shr dl,1
add eax,[SizeFont]
dec esi
jnz .pixloop
push ebx
mov ebx,8
imul ebx,[SizeFont]
sub eax,ebx
pop ebx
add ebx,[SizeFont]
inc ebp
pop esi
dec esi
jnz .symloop
popad
push ebx
mov ebx,6
imul ebx,[SizeFont]
add eax,ebx
pop ebx
inc ebp ;ptr to text
dec esi ;length
jnz dtext.lnew
jmp dtext.output_end
dtext.letnew2:
Code: Select all
Callback вместо цветаЗа всю истрорию Коос, это сделали единицы, и только для своих проектов. к примеру kfar.А сделать просто вывод битового шрифта каждый может и сам в своём проекте, это не так уж сложно.
Функция 65 заточена на вывод целиком изображения, сейчас попиксельно выводиться системные шрифты, как ты знаешь на больших объемах это тормоза. А ты предлагаешь венуться, к тому от чего хочется уйти.bw
При выводе (x, y) точки глифа, вызывается пользовательская функция для получения цвета. Это избавит тебя от, скажем, реализации градиента, а пользователю твоей библиотеки позволит реализовавывать разнообразные эффекты. Этот callback может вызываться каждый раз при выводе глифа, тогда решится проблема с прозрачность, в том числе с альфой. Или он будет вызываться только при построении глифа, а дальше используется только этот кешированный результат.
Users browsing this forum: No registered users and 2 guests