** Utility function to generate map, legend, scalebar and reference images. ** ** Parameters: ** - mapserv: mapserv object (used to extract the map object). ** - bQueryMap: if set to TRUE a query map will be created instead of a regular map. ** - bReturnOnError: if set to TRUE, the function will return on the first error, else it will try to generate all the images. */
| 4580 | ** - bReturnOnError: if set to TRUE, the function will return on the first error, else it will try to generate all the images. |
| 4581 | */ |
| 4582 | int msGenerateImages(mapservObj *mapserv, int bQueryMap, int bReturnOnError) |
| 4583 | { |
| 4584 | char buffer[1024]; |
| 4585 | |
| 4586 | if(mapserv) { |
| 4587 | |
| 4588 | /* render the map OR query map */ |
| 4589 | if((!bQueryMap && mapserv->map->status == MS_ON) || (bQueryMap && mapserv->map->querymap.status == MS_ON)) { |
| 4590 | imageObj *image = NULL; |
| 4591 | |
| 4592 | image = msDrawMap(mapserv->map, bQueryMap); |
| 4593 | if(image) { |
| 4594 | snprintf(buffer, sizeof(buffer), "%s%s%s.%s", mapserv->map->web.imagepath, mapserv->map->name, mapserv->Id, MS_IMAGE_EXTENSION(mapserv->map->outputformat)); |
| 4595 | |
| 4596 | if(msSaveImage(mapserv->map, image, buffer) != MS_SUCCESS && bReturnOnError) { |
| 4597 | msFreeImage(image); |
| 4598 | return MS_FAILURE; |
| 4599 | } |
| 4600 | msFreeImage(image); |
| 4601 | } else if(bReturnOnError) |
| 4602 | return MS_FAILURE; |
| 4603 | } |
| 4604 | |
| 4605 | /* render the legend */ |
| 4606 | if(mapserv->map->legend.status == MS_ON) { |
| 4607 | imageObj *image = NULL; |
| 4608 | image = msDrawLegend(mapserv->map, MS_FALSE); |
| 4609 | if(image) { |
| 4610 | snprintf(buffer, sizeof(buffer), "%s%sleg%s.%s", mapserv->map->web.imagepath, mapserv->map->name, mapserv->Id, MS_IMAGE_EXTENSION(mapserv->map->outputformat)); |
| 4611 | |
| 4612 | if(msSaveImage(mapserv->map, image, buffer) != MS_SUCCESS && bReturnOnError) { |
| 4613 | msFreeImage(image); |
| 4614 | return MS_FAILURE; |
| 4615 | } |
| 4616 | msFreeImage(image); |
| 4617 | } else if(bReturnOnError) |
| 4618 | return MS_FAILURE; |
| 4619 | } |
| 4620 | |
| 4621 | /* render the scalebar */ |
| 4622 | if(mapserv->map->scalebar.status == MS_ON) { |
| 4623 | imageObj *image = NULL; |
| 4624 | image = msDrawScalebar(mapserv->map); |
| 4625 | if(image) { |
| 4626 | snprintf(buffer, sizeof(buffer), "%s%ssb%s.%s", mapserv->map->web.imagepath, mapserv->map->name, mapserv->Id, MS_IMAGE_EXTENSION(mapserv->map->outputformat)); |
| 4627 | if(msSaveImage(mapserv->map, image, buffer) != MS_SUCCESS && bReturnOnError) { |
| 4628 | msFreeImage(image); |
| 4629 | return MS_FAILURE; |
| 4630 | } |
| 4631 | msFreeImage(image); |
| 4632 | } else if(bReturnOnError) |
| 4633 | return MS_FAILURE; |
| 4634 | } |
| 4635 | |
| 4636 | /* render the reference map */ |
| 4637 | if(mapserv->map->reference.status == MS_ON) { |
| 4638 | imageObj *image; |
| 4639 | image = msDrawReferenceMap(mapserv->map); |
no test coverage detected