| 816 | */ |
| 817 | |
| 818 | unsigned char *msSaveImageBuffer(imageObj* image, int *size_ptr, outputFormatObj *format) |
| 819 | { |
| 820 | *size_ptr = 0; |
| 821 | if( MS_RENDERER_PLUGIN(image->format)){ |
| 822 | rasterBufferObj data; |
| 823 | rendererVTableObj *renderer = image->format->vtable; |
| 824 | if(renderer->supports_pixel_buffer) { |
| 825 | bufferObj buffer; |
| 826 | msBufferInit(&buffer); |
| 827 | renderer->getRasterBufferHandle(image,&data); |
| 828 | msSaveRasterBufferToBuffer(&data,&buffer,format); |
| 829 | *size_ptr = buffer.size; |
| 830 | return buffer.data; |
| 831 | //don't free the bufferObj as we don't own the bytes anymore |
| 832 | } else { |
| 833 | /* check if the renderer supports native buffer output */ |
| 834 | if (renderer->saveImageBuffer) |
| 835 | return renderer->saveImageBuffer(image, size_ptr, format); |
| 836 | |
| 837 | msSetError(MS_MISCERR, "Unsupported image type", "msSaveImageBuffer()"); |
| 838 | return NULL; |
| 839 | } |
| 840 | } |
| 841 | msSetError(MS_MISCERR, "Unsupported image type", "msSaveImage()"); |
| 842 | return NULL; |
| 843 | } |
| 844 | |
| 845 | /** |
| 846 | * Generic function to free the imageObj |
no test coverage detected