LCOV - code coverage report
Current view: top level - frmts/lerc - lercdrivercore.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 15 15 100.0 %
Date: 2026-06-19 21:24:00 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  GDAL
       4             :  * Purpose:  LERC driver
       5             :  * Author:   Even Rouault <even dot rouault at spatialys.com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2026, Even Rouault <even dot rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "gdal_frmts.h"
      14             : #include "gdalplugindriverproxy.h"
      15             : 
      16             : #include "lercdrivercore.h"
      17             : #include "cpl_string.h"
      18             : 
      19             : /************************************************************************/
      20             : /*                         LERCDriverIdentify()                         */
      21             : /************************************************************************/
      22             : 
      23       63650 : int LERCDriverIdentify(GDALOpenInfo *poOpenInfo)
      24             : 
      25             : {
      26             : #if !defined(GDAL_USE_LERC_INTERNAL)
      27             :     static const char L1sig[] = "CntZImage ";
      28             : #endif
      29             :     static const char L2sig[] = "Lerc2 ";
      30       63650 :     const char *pszHeader = reinterpret_cast<char *>(poOpenInfo->pabyHeader);
      31       69505 :     return pszHeader && poOpenInfo->nHeaderBytes >= 10 &&
      32             :            (
      33             : #if !defined(GDAL_USE_LERC_INTERNAL)
      34             :                strncmp(pszHeader, L1sig, sizeof(L1sig) - 1) == 0 ||
      35             : #endif
      36       69505 :                strncmp(pszHeader, L2sig, sizeof(L2sig) - 1) == 0);
      37             : }
      38             : 
      39             : /************************************************************************/
      40             : /*                    LERCDriverSetCommonMetadata()                     */
      41             : /************************************************************************/
      42             : 
      43        1872 : void LERCDriverSetCommonMetadata(GDALDriver *poDriver)
      44             : {
      45        1872 :     poDriver->SetDescription(DRIVER_NAME);
      46        1872 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME,
      47        1872 :                               "Limited Error Raster Compression");
      48        1872 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/lerc.html");
      49        1872 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "lrc");
      50        1872 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      51        1872 :     poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES");
      52             : 
      53        1872 :     poDriver->pfnIdentify = LERCDriverIdentify;
      54        1872 :     poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
      55        1872 : }
      56             : 
      57             : /************************************************************************/
      58             : /*                     DeclareDeferredLERCPlugin()                      */
      59             : /************************************************************************/
      60             : 
      61             : #ifdef PLUGIN_FILENAME
      62             : void DeclareDeferredLERCPlugin()
      63             : {
      64             :     if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
      65             :     {
      66             :         return;
      67             :     }
      68             :     auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
      69             : #ifdef PLUGIN_INSTALLATION_MESSAGE
      70             :     poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
      71             :                               PLUGIN_INSTALLATION_MESSAGE);
      72             : #endif
      73             :     LERCDriverSetCommonMetadata(poDriver);
      74             :     GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
      75             : }
      76             : #endif

Generated by: LCOV version 1.14