$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Lubomir Bourdev (lbourdev_at_[hidden])
Date: 2006-10-12 17:29:06
> Is there a comparison with Anti-Grain? IIRC it also was
representation
> independent.
>
> Bruno
>
Question for Bruno (or anyone familiar with Anti-Grain):
1. How does Anti-Grain deal with planar images?
Let's take the simplest possible example: Fill an image with the color
red.
Here is a possible code in GIL to do that:
template <typename View, typename Pixel>
void fill_pixels(const View& view, const Pixel& color) {
typename View::pixel_t value;
color_convert(color, value);
for (typename View::iterator it=view.begin(); it!=view.end(); ++it)
*it = value;
};
Here is how to call it:
rgb8_pixel_t red(255,0,0);
// Channel ordering: RGBRGBRGBRGB...
rgb8_image_t interleaved_image(100,100);
fill_pixels(view(interleaved_image), red);
// Channel ordering: RRR... GGG... BBB...
rgb8_planar_image_t planar_image(100,100);
fill_pixels(view(planar_image), red);
How would this example look with Anti-Grain?
__________________
Second question, how does AGG deal with images whose type is
instantiated at run-time? (For example, suppose you read the image from
a file and want to keep it in native form). Here is the extra GIL code
to do this:
template <typename Pixel>
struct fill_pixels_op {
typedef void result_type;
Pixel _color;
fill_pixels_op(const Pixel& color) : _color(color) {}
template <typename View>
void operator()(const View& view) const { fill_pixels(view, _color);
}
};
template <typename ViewTypes, typename Pixel>
void fill_pixels(const any_image_view<ViewTypes>& view, const Pixel&
color) {
apply_operation(view, fill_pixels_op<Pixel>(color));
}
Here is how to call it:
typedef mpl::vector<rgb8_view_t, rgb8_planar_view_t> my_views_t;
any_image_view<my_views_t> runtime_view;
runtime_view = view(interleaved_image);
fill_pixels(runtime_view, red);
runtime_view = view(planar_image);
fill_pixels(runtime_view, red);
Again, my question is, how would this look in Anti-Grain?
For the Vigra fans out there... How would the above two examples look in
Vigra?
For the Cairo fans... same question.
Thanks,
Lubomir