forked from KolibriOS/kolibrios
Truetype lib: Make SetBackColor() function faster.
git-svn-id: svn://kolibrios.org@5518 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c0c80a0aca
commit
686b37b809
@ -1,27 +1,28 @@
|
||||
11.04.12
|
||||
SoUrcerer
|
||||
11.4.12
|
||||
пусть сам автор напишет...
|
||||
----------
|
||||
SoUrcerer
|
||||
20.6.12
|
||||
...
|
||||
----------
|
||||
SoUrcerer
|
||||
24.8.12
|
||||
SoUrcerer
|
||||
Исправил определение длины выводимой строки в пикселах. Теперь text_out работает корректно на длинных строках.
|
||||
Исправил вывод русских букв.
|
||||
|
||||
Вопрос с блиттером остается открытым. Нужен блиттер с поддержкой прозрачности, учитывающий флаг "рисовать относительно клиентской области окна". В том числе он нужен для букв с умляутами, типа ё и й. А так же составных символов. Иначе глиф-черточка или глиф-точечки "зарисует" остаток буквы в некоторых шрифтах. И вообще, так явно будет быстрее, чем грабить экран, смешивать и выводить на экран, вызывая 2 системных функции и гоняя цикл в пользовательском режиме
|
||||
---------
|
||||
----------
|
||||
11.10.12
|
||||
Lev
|
||||
stb.h
|
||||
ñèíõðîíèçèðîâàë stb.h ñ stb_truetype0.6c.h
|
||||
|
||||
â ñòðîêå if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
||||
âñòàâèë STBTT_memcpy âìåñòî STBTT_memset ïî àíàëîãèè ñ èñõîäíûì stb_truetype0.6c.h (åñëè ýòî áûëî íåïðàâèëüíî - âåðíèòå íàçàä)
|
||||
|
||||
lib.c
|
||||
- stb.h
|
||||
Ñèíõðîíèçèðîâàë stb.h ñ stb_truetype0.6c.h
|
||||
 ñòðîêå if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
||||
Âñòàâèë STBTT_memcpy âìåñòî STBTT_memset ïî àíàëîãèè ñ èñõîäíûì stb_truetype0.6c.h (åñëè ýòî áûëî íåïðàâèëüíî - âåðíèòå íàçàä)
|
||||
- lib.c
|
||||
заменил 65-ю функцию на 7-ю, по коду чуть проще и вылетало у меня постоянно с 65-й
|
||||
внёс поправки для правильной работы с окнами отсчитывающими координаты от клиентского окна
|
||||
Добавил учёт descent, чтобы не вылетало на диакритике типа "Й", dos2utf править не стал - вместо Ё и т.п. показываются символы расширенной латиницы
|
||||
----------
|
||||
13.03.15
|
||||
hidnplayr
|
||||
Separate original stb_truetype.h from kolibri library code, updated stb_truetype to version 1.02, added utf8 support for library functions, added compile.bat for windows users.
|
||||
----------
|
||||
Leency
|
||||
15.05.15
|
||||
Make SetBackColor() function faster.
|
||||
|
@ -170,26 +170,27 @@ int __stdcall picture_utf8(unsigned char *s, stbtt_fontinfo *buffer, char *scree
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void __stdcall SetBackColor(int back_color, int width, int height, char *from_zone)
|
||||
{
|
||||
int i,j;
|
||||
unsigned char bcr,bcg,bcb;
|
||||
unsigned char bcr = back_color>>16;
|
||||
unsigned char bcg = back_color>>8;
|
||||
unsigned char bcb = back_color;
|
||||
|
||||
bcr=back_color<<16;
|
||||
bcg=back_color<<8;
|
||||
bcb=back_color;
|
||||
|
||||
for (j=0;j<height ;j++)
|
||||
unsigned int i;
|
||||
unsigned int max_i = width * height * 3;
|
||||
for (i=0; i < max_i; i+=3)
|
||||
{
|
||||
for (i=0;i<width ;i++)
|
||||
{
|
||||
from_zone[(j*width+i)*3]=back_color;
|
||||
from_zone[(j*width+i)*3+1]=back_color>>8;
|
||||
from_zone[(j*width+i)*3+2]=back_color>>16;
|
||||
}
|
||||
from_zone[i] = bcb;
|
||||
from_zone[i+1] = bcg;
|
||||
from_zone[i+2] = bcr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int __stdcall text_out(char *string, char *buffer, int height, int color,int back_color, int x, int y) {
|
||||
unsigned char *from_zone;
|
||||
unsigned char *to_zone;
|
||||
|
Loading…
Reference in New Issue
Block a user