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 : * Permission is hereby granted, free of charge, to any person obtaining a 13 : * copy of this software and associated documentation files (the "Software"), 14 : * to deal in the Software without restriction, including without limitation 15 : * the rights to use, copy, modify, merge, publish, distribute, sublicense, 16 : * and/or sell copies of the Software, and to permit persons to whom the 17 : * Software is furnished to do so, subject to the following conditions: 18 : * 19 : * The above copyright notice and this permission notice shall be included 20 : * in all copies or substantial portions of the Software. 21 : * 22 : * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 23 : * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 : * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 25 : * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 : * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 : * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 28 : * DEALINGS IN THE SOFTWARE. 29 : ****************************************************************************/ 30 : 31 : #include "pcidskdrivercore.h" 32 : 33 : /************************************************************************/ 34 : /* PCIDSKDriverIdentify() */ 35 : /************************************************************************/ 36 : 37 62203 : int PCIDSKDriverIdentify(GDALOpenInfo *poOpenInfo) 38 : 39 : { 40 71364 : return poOpenInfo->nHeaderBytes >= 512 && 41 71364 : memcmp(poOpenInfo->pabyHeader, "PCIDSK ", 8) == 0; 42 : } 43 : 44 : /************************************************************************/ 45 : /* PCIDSKDriverSetCommonMetadata() */ 46 : /************************************************************************/ 47 : 48 1225 : void PCIDSKDriverSetCommonMetadata(GDALDriver *poDriver) 49 : { 50 1225 : poDriver->SetDescription(DRIVER_NAME); 51 1225 : poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES"); 52 1225 : poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); 53 1225 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES"); 54 1225 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES"); 55 1225 : poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "PCIDSK Database File"); 56 1225 : poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/pcidsk.html"); 57 1225 : poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); 58 1225 : poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "pix"); 59 1225 : poDriver->SetMetadataItem(GDAL_DMD_CREATIONDATATYPES, 60 1225 : "Byte UInt16 Int16 Float32 CInt16 CFloat32"); 61 1225 : poDriver->SetMetadataItem( 62 : GDAL_DMD_CREATIONOPTIONLIST, 63 : "<CreationOptionList>" 64 : " <Option name='INTERLEAVING' type='string-select' default='BAND' " 65 : "description='raster data organization'>" 66 : " <Value>PIXEL</Value>" 67 : " <Value>BAND</Value>" 68 : " <Value>FILE</Value>" 69 : " <Value>TILED</Value>" 70 : " </Option>" 71 : " <Option name='COMPRESSION' type='string-select' default='NONE' " 72 : "description='compression - (INTERLEAVING=TILED only)'>" 73 : " <Value>NONE</Value>" 74 : " <Value>RLE</Value>" 75 : " <Value>JPEG</Value>" 76 : " </Option>" 77 : " <Option name='TILESIZE' type='int' default='127' description='Tile " 78 : "Size (INTERLEAVING=TILED only)'/>" 79 : " <Option name='TILEVERSION' type='int' default='2' " 80 : "description='Tile Version (INTERLEAVING=TILED only)'/>" 81 1225 : "</CreationOptionList>"); 82 1225 : poDriver->SetMetadataItem(GDAL_DS_LAYER_CREATIONOPTIONLIST, 83 1225 : "<LayerCreationOptionList/>"); 84 1225 : poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE"); 85 1225 : poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES, 86 1225 : "Integer Real String IntegerList"); 87 1225 : poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES"); 88 : 89 1225 : poDriver->pfnIdentify = PCIDSKDriverIdentify; 90 1225 : poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES"); 91 1225 : poDriver->SetMetadataItem(GDAL_DCAP_CREATE, "YES"); 92 1225 : } 93 : 94 : /************************************************************************/ 95 : /* DeclareDeferredPCIDSKPlugin() */ 96 : /************************************************************************/ 97 : 98 : #ifdef PLUGIN_FILENAME 99 1509 : void DeclareDeferredPCIDSKPlugin() 100 : { 101 1509 : if (GDALGetDriverByName(DRIVER_NAME) != nullptr) 102 : { 103 295 : return; 104 : } 105 1214 : auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME); 106 : #ifdef PLUGIN_INSTALLATION_MESSAGE 107 : poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE, 108 : PLUGIN_INSTALLATION_MESSAGE); 109 : #endif 110 1214 : PCIDSKDriverSetCommonMetadata(poDriver); 111 1214 : GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver); 112 : } 113 : #endif