Revision: 4910
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4910&view=rev
Author: mdboom
Date: 2008-01-31 07:10:16 -0800 (Thu, 31 Jan 2008)
Log Message:
-----------
Fix image artifacts with various kinds of interpolation (Thanks Darren
Dale for finding the bug).
Modified Paths:
--------------
trunk/matplotlib/src/_image.cpp
Modified: trunk/matplotlib/src/_image.cpp
===================================================================
--- trunk/matplotlib/src/_image.cpp 2008-01-31 14:21:49 UTC (rev 4909)
+++ trunk/matplotlib/src/_image.cpp 2008-01-31 15:10:16 UTC (rev 4910)
@@ -409,43 +409,17 @@
agg::render_scanlines(ras, sl, ri);
}
break;
- case BILINEAR:
- case BICUBIC:
- case SPLINE16:
- case SPLINE36:
- case HANNING:
- case HAMMING:
- case HERMITE:
- case KAISER:
- case QUADRIC:
- case CATROM:
- case GAUSSIAN:
- case BESSEL:
- case MITCHELL:
- case SINC:
- case LANCZOS:
- case BLACKMAN:
- {
- agg::image_filter_lut filter;
- switch(interpolation)
- {
- case BILINEAR: filter.calculate(agg::image_filter_bilinear(),
norm); break;
- case BICUBIC: filter.calculate(agg::image_filter_bicubic(),
norm); break;
- case SPLINE16: filter.calculate(agg::image_filter_spline16(),
norm); break;
- case SPLINE36: filter.calculate(agg::image_filter_spline36(),
norm); break;
- case HANNING: filter.calculate(agg::image_filter_hanning(),
norm); break;
- case HAMMING: filter.calculate(agg::image_filter_hamming(),
norm); break;
- case HERMITE: filter.calculate(agg::image_filter_hermite(),
norm); break;
- case KAISER: filter.calculate(agg::image_filter_kaiser(),
norm); break;
- case QUADRIC: filter.calculate(agg::image_filter_quadric(),
norm); break;
- case CATROM: filter.calculate(agg::image_filter_catrom(),
norm); break;
- case GAUSSIAN: filter.calculate(agg::image_filter_gaussian(),
norm); break;
- case BESSEL: filter.calculate(agg::image_filter_bessel(),
norm); break;
- case MITCHELL: filter.calculate(agg::image_filter_mitchell(),
norm); break;
- case SINC: filter.calculate(agg::image_filter_sinc(radius),
norm); break;
- case LANCZOS:
filter.calculate(agg::image_filter_lanczos(radius), norm); break;
- case BLACKMAN:
filter.calculate(agg::image_filter_blackman(radius), norm); break;
- }
+
+ case HANNING:
+ case HAMMING:
+ case HERMITE:
+ {
+ agg::image_filter_lut filter;
+ switch (interpolation) {
+ case HANNING: filter.calculate(agg::image_filter_hanning(), norm);
break;
+ case HAMMING: filter.calculate(agg::image_filter_hamming(), norm);
break;
+ case HERMITE: filter.calculate(agg::image_filter_hermite(), norm);
break;
+ }
typedef agg::span_image_filter_rgba_2x2<img_accessor_type,
interpolator_type> span_gen_type;
typedef agg::renderer_scanline_aa<renderer_base, span_alloc_type,
span_gen_type> renderer_type;
span_gen_type sg(ia, interpolator, filter);
@@ -453,6 +427,44 @@
agg::render_scanlines(ras, sl, ri);
}
break;
+ case BILINEAR:
+ case BICUBIC:
+ case SPLINE16:
+ case SPLINE36:
+ case KAISER:
+ case QUADRIC:
+ case CATROM:
+ case GAUSSIAN:
+ case BESSEL:
+ case MITCHELL:
+ case SINC:
+ case LANCZOS:
+ case BLACKMAN:
+ {
+ agg::image_filter_lut filter;
+ switch(interpolation)
+ {
+ case BILINEAR: filter.calculate(agg::image_filter_bilinear(),
norm); break;
+ case BICUBIC: filter.calculate(agg::image_filter_bicubic(), norm);
break;
+ case SPLINE16: filter.calculate(agg::image_filter_spline16(),
norm); break;
+ case SPLINE36: filter.calculate(agg::image_filter_spline36(),
norm); break;
+ case KAISER: filter.calculate(agg::image_filter_kaiser(), norm);
break;
+ case QUADRIC: filter.calculate(agg::image_filter_quadric(), norm);
break;
+ case CATROM: filter.calculate(agg::image_filter_catrom(), norm);
break;
+ case GAUSSIAN: filter.calculate(agg::image_filter_gaussian(), norm);
break;
+ case BESSEL: filter.calculate(agg::image_filter_bessel(), norm);
break;
+ case MITCHELL: filter.calculate(agg::image_filter_mitchell(), norm);
break;
+ case SINC: filter.calculate(agg::image_filter_sinc(radius), norm);
break;
+ case LANCZOS: filter.calculate(agg::image_filter_lanczos(radius),
norm); break;
+ case BLACKMAN: filter.calculate(agg::image_filter_blackman(radius),
norm); break;
+ }
+ typedef agg::span_image_filter_rgba<img_accessor_type,
interpolator_type> span_gen_type;
+ typedef agg::renderer_scanline_aa<renderer_base, span_alloc_type,
span_gen_type> renderer_type;
+ span_gen_type sg(ia, interpolator, filter);
+ renderer_type ri(rb, sa, sg);
+ agg::render_scanlines(ras, sl, ri);
+ }
+ break;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins