Page 4 of 6

Re: TrueType

Posted: Mon Nov 05, 2012 7:21 pm
by Leency
Слишком медленно работает для реального использования. Хотя уже можно пилить... Не понятно что это с левой стороны за артефакты и наложения в тексте. Плюс почему не полные строки.

По поводу ошибки - там жирный текст реализовался таким кодом

WriteText(start_x, start_y, 0x80, text_colors[text_color_index], #line, 0);
IF (b_text) { $add ebx, 1<<16 $int 0x40 }

после стало
//WriteText(start_x, start_y, 0x80, text_colors[text_color_index], #line, 0);
text_out stdcall (#line, -1, 17, text_colors[text_color_index], start_x, start_y-3);
IF (b_text) { $add ebx, 1<<16 $int 0x40 }

:)

Re: TrueType

Posted: Mon Nov 05, 2012 8:27 pm
by SoUrcerer
Это баг в truetype.obj, а конкретно - в моих обертках. Память для изображения с текстом явно выделяется неправильно. Работает медленно. потому что по сто раз вызывается 7я функция. В идеале картинка должна рисоваться в памяти целиком, а затем выводиться на экран. Truetype.obj позволяет делать такой трюк, по идее. Т.е. реально весь текст будет отрисовываться в одну область памяти, а затем эта область выводится на экран целиком.

Re: TrueType

Posted: Mon Nov 05, 2012 8:32 pm
by lev
А с приложенной версией можно скриншот?

Re: TrueType

Posted: Mon Nov 05, 2012 8:39 pm
by Leency
Вот

Re: TrueType

Posted: Mon Nov 05, 2012 8:41 pm
by SoUrcerer
Уже лучше, но все равно функция подсчета длины строки в пикселях песочит. Молодец, lev!

Re: TrueType

Posted: Mon Nov 05, 2012 8:42 pm
by lev
Мне лень было с ней разбираться и я помножил результат на 2, просто для просмотра :)
Так что пока не молодец.

Re: TrueType

Posted: Mon Nov 05, 2012 8:46 pm
by Leency
Умножь на 2,5 :)

Re: TrueType

Posted: Mon Nov 05, 2012 8:50 pm
by SoUrcerer
Умножил на два? О_о Странно, не очень похоже, судя по результату. Странно, что ошибка накапливается.

Re: TrueType

Posted: Mon Nov 05, 2012 9:05 pm
by SoUrcerer
Кстати, lev, вот тебе пара хороших идей :) Я думаю, что эти правки не займут много времени, но попробовать с ними стоит - пока не будет добавлен полноценный блиттер.
Leency wrote:Может добавить опцию ,чтобы программа не читала изображение с экрана, а использовала указаный фоновый цвет. Это будет наааамного быстрее и подойдёт для 90% случаев. Это первый вариант ускорения.
Второй - это выключить вывод информации на доску отладки - это на самом деле много процессорного времени хавает.

Re: TrueType

Posted: Mon Nov 05, 2012 9:42 pm
by lev
Отладку могу убрать.
С фоновым цветом посмотрю.

Re: TrueType

Posted: Mon Nov 05, 2012 10:13 pm
by SoUrcerer
lev, будет здорово!

Re: TrueType

Posted: Tue Nov 06, 2012 1:10 pm
by SoUrcerer
Вспомнил/понял, почему работает так медленно. Причина в строке

Code: Select all

 if (buffer==-1) {stbtt_InitFont(&font, pdf_font_DroidSans,stbtt_GetFontOffsetForIndex(pdf_font_DroidSans,0) );kol_board_puts("default font\n");} else {stbtt_InitFont(&font, buffer,stbtt_GetFontOffsetForIndex(buffer,0) );kol_board_puts("Font loaded..\n");}
Нужно вынести процедуру инициализации шрифта из процедуры отрисовки. API станет сложнее, зато будет на порядок или два быстрее работать.

Re: TrueType

Posted: Fri Nov 09, 2012 12:02 pm
by linuxer9
very Good :)
can i use arabic fonts ?

Re: TrueType

Posted: Fri Nov 09, 2012 12:24 pm
by johnfound
You probably can, if you can read/write them from left to right...

Re: TrueType

Posted: Fri Nov 09, 2012 4:55 pm
by SoUrcerer
You can try, but for now library accept only DOS866 codepage. You can fix sources easily to accept UTF-8, but you also should think about inserting symbols from right to left. It's possible and relatively easy.