LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/cad - ogrcaddrivercore.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 34 34 100.0 %
Date: 2025-10-22 13:51:22 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /*******************************************************************************
       2             :  *  Project: OGR CAD Driver
       3             :  *  Purpose: Implements driver based on libopencad
       4             :  *  Author: Alexandr Borzykh, mush3d at gmail.com
       5             :  *  Author: Dmitry Baryshnikov, polimax@mail.ru
       6             :  *  Language: C++
       7             :  *******************************************************************************
       8             :  *  The MIT License (MIT)
       9             :  *
      10             :  *  Copyright (c) 2016 Alexandr Borzykh
      11             :  *  Copyright (c) 2016, NextGIS
      12             :  *
      13             :  * SPDX-License-Identifier: MIT
      14             :  *******************************************************************************/
      15             : 
      16             : #include "gdal_frmts.h"
      17             : #include "gdalplugindriverproxy.h"
      18             : 
      19             : #include "ogrsf_frmts.h"
      20             : 
      21             : #include "ogrcaddrivercore.h"
      22             : 
      23             : /************************************************************************/
      24             : /*                    OGRCADDriverIdentify()                            */
      25             : /************************************************************************/
      26             : 
      27       60270 : static int OGRCADDriverIdentify(GDALOpenInfo *poOpenInfo)
      28             : 
      29             : {
      30             : #if !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
      31       60270 :     if (!poOpenInfo->IsExtensionEqualToCI("DWG"))
      32       60262 :         return FALSE;
      33             : #endif
      34          18 :     return poOpenInfo->nHeaderBytes >= 6 && poOpenInfo->pabyHeader[0] == 'A' &&
      35          18 :            poOpenInfo->pabyHeader[1] == 'C';
      36             : }
      37             : 
      38             : /************************************************************************/
      39             : /*                  OGRCADDriverSetCommonMetadata()                  */
      40             : /************************************************************************/
      41             : 
      42        2108 : void OGRCADDriverSetCommonMetadata(GDALDriver *poDriver)
      43             : {
      44        2108 :     poDriver->SetDescription(DRIVER_NAME);
      45        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES");
      46        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      47        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES");
      48        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_DELETE_LAYER, "YES");
      49        2108 :     poDriver->SetMetadataItem(GDAL_DMD_SUBDATASETS, "YES");
      50        2108 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "AutoCAD Driver");
      51        2108 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "dwg");
      52        2108 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/cad.html");
      53        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES");
      54        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_CURVE_GEOMETRIES, "YES");
      55        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_MEASURED_GEOMETRIES, "YES");
      56        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      57        2108 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      58             : 
      59        2108 :     poDriver->SetMetadataItem(
      60             :         GDAL_DMD_OPENOPTIONLIST,
      61             :         "<OpenOptionList>"
      62             :         "  <Option name='MODE' type='string' description='Open mode. "
      63             :         "READ_ALL - read all data (slow), READ_FAST - read main data "
      64             :         "(fast), READ_FASTEST - read less data' default='READ_FAST'/>"
      65             :         "  <Option name='ADD_UNSUPPORTED_GEOMETRIES_DATA' type='string' "
      66             :         "description='Add unsupported geometries data (color, attributes) "
      67             :         "to the layer (YES/NO). They will have no geometrical "
      68             :         "representation.' default='NO'/>"
      69        2108 :         "</OpenOptionList>");
      70             : 
      71        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      72        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES, "YES");
      73        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES_READ, "YES");
      74             : 
      75        2108 :     poDriver->pfnIdentify = OGRCADDriverIdentify;
      76        2108 :     poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
      77        2108 : }
      78             : 
      79             : /************************************************************************/
      80             : /*                   DeclareDeferredOGRCADPlugin()                      */
      81             : /************************************************************************/
      82             : 
      83             : #ifdef PLUGIN_FILENAME
      84        2038 : void DeclareDeferredOGRCADPlugin()
      85             : {
      86        2038 :     if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
      87             :     {
      88         283 :         return;
      89             :     }
      90        1755 :     auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
      91             : #ifdef PLUGIN_INSTALLATION_MESSAGE
      92             :     poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
      93             :                               PLUGIN_INSTALLATION_MESSAGE);
      94             : #endif
      95        1755 :     OGRCADDriverSetCommonMetadata(poDriver);
      96        1755 :     GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
      97             : }
      98             : #endif

Generated by: LCOV version 1.14