MCPcopy Index your code
hub / github.com/MapServer/MapServer / agg2CreateImage

Function agg2CreateImage

mapagg.cpp:689–725  ·  view source on GitHub ↗

image i/o */

Source from the content-addressed store, hash-verified

687
688/* image i/o */
689imageObj *agg2CreateImage(int width, int height, outputFormatObj *format, colorObj * bg) {
690 imageObj *image = NULL;
691 if (format->imagemode != MS_IMAGEMODE_RGB && format->imagemode != MS_IMAGEMODE_RGBA) {
692 msSetError(MS_MISCERR,
693 "AGG2 driver only supports RGB or RGBA pixel models.", "agg2CreateImage()");
694 return image;
695 }
696 image = (imageObj *) calloc(1, sizeof (imageObj));
697 MS_CHECK_ALLOC(image, sizeof (imageObj), NULL);
698 AGG2Renderer *r = new AGG2Renderer();
699
700 r->buffer = (band_type*)malloc(width * height * 4 * sizeof(band_type));
701 if (r->buffer == NULL)
702 {
703 msSetError(MS_MEMERR, "%s: %d: Out of memory allocating %u bytes.\n", "agg2CreateImage()",
704 __FILE__, __LINE__, width * height * 4 * sizeof(band_type));
705 free(image);
706 return NULL;
707 }
708 r->m_rendering_buffer.attach(r->buffer, width, height, width * 4);
709 r->m_pixel_format.attach(r->m_rendering_buffer);
710 r->m_renderer_base.attach(r->m_pixel_format);
711 r->m_renderer_scanline.attach(r->m_renderer_base);
712 if( bg && !format->transparent )
713 r->m_renderer_base.clear(aggColor(bg));
714 else
715 r->m_renderer_base.clear(AGG_NO_COLOR);
716
717 if (!bg || format->transparent || format->imagemode == MS_IMAGEMODE_RGBA ) {
718 r->use_alpha = true;
719 } else {
720 r->use_alpha = false;
721 }
722 image->img.plugin = (void*) r;
723
724 return image;
725}
726
727int agg2SaveImage(imageObj *img, FILE *fp, outputFormatObj * format) {
728 msSetError(MS_MISCERR, "AGG2 does not support direct image saving", "agg2SaveImage()");

Callers 1

createIconImageMethod · 0.85

Calls 3

msSetErrorFunction · 0.85
attachMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected