Добрый день
"Архитектурный" вопрос, ну наверное (полагаю) паттерны и все такое
Есть громадный QImage ARGB32 (грубо говоря) размер которого нередко гигабайты. Расчеты выполняются во флотах, рез-т сохраняется в ARGB32. Точка имеджа unsigned int, читается/пишется с помощью ф-ций типа qRgba.
И вот в один прекрасный день оказалось что 8-бит на канал мало для продвинутых пользователей. Подавай им 16, причем всяко-разно, 16 может быть unsigned short или "пол-флота" (half). При этом 8-бит никто не отменял, те 16 нужны относительно редко - но нужны. Т.е. юзер поставил бубочку - вывод 16-битный, иначе 8-битный (ну это он так хочет).
Проблема в том что unsigned int рассыпаны по всему коду, масса адресной арифметики использует sizeof(uint). Заменить прямолинейно на 4 ushort - уже работа на недели, но это просто не годится т.к. 8-бит тоже должно поддерживаться. Начинать городить if'ы - выглядит как верный путь к слабоумию.
Что бы Вы предложили?
Спасибо