История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Vit чё за херня? )))) Я в своё время тоже добрался, декодер написал вообще отдельно, а это отложил так и отложилось насовсем времени не было разбирать.
что это может быть мусор
Ты перед дебагами от lv_font_conv получи данные символа в сжатом и несжатом видах. Там можно получить в виде исходника на си ещё выхлоп.
И уже имея эталоны, входных данных и выходных. Просто пройдись по выходам функций начиная от той которая выплёвывает данные. Даже наверное лучше с начала без дебагов, а глазами, я было начал дебагать принтами просто выводя битмап до и после обработки в каждом месте, вот не помню уже там толь размеры не правильные выдаются и в конце мусор от этого или ещё чего, хоть убей не помню, но как сказал разбираться не было времени, а как декодеры(разные варианты) я свои похерил так вообще забросил.
Ну ковыряйся =) Расскажешь потом чво там было. К слову в файле lv_font_fmt_txt.c
рекомендую реализацию декомпрессора скомпоновать, убрав функции и вызовы, схлопнуть всё в одну функцию, я задолбался по началу глазами прыгать то туда то сюда,
например вызов decompress_line()
нафиг не нужен, ибо это просто
static inline void decompress_line(uint8_t * out, lv_coord_t w)
{
lv_coord_t i;
for(i = 0; i < w; i++) {
out[i] = rle_next();
}
}
Скопировать эту писюльку сразу в decompress()
и так со всем остальным почти, гораздо удобнее будет уже переписывать. С учётом того что вызов rle_next() тоже потом будет не нужен, короче всё не нужно всё в итоге схлопнется в 1 цикл ну или парочку вложенных на свищах и всё такое. Хоть тут и inline везде, но компиляторы сейчас такие компиляяторы.
Ладно химичь =)
Исходная версия LINUX-ORG-RU, :
Vit чё за херня? )))) Я в своё время тоже добрался, декодер написал вообще отдельно, а это отложил так и отложилось насовсем времени не было разбирать.
что это может быть мусор
Ты перед дебагами от lv_font_conv получи данные символа в сжатом и несжатом видах. Там можно получить в виде исходника на си ещё выхлоп.
И уже имея эталоны, входных данных и выходных. Просто пройдись по выходам функций начиная от той которая выплёвывает данные. Даже наверное лучше с начала без дебагов, а глазами, я было начал дебагать принтами просто выводя битмап до и после обработки в каждом месте, вот не помню уже там толь размеры не правильные выдаются и в конце мусор от этого или ещё чего, хоть убей не помню, но как сказал разбираться не было времени, а как декодеры(разные варианты) я свои похерил так вообще забросил.
Ну ковыряйся =) Расскажешь потом чво там было. К слову в файле lv_font_fmt_txt.c
рекомендую реализацию декомпрессора скомпоновать, убрав функции и вызовы, схлопнуть всё в одну функцию, я задолбался по началу глазами прыгать то туда то сюда,
например вызов decompress_line()
нафиг не нужен, ибо это просто
static inline void decompress_line(uint8_t * out, lv_coord_t w)
{
lv_coord_t i;
for(i = 0; i < w; i++) {
out[i] = rle_next();
}
}
Скопировать эту писюльку сразу в decompress()
и так со всем остальным почти, гораздо удобнее будет уже переписывать.
Ладно химичь =)