|
Boost : |
Subject: Re: [boost] [GIL] color_convert
From: fabien.castan_at_[hidden]
Date: 2010-08-05 04:20:43
Hi,
> I cannot recreate your problem. Here is a little test app that works
> fine on my machine ( VC10 )
The problem is that I define a generic conversion like that:
/// \ingroup ColorConvert
/// \brief Converting HSL to any pixel type. Note: Supports homogeneous pixels only.
///
/// Done by an intermediate RGB conversion
template <typename C2>
struct default_color_converter_impl<hsl_t,C2>
{
template <typename P1, typename P2>
void operator()(const P1& src, P2& dst) const
{
typedef hsl_t C1;
typedef typename channel_type<P1>::type T1;
typedef typename channel_type<P2>::type T2;
pixel<T2,rgb_layout_t> tmp;
default_color_converter_impl<C1,rgb_t>()(src, tmp);
default_color_converter_impl<rgb_t,C2>()(tmp, dst);
}
};
So it's in conflict with:
template <typename C1> struct default_color_converter_impl<C1, rgba_t>,
if I use color_convert( hslPixel, rgbaPixel ).
The goal of creating this generic conversion is that I can still make the conversion using an intermediate rgb colorspace if there is no specialization.
I think we can have a good solution, if we apply this method to all colorspaces:
* define a generic conversion to another colorspace using an intermediate rgb colorspace conversion,
only in one direction MyColorspace -> typename C2 (so without typename C1 -> MyColorspace).
That's why I would like to remove typename C1 -> rgba_t implementation.
* redefine the conversion for colorspaces we want to make a direct conversion
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk