Всем привет.
Решается задача модификации вывода текстурного шрифта.
В настоящий момент выводимый шрифт выводится как моноширинный,
требуется реализовать вывод в естественном виде.
Собственно, задача сводится к сканированию справа и слева текстуры шрифтов для определения ширины символов.
Тут возникли непонятки. При обращении к QImage.Pixel() выдаются неверные данные. (я так думаю)
Текстура приличного размера 1024*1024, rgb32. 256 символов, по 16 в строку.
Возможно ошибка в алгоритме сканирования текстуры.
Готов выслушать ваши мнения.
QRgb back = fontTexture.pixel(0,0);
int row = 0, col = 0;
for (int c = 0; c < 256; c++, col++)
{
if (col == 16) {
col = 0;
row++;
}
int xOffset = col*CHARPIX;
int yOffset = row*CHARPIX;
int xmin = CHARPIX-1;
int xmax = 0;
bool dobreak = false;
QRgb p;
for (int x = 0; x < CHARPIX; x++) {
for (int y = 0; y < CHARPIX; y++) {
p = fontTexture.pixel(xOffset+x, yOffset+y);
if (p == back) continue;
xmin = x;
dobreak = true;
}
if (dobreak) break;
}
symInfos[c].xmin = xmin;
dobreak = false;
for (int x = CHARPIX-1; x >= 0; x--) {
for (int y = 0; y < CHARPIX; y++) {
p = fontTexture.pixel(xOffset+x, yOffset+y);
if (p == back) continue;
xmax = x;
dobreak = true;
break;
}
if (dobreak) break;
}
symInfos[c].xmax = xmax;
}