@@ -252,6 +252,40 @@ Image::buffer_argb32(const Py::Tuple& args) {
252252}
253253
254254
255+ char Image::buffer_bgra32__doc__[] =
256+ " buffer = buffer_bgra32()"
257+ " \n "
258+ " Return the image buffer as agbr32\n "
259+ ;
260+ Py::Object
261+ Image::buffer_bgra32 (const Py::Tuple& args) {
262+ // "Return the image object as bgra32";
263+
264+ _VERBOSE (" RendererAgg::buffer_bgra32" );
265+
266+ args.verify_length (0 );
267+
268+ int row_len = colsOut * 4 ;
269+
270+ unsigned char * buf_tmp = new unsigned char [row_len * rowsOut];
271+ if (buf_tmp ==NULL )
272+ throw Py::MemoryError (" RendererAgg::buffer_bgra32 could not allocate memory" );
273+
274+ agg::rendering_buffer rtmp;
275+ rtmp.attach (buf_tmp, colsOut, rowsOut, row_len);
276+
277+ agg::color_conv (&rtmp, rbufOut, agg::color_conv_rgba32_to_bgra32 ());
278+
279+ // todo: how to do this with native CXX
280+ // PyObject* o = Py_BuildValue("s#", buf_tmp, row_len * rowsOut);
281+ PyObject* o = Py_BuildValue (" lls#" , rowsOut, colsOut,
282+ buf_tmp, row_len * rowsOut);
283+ delete [] buf_tmp;
284+ return Py::asObject (o);
285+
286+
287+ }
288+
255289char Image::buffer_rgba__doc__[] =
256290" buffer = buffer_rgba()"
257291" \n "
@@ -752,6 +786,7 @@ Image::init_type() {
752786 add_varargs_method ( " apply_translation" , &Image::apply_translation, Image::apply_translation__doc__);
753787 add_keyword_method ( " as_rgba_str" , &Image::as_rgba_str, Image::as_rgba_str__doc__);
754788 add_varargs_method ( " buffer_argb32" , &Image::buffer_argb32, Image::buffer_argb32__doc__);
789+ add_varargs_method ( " buffer_bgra32" , &Image::buffer_bgra32, Image::buffer_bgra32__doc__);
755790 add_varargs_method ( " buffer_rgba" , &Image::buffer_rgba, Image::buffer_rgba__doc__);
756791 add_varargs_method ( " get_aspect" , &Image::get_aspect, Image::get_aspect__doc__);
757792 add_varargs_method ( " get_interpolation" , &Image::get_interpolation, Image::get_interpolation__doc__);
0 commit comments