|
From: <md...@us...> - 2010-06-16 17:08:52
|
Revision: 8439
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8439&view=rev
Author: mdboom
Date: 2010-06-16 17:08:43 +0000 (Wed, 16 Jun 2010)
Log Message:
-----------
Fix accessing uninitialized memory error.
Modified Paths:
--------------
trunk/matplotlib/src/_image.cpp
Modified: trunk/matplotlib/src/_image.cpp
===================================================================
--- trunk/matplotlib/src/_image.cpp 2010-06-15 19:32:24 UTC (rev 8438)
+++ trunk/matplotlib/src/_image.cpp 2010-06-16 17:08:43 UTC (rev 8439)
@@ -44,7 +44,7 @@
Image::Image() :
bufferIn(NULL), rbufIn(NULL), colsIn(0), rowsIn(0),
bufferOut(NULL), rbufOut(NULL), colsOut(0), rowsOut(0), BPP(4),
- interpolation(BILINEAR), aspect(ASPECT_FREE), bg(1,1,1,0) {
+ interpolation(BILINEAR), aspect(ASPECT_FREE), bg(1,1,1,0), resample(true) {
_VERBOSE("Image::Image");
}
@@ -196,7 +196,7 @@
std::pair<agg::int8u*,bool> bufpair = _get_output_buffer();
Py::Object ret = Py::asObject(Py_BuildValue("lls#", rowsOut, colsOut,
- bufpair.first, colsOut*rowsOut*4));
+ bufpair.first, colsOut*rowsOut*4));
if (bufpair.second) delete [] bufpair.first;
return ret;
@@ -229,7 +229,7 @@
agg::rendering_buffer rtmp;
rtmp.attach(reinterpret_cast<unsigned char*>(buf), colsOut, rowsOut,
- row_len);
+ row_len);
switch (format) {
case 0:
@@ -259,7 +259,7 @@
args.verify_length(0);
int row_len = colsOut * 4;
PyObject* o = Py_BuildValue("lls#", rowsOut, colsOut,
- rbufOut, row_len * rowsOut);
+ rbufOut, row_len * rowsOut);
return Py::asObject(o);
}
@@ -362,9 +362,9 @@
typedef agg::span_allocator<agg::rgba8> span_alloc_type;
span_alloc_type sa;
agg::rgba8 background(agg::rgba8(int(255*bg.r),
- int(255*bg.g),
- int(255*bg.b),
- int(255*bg.a)));
+ int(255*bg.g),
+ int(255*bg.b),
+ int(255*bg.a)));
// the image path
agg::path_storage path;
@@ -396,11 +396,11 @@
case NEAREST:
{
- typedef agg::span_image_filter_rgba_nn<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);
- renderer_type ri(rb, sa, sg);
- agg::render_scanlines(ras, sl, ri);
+ typedef agg::span_image_filter_rgba_nn<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);
+ renderer_type ri(rb, sa, sg);
+ agg::render_scanlines(ras, sl, ri);
}
break;
@@ -414,22 +414,22 @@
case HAMMING: filter.calculate(agg::image_filter_hamming(), norm); break;
case HERMITE: filter.calculate(agg::image_filter_hermite(), norm); break;
}
- if (resample)
- {
- typedef agg::span_image_resample_rgba_affine<img_accessor_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);
- }
- else
- {
- 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);
- renderer_type ri(rb, sa, sg);
- agg::render_scanlines(ras, sl, ri);
- }
+ if (resample)
+ {
+ typedef agg::span_image_resample_rgba_affine<img_accessor_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);
+ }
+ else
+ {
+ 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);
+ renderer_type ri(rb, sa, sg);
+ agg::render_scanlines(ras, sl, ri);
+ }
}
break;
case BILINEAR:
@@ -463,22 +463,22 @@
case LANCZOS: filter.calculate(agg::image_filter_lanczos(radius), norm); break;
case BLACKMAN: filter.calculate(agg::image_filter_blackman(radius), norm); break;
}
- if (resample)
- {
- typedef agg::span_image_resample_rgba_affine<img_accessor_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);
- }
- else
- {
- 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);
- }
+ if (resample)
+ {
+ typedef agg::span_image_resample_rgba_affine<img_accessor_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);
+ }
+ else
+ {
+ 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;
@@ -660,7 +660,7 @@
behaviors().supportSetattr();
add_varargs_method( "apply_rotation", &Image::apply_rotation, Image::apply_rotation__doc__);
- add_varargs_method( "apply_scaling", &Image::apply_scaling, Image::apply_scaling__doc__);
+ add_varargs_method( "apply_scaling", &Image::apply_scaling, Image::apply_scaling__doc__);
add_varargs_method( "apply_translation", &Image::apply_translation, Image::apply_translation__doc__);
add_keyword_method( "as_rgba_str", &Image::as_rgba_str, Image::as_rgba_str__doc__);
add_varargs_method( "color_conv", &Image::color_conv, Image::color_conv__doc__);
@@ -744,25 +744,25 @@
size_t ind=0;
for (size_t j=0; j<thisim->rowsOut; j++) {
for (size_t i=0; i<thisim->colsOut; i++) {
- thisx = i+ox;
+ thisx = i+ox;
- if (isflip)
- thisy = thisim->rowsOut - j + oy;
- else
- thisy = j+oy;
+ if (isflip)
+ thisy = thisim->rowsOut - j + oy;
+ else
+ thisy = j+oy;
- if (thisx>=numcols || thisy>=numrows) {
- ind +=4;
- continue;
- }
+ if (thisx>=numcols || thisy>=numrows) {
+ ind +=4;
+ continue;
+ }
- pixfmt::color_type p;
- p.r = *(thisim->bufferOut+ind++);
- p.g = *(thisim->bufferOut+ind++);
- p.b = *(thisim->bufferOut+ind++);
- p.a = *(thisim->bufferOut+ind++);
- pixf.blend_pixel(thisx, thisy, p, 255);
+ pixfmt::color_type p;
+ p.r = *(thisim->bufferOut+ind++);
+ p.g = *(thisim->bufferOut+ind++);
+ p.b = *(thisim->bufferOut+ind++);
+ p.a = *(thisim->bufferOut+ind++);
+ pixf.blend_pixel(thisx, thisy, p, 255);
}
}
}
@@ -854,20 +854,20 @@
for (size_t rownum=0; rownum<imo->rowsIn; rownum++) {
for (size_t colnum=0; colnum<imo->colsIn; colnum++) {
- offset = rownum*A->strides[0] + colnum*A->strides[1];
- r = *(double *)(A->data + offset);
- g = *(double *)(A->data + offset + A->strides[2] );
- b = *(double *)(A->data + offset + 2*A->strides[2] );
+ offset = rownum*A->strides[0] + colnum*A->strides[1];
+ r = *(double *)(A->data + offset);
+ g = *(double *)(A->data + offset + A->strides[2] );
+ b = *(double *)(A->data + offset + 2*A->strides[2] );
- if (rgba)
- alpha = *(double *)(A->data + offset + 3*A->strides[2] );
- else
- alpha = 1.0;
+ if (rgba)
+ alpha = *(double *)(A->data + offset + 3*A->strides[2] );
+ else
+ alpha = 1.0;
- *buffer++ = int(255*r); // red
- *buffer++ = int(255*g); // green
- *buffer++ = int(255*b); // blue
- *buffer++ = int(255*alpha); // alpha
+ *buffer++ = int(255*r); // red
+ *buffer++ = int(255*g); // green
+ *buffer++ = int(255*b); // blue
+ *buffer++ = int(255*alpha); // alpha
}
}
@@ -963,19 +963,19 @@
const size_t N = imo->rowsIn * imo->colsIn;
size_t i = 0;
while (i<N) {
- r = *(double *)(A->data++);
- g = *(double *)(A->data++);
- b = *(double *)(A->data++);
+ r = *(double *)(A->data++);
+ g = *(double *)(A->data++);
+ b = *(double *)(A->data++);
- if (rgba)
- alpha = *(double *)(A->data++);
- else
- alpha = 1.0;
+ if (rgba)
+ alpha = *(double *)(A->data++);
+ else
+ alpha = 1.0;
- *buffer++ = int(255*r); // red
- *buffer++ = int(255*g); // green
- *buffer++ = int(255*b); // blue
- *buffer++ = int(255*alpha); // alpha
+ *buffer++ = int(255*r); // red
+ *buffer++ = int(255*g); // green
+ *buffer++ = int(255*b); // blue
+ *buffer++ = int(255*alpha); // alpha
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|