Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: SVG Translator 4 : * Purpose: Implements OGRSVGDriver. 5 : * Author: Even Rouault, even dot rouault at spatialys.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #include "ogr_svg.h" 14 : #include "cpl_conv.h" 15 : 16 : CPL_C_START 17 : void RegisterOGRSVG(); 18 : CPL_C_END 19 : 20 : // g++ -g -Wall -fPIC ogr/ogrsf_frmts/svg/*.c* -shared -o ogr_SVG.so -Iport 21 : // -Igcore -Iogr -Iogr/ogrsf_frmts -Iogr/ogrsf_frmts/svg -L. -lgdal -DHAVE_EXPAT 22 : 23 : /************************************************************************/ 24 : /* Open() */ 25 : /************************************************************************/ 26 : 27 24512 : static GDALDataset *OGRSVGDriverOpen(GDALOpenInfo *poOpenInfo) 28 : 29 : { 30 24512 : if (poOpenInfo->eAccess == GA_Update || poOpenInfo->fpL == nullptr) 31 22151 : return nullptr; 32 : 33 2361 : if (strstr((const char *)poOpenInfo->pabyHeader, "<svg") == nullptr) 34 2360 : return nullptr; 35 : 36 1 : OGRSVGDataSource *poDS = new OGRSVGDataSource(); 37 : 38 1 : if (!poDS->Open(poOpenInfo->pszFilename)) 39 : { 40 0 : delete poDS; 41 0 : poDS = nullptr; 42 : } 43 : 44 1 : return poDS; 45 : } 46 : 47 : /************************************************************************/ 48 : /* RegisterOGRSVG() */ 49 : /************************************************************************/ 50 : 51 1595 : void RegisterOGRSVG() 52 : 53 : { 54 1595 : if (!GDAL_CHECK_VERSION("OGR/SVG driver")) 55 0 : return; 56 : 57 1595 : if (GDALGetDriverByName("SVG") != nullptr) 58 302 : return; 59 : 60 1293 : GDALDriver *poDriver = new GDALDriver(); 61 : 62 1293 : poDriver->SetDescription("SVG"); 63 1293 : poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); 64 1293 : poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Scalable Vector Graphics"); 65 1293 : poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "svg"); 66 1293 : poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/svg.html"); 67 1293 : poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); 68 : 69 1293 : poDriver->pfnOpen = OGRSVGDriverOpen; 70 : 71 1293 : GetGDALDriverManager()->RegisterDriver(poDriver); 72 : }