Как извлечь POD-тип канала из однородного пиксельного типа boost :: gil? - PullRequest
2 голосов
/ 30 марта 2010

У меня есть класс, настроенный на <PIXEL>, предположительно, один из типов пикселей boost::gil (на данный момент только gray8_pixel_t или gray16_pixel_t, и я ожидаю, что поддержу только однородные типы пикселей, например rgb8_pixel_t в будущем).

Класс должен получить unsigned char или unsigned short в зависимости от типа пикселя; Я предполагаю, что это похоронено где-то в классе пикселей, но ни один из PIXEL::value_type, PIXEL::channel_type или PIXEL::channel_type::value type не кажется тем, что я хочу.

В чем прикол?

(Конечно, я мог бы использовать косвенное обращение к типу через некоторые специализированные вспомогательные структуры для получения этой информации:

template <typename PIXEL> struct types_for
  {};
template <> struct types_for<boost::gil::gray8_pixel_t>
  {typedef unsigned char channel_type;};
template <> struct types_for<boost::gil::gray16_pixel_t>
  {typedef unsigned short channel_type;};

но, конечно же, GIL должен предоставить что-то эквивалентное, если бы я мог просто найти это ...)

1 Ответ

1 голос
/ 30 марта 2010

Ага .. это похоже на дело:

typename boost::gil::channel_type<PIXEL>::type
...