2010-03-30 3 views
2

J'ai une classe sur <PIXEL> basé sur un modèle, supposé être l'un des types de pixels de boost::gil (pour l'instant, que ce soit gray8_pixel_t ou gray16_pixel_t, et je me attends seulement pour soutenir les types de pixels homogènes à l'avenir rgb8_pixel_t par exemple). La classe doit saisir unsigned char ou unsigned short selon le type de pixel; Je suppose que c'est enterré quelque part dans la classe de pixels, mais aucun de PIXEL::value_type, PIXEL::channel_type ou PIXEL::channel_type::value type ne semble être ce que je veux.Comment extraire le canal POD-type d'un type de pixel homogène boost :: gil?

Quel est le truc?

(je pourrais bien sûr utiliser type indirection par certains struct d'aide spécialisée modèle à obtenir cette information:

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;}; 

mais GIL doit sûrement fournir déjà quelque chose d'équivalent, si je pouvais trouver ...)

Répondre

1

Aha .. cela semble faire l'affaire:

typename boost::gil::channel_type<PIXEL>::type 
Questions connexes