Перейти к содержанию
    

Изменение яркости пикселя

06.01.2022 в 22:04, mantech сказал:

Альфа канал для этого можно использовать

Вообщем, как и ожидалось, альфу тут использовать нельзя, ибо альфа - это коэффициент прозрачности, а не яркости. Чтобы его превратить в яркость, нужно на нижнем слое в тех же координатах отрисовать точку с базовым цветом, а уж потом изменять его прозрачность. Следовательно, данной точкой я испорчу картинку на нижнем слое, при том, что шрифт придется рисовать только на верхнем, что крайне неудобно, гораздо проще пересчитать цветовые составляющие, тем более, что там действительно не нужна плавучка. Минус тут только один - перед расчетом нужно прочитать пред. значение точки, что притормаживает вывод при больших размерах символов, т.к. экранная область сконфигурирована на ускорение записи, а не чтения...

Но правды ради, по сравнению со временем растеризации, потери на чтение незначительны, т.к. это нужно только для контурных точек.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, mantech said:

Но правды ради, по сравнению со временем растеризации, потери на чтение незначительны

Так растеризацию достаточно выполнить один раз, а дальше использовать кэш.

Для вывода логично иметь отдельные функции для однородного и "сложного" фона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, aaarrr сказал:

Так растеризацию достаточно выполнить один раз, а дальше использовать кэш.

Кэш нужно довольно большой, т.к. наряду с символами высотой 20-30 пикс. используем и высоты по 150-200 пикс, что с учетом количества символов и нескольких типов шрифтов довольно накладно. Поэтому решил закэшировать только системный фонт, тот, который используется в настоечной форме гуя...

Да и не такое уж большое время занимает растеризация проверил, символ "0" с размером в 150пикс растеризуется за 150мксек.

Другой вопрос, на который пока не могу ответить, как выравнивать символы. Например цифры и большинство букв можно печатать напрямую, у них практически одна высота, но как быть с Q  или Й, У  запятой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

49 minutes ago, mantech said:

Кэш нужно довольно большой

~1.5Мбайт на 224 символа с размером 150. Что тут экономить?

 

49 minutes ago, mantech said:

Другой вопрос, на который пока не могу ответить, как выравнивать символы. Например цифры и большинство букв можно печатать напрямую, у них практически одна высота, но как быть с Q  или Й, У  запятой?

Так при растеризации должны получаться x, y и advance.x, advance.y для каждого глифа.

 

Пример растеризации без и с гамма-коррекцией (не очень удачный, т.к. гамма для какого-то левого экрана):

glyph_A.bmp

glyph_O.bmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, aaarrr сказал:

x, y и advance.x, advance.y

x y - это я так понимаю высота и ширина, а что эти адвансы должны показывать ?

18 минут назад, aaarrr сказал:

Пример растеризации

У меня почти так и есть.. Экран с потертым резистивным тачем для отладки, поэтому и качество фотки не айс..

Безымянный.jpg

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, mantech said:

x y - это я так понимаю высота и ширина

Смещения относительно baseline.

 

2 hours ago, mantech said:

качество фотки не айс

Просто ничего не видно. Для такого размера гамма-коррекция уже не так актуальна, это на мелких шрифтах искажается форма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 минут назад, aaarrr сказал:

Просто ничего не видно.

Да, не очень...

Вообщем, скажу я, ковыряться с этими шрифтами еще тот "кайф", путем ковыряния в исходниках нашел то, что у них называется основная линия (baseline), но это не то, что я думал, это линия основания шрифта, НО, у таких символов, как "q" или "у", эти закорючки внизу идут ниже этой линии, и они придумали descent-фактор, который нужно учитывать вниз от осн. линии... Вообщем посчитав все эти высоты и снижения наконец-то получил желаемый результат...

 

Безымянный.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, mantech said:

желаемый результат

Надписи сверху и посередине выглядят точно как кириллица в китаефоне - межсимвольные интервалы завышены и гуляют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, aaarrr сказал:

межсимвольные интервалы завышены и гуляют

этим я еще не занимался, там просто по константе прибавляется, пока с высотами решал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...