Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: PCIDSK Database File 4 : * Purpose: Read/write PCIDSK Database File used by the PCI software, using 5 : * the external PCIDSK library. 6 : * Author: Frank Warmerdam, warmerdam@pobox.com 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 2009, Frank Warmerdam <warmerdam@pobox.com> 10 : * Copyright (c) 2009-2013, Even Rouault <even dot rouault at spatialys.com> 11 : * 12 : * SPDX-License-Identifier: MIT 13 : ****************************************************************************/ 14 : 15 : #include "gdal_frmts.h" 16 : #include "gdalplugindriverproxy.h" 17 : 18 : #include "pcidskdrivercore.h" 19 : 20 : /************************************************************************/ 21 : /* PCIDSKDriverIdentify() */ 22 : /************************************************************************/ 23 : 24 73173 : int PCIDSKDriverIdentify(GDALOpenInfo *poOpenInfo) 25 : 26 : { 27 83265 : return poOpenInfo->nHeaderBytes >= 512 && 28 83265 : memcmp(poOpenInfo->pabyHeader, "PCIDSK ", 8) == 0; 29 : } 30 : 31 : /************************************************************************/ 32 : /* PCIDSKDriverSetCommonMetadata() */ 33 : /************************************************************************/ 34 : 35 1764 : void PCIDSKDriverSetCommonMetadata(GDALDriver *poDriver) 36 : { 37 1764 : poDriver->SetDescription(DRIVER_NAME); 38 1764 : poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES"); 39 1764 : poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); 40 1764 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES"); 41 1764 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES"); 42 1764 : poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "PCIDSK Database File"); 43 1764 : poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/pcidsk.html"); 44 1764 : poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); 45 1764 : poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "pix"); 46 1764 : poDriver->SetMetadataItem(GDAL_DMD_CREATIONDATATYPES, 47 1764 : "Byte UInt16 Int16 Float32 CInt16 CFloat32"); 48 1764 : poDriver->SetMetadataItem( 49 : GDAL_DMD_CREATIONOPTIONLIST, 50 : "<CreationOptionList>" 51 : " <Option name='INTERLEAVING' type='string-select' default='BAND' " 52 : "description='raster data organization'>" 53 : " <Value>PIXEL</Value>" 54 : " <Value>BAND</Value>" 55 : " <Value>FILE</Value>" 56 : " <Value>TILED</Value>" 57 : " </Option>" 58 : " <Option name='COMPRESSION' type='string-select' default='NONE' " 59 : "description='compression - (INTERLEAVING=TILED only)'>" 60 : " <Value>NONE</Value>" 61 : " <Value>RLE</Value>" 62 : " <Value>JPEG</Value>" 63 : " </Option>" 64 : " <Option name='TILESIZE' type='int' default='127' description='Tile " 65 : "Size (INTERLEAVING=TILED only)'/>" 66 : " <Option name='TILEVERSION' type='int' default='2' " 67 : "description='Tile Version (INTERLEAVING=TILED only)'/>" 68 1764 : "</CreationOptionList>"); 69 1764 : poDriver->SetMetadataItem(GDAL_DS_LAYER_CREATIONOPTIONLIST, 70 1764 : "<LayerCreationOptionList/>"); 71 1764 : poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE"); 72 1764 : poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES, 73 1764 : "Integer Real String IntegerList"); 74 1764 : poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES"); 75 : 76 1764 : poDriver->pfnIdentify = PCIDSKDriverIdentify; 77 1764 : poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES"); 78 1764 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE, "YES"); 79 : 80 1764 : poDriver->SetMetadataItem(GDAL_DCAP_UPDATE, "YES"); 81 1764 : poDriver->SetMetadataItem(GDAL_DMD_UPDATE_ITEMS, 82 : "GeoTransform SRS " 83 : "DatasetMetadata BandMetadata " 84 1764 : "RasterValues Features"); 85 1764 : } 86 : 87 : /************************************************************************/ 88 : /* DeclareDeferredPCIDSKPlugin() */ 89 : /************************************************************************/ 90 : 91 : #ifdef PLUGIN_FILENAME 92 2033 : void DeclareDeferredPCIDSKPlugin() 93 : { 94 2033 : if (GDALGetDriverByName(DRIVER_NAME) != nullptr) 95 : { 96 283 : return; 97 : } 98 1750 : auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME); 99 : #ifdef PLUGIN_INSTALLATION_MESSAGE 100 : poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE, 101 : PLUGIN_INSTALLATION_MESSAGE); 102 : #endif 103 1750 : PCIDSKDriverSetCommonMetadata(poDriver); 104 1750 : GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver); 105 : } 106 : #endif