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
|
SoUrcerer
|
||||||
11.4.12
|
|
||||||
пусть сам автор напишет...
|
пусть сам автор напишет...
|
||||||
----------
|
----------
|
||||||
|
24.8.12
|
||||||
SoUrcerer
|
SoUrcerer
|
||||||
20.6.12
|
|
||||||
...
|
|
||||||
----------
|
|
||||||
SoUrcerer
|
|
||||||
24.8.12
|
|
||||||
Исправил определение длины выводимой строки в пикселах. Теперь text_out работает корректно на длинных строках.
|
Исправил определение длины выводимой строки в пикселах. Теперь text_out работает корректно на длинных строках.
|
||||||
Исправил вывод русских букв.
|
Исправил вывод русских букв.
|
||||||
|
|
||||||
Вопрос с блиттером остается открытым. Нужен блиттер с поддержкой прозрачности, учитывающий флаг "рисовать относительно клиентской области окна". В том числе он нужен для букв с умляутами, типа ё и й. А так же составных символов. Иначе глиф-черточка или глиф-точечки "зарисует" остаток буквы в некоторых шрифтах. И вообще, так явно будет быстрее, чем грабить экран, смешивать и выводить на экран, вызывая 2 системных функции и гоняя цикл в пользовательском режиме
|
Вопрос с блиттером остается открытым. Нужен блиттер с поддержкой прозрачности, учитывающий флаг "рисовать относительно клиентской области окна". В том числе он нужен для букв с умляутами, типа ё и й. А так же составных символов. Иначе глиф-черточка или глиф-точечки "зарисует" остаток буквы в некоторых шрифтах. И вообще, так явно будет быстрее, чем грабить экран, смешивать и выводить на экран, вызывая 2 системных функции и гоняя цикл в пользовательском режиме
|
||||||
---------
|
----------
|
||||||
11.10.12
|
11.10.12
|
||||||
Lev
|
Lev
|
||||||
stb.h
|
- stb.h
|
||||||
ñèíõðîíèçèðîâàë stb.h ñ stb_truetype0.6c.h
|
Ñèíõðîíèçèðîâàë stb.h ñ stb_truetype0.6c.h
|
||||||
|
 ñòðîêå if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
||||||
â ñòðîêå if (num_vertices > 0) STBTT_memcpy(tmp, vertices, num_vertices*sizeof(stbtt_vertex));
|
Âñòàâèë STBTT_memcpy âìåñòî STBTT_memset ïî àíàëîãèè ñ èñõîäíûì stb_truetype0.6c.h (åñëè ýòî áûëî íåïðàâèëüíî - âåðíèòå íàçàä)
|
||||||
âñòàâèë STBTT_memcpy âìåñòî STBTT_memset ïî àíàëîãèè ñ èñõîäíûì stb_truetype0.6c.h (åñëè ýòî áûëî íåïðàâèëüíî - âåðíèòå íàçàä)
|
- lib.c
|
||||||
|
|
||||||
lib.c
|
|
||||||
заменил 65-ю функцию на 7-ю, по коду чуть проще и вылетало у меня постоянно с 65-й
|
заменил 65-ю функцию на 7-ю, по коду чуть проще и вылетало у меня постоянно с 65-й
|
||||||
внёс поправки для правильной работы с окнами отсчитывающими координаты от клиентского окна
|
внёс поправки для правильной работы с окнами отсчитывающими координаты от клиентского окна
|
||||||
Добавил учёт descent, чтобы не вылетало на диакритике типа "Й", dos2utf править не стал - вместо Ё и т.п. показываются символы расширенной латиницы
|
Добавил учёт 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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void __stdcall SetBackColor(int back_color, int width, int height, char *from_zone)
|
void __stdcall SetBackColor(int back_color, int width, int height, char *from_zone)
|
||||||
{
|
{
|
||||||
int i,j;
|
unsigned char bcr = back_color>>16;
|
||||||
unsigned char bcr,bcg,bcb;
|
unsigned char bcg = back_color>>8;
|
||||||
|
unsigned char bcb = back_color;
|
||||||
bcr=back_color<<16;
|
|
||||||
bcg=back_color<<8;
|
unsigned int i;
|
||||||
bcb=back_color;
|
unsigned int max_i = width * height * 3;
|
||||||
|
for (i=0; i < max_i; i+=3)
|
||||||
for (j=0;j<height ;j++)
|
|
||||||
{
|
{
|
||||||
for (i=0;i<width ;i++)
|
from_zone[i] = bcb;
|
||||||
{
|
from_zone[i+1] = bcg;
|
||||||
from_zone[(j*width+i)*3]=back_color;
|
from_zone[i+2] = bcr;
|
||||||
from_zone[(j*width+i)*3+1]=back_color>>8;
|
|
||||||
from_zone[(j*width+i)*3+2]=back_color>>16;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int __stdcall text_out(char *string, char *buffer, int height, int color,int back_color, int x, int y) {
|
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 *from_zone;
|
||||||
unsigned char *to_zone;
|
unsigned char *to_zone;
|
||||||
|
Loading…
Reference in New Issue
Block a user