я получил два шаблона класса Color3_t и Color4_t, хранящие 3 и 4 цветовых каналы и выглядит следующим образом:Шаблон класса с другим порядком или переменными (цвет/классом Pixel)
template <typename TYPE>
struct Color3_t
{
TYPE Red;
TYPE Green;
TYPE Blue;
void Zero()
{
Red = Green = Blue = 0;
}
(...)
}
Оба шаблона имеет несколько функций для переворачивания , обмениваясь и т. д. цветовых каналов, и у меня есть еще один специализированный шаблон, который наследует эти классы - в случае, если TYPE является половинным float или float вместо целого.
Проблема в том, что порядок цветовых каналов: красный, зеленый и синий в настоящее время исправлен - это означает, что мне нужно будет создать версию шаблона класса Color3_t для каждого другого порядка цветовых каналов (например, BGR, GRB и т. Д. .). Как можно обеспечить и аргумент с другим цветовым порядком - скорее всего, это указывает на структуру цвета, как показано ниже.
структуры Цвет данных для RGB и BGR цвета заказ:
template <typename TYPE>
struct ColorRGB_t
{
TYPE Red;
TYPE Green;
TYPE Blue;
};
template <typename TYPE>
struct ColorBGR_t
{
TYPE Blue;
TYPE Green;
TYPE Red;
};
и то, что я хотел бы иметь - что, очевидно, неверно и неправильно, но должен дать представление о том, что я хочу достичь.
template <typename TYPE, class COLORORDER<TYPE>>
struct Color3_t : public COLORORDER<TYPE>
{
void Zero()
{
Red = Green = Blue = 0;
}
(...)
};
Я также хотел бы получить доступ каждый цветовой канал напрямую:
typedef Color3_t<BYTE,ColorBGR_t<BYTE>> ColorRGB8bpc;
ColorRGB8bpc oColor;
oColor.Red = 0;
вместо:
oColor.SomoObject.Red = 0;
Когда будет выполняться заказ членов? –
Также. Зачем нужен порядок? – ChadNC
Для доступа к этим объектам (структурам) в массивах или буферах памяти - после загрузки необработанных данных из файла - для доступа к ним по именам, а не прямым индексам 0,1,2. Я также получил класс изображения, который работает в разных цветовых/пиксельных форматах, а использование имен каналов вместо цифр просто намного проще. Различные форматы файлов используют другой порядок, например, изображения BMP используют RGB, TGA используют BGR, не говоря уже о том, что упростить извлечение 4-х канальных значений цвета из ULONG/DWORD. – mslaf