LCOV - code coverage report
Current view: top level - frmts/pcidsk/sdk/segment - cpcidskpct.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 25 25 100.0 %
Date: 2025-08-01 10:10:57 Functions: 5 7 71.4 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Purpose:  Implementation of the CPCIDSK_PCT class.
       4             :  *
       5             :  ******************************************************************************
       6             :  * Copyright (c) 2009
       7             :  * PCI Geomatics, 90 Allstate Parkway, Markham, Ontario, Canada.
       8             :  *
       9             :  * SPDX-License-Identifier: MIT
      10             :  ****************************************************************************/
      11             : 
      12             : #include "pcidsk_exception.h"
      13             : #include "segment/cpcidskpct.h"
      14             : #include <cassert>
      15             : #include <cstring>
      16             : 
      17             : using namespace PCIDSK;
      18             : 
      19             : PCIDSK_PCT::~PCIDSK_PCT() = default;
      20             : 
      21             : /************************************************************************/
      22             : /*                            CPCIDSK_PCT()                             */
      23             : /************************************************************************/
      24             : 
      25           2 : CPCIDSK_PCT::CPCIDSK_PCT( PCIDSKFile *fileIn, int segmentIn,
      26           2 :                           const char *segment_pointer )
      27           2 :         : CPCIDSKSegment( fileIn, segmentIn, segment_pointer )
      28             : 
      29             : {
      30           2 : }
      31             : 
      32             : /************************************************************************/
      33             : /*                           ~CPCIDSKGeoref()                           */
      34             : /************************************************************************/
      35             : 
      36           4 : CPCIDSK_PCT::~CPCIDSK_PCT()
      37             : 
      38             : {
      39           4 : }
      40             : 
      41             : /************************************************************************/
      42             : /*                              ReadPCT()                               */
      43             : /************************************************************************/
      44             : 
      45           1 : void CPCIDSK_PCT::ReadPCT( unsigned char pct[768] )
      46             : 
      47             : {
      48           2 :     PCIDSKBuffer seg_data;
      49             : 
      50           1 :     seg_data.SetSize( 768*4 );
      51             : 
      52           1 :     ReadFromFile( seg_data.buffer, 0, 768*4 );
      53             : 
      54             :     int i;
      55         257 :     for( i = 0; i < 256; i++ )
      56             :     {
      57         256 :         pct[  0+i] = (unsigned char) seg_data.GetInt(   0+i*4, 4 );
      58         256 :         pct[256+i] = (unsigned char) seg_data.GetInt(1024+i*4, 4 );
      59         256 :         pct[512+i] = (unsigned char) seg_data.GetInt(2048+i*4, 4 );
      60             :     }
      61           1 : }
      62             : 
      63             : /************************************************************************/
      64             : /*                              WritePCT()                              */
      65             : /************************************************************************/
      66             : 
      67           1 : void CPCIDSK_PCT::WritePCT( unsigned char pct[768] )
      68             : 
      69             : {
      70           2 :     PCIDSKBuffer seg_data;
      71             : 
      72           1 :     seg_data.SetSize( 768*4 );
      73             : 
      74           1 :     ReadFromFile( seg_data.buffer, 0, 768*4 );
      75             : 
      76             :     int i;
      77         257 :     for( i = 0; i < 256; i++ )
      78             :     {
      79         256 :         seg_data.Put( (int) pct[  0+i],   0+i*4, 4 );
      80         256 :         seg_data.Put( (int) pct[256+i],1024+i*4, 4 );
      81         256 :         seg_data.Put( (int) pct[512+i],2048+i*4, 4 );
      82             :     }
      83             : 
      84           1 :     WriteToFile( seg_data.buffer, 0, 768*4 );
      85           1 : }

Generated by: LCOV version 1.14