Coverage Report

Created: 2026-02-14 09:00

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/frmts/ceos2/ceossar.c
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  ASI CEOS Translator
4
 * Purpose:  Functions related to CeosSARVolume_t.
5
 * Author:   Paul Lahaie, pjlahaie@atlsci.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2000, Atlantis Scientific Inc
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#include "ceos.h"
14
15
extern Link_t *RecipeFunctions;
16
17
void InitCeosSARVolume(CeosSARVolume_t *volume, int32 file_name_convention)
18
33
{
19
33
    volume->Flavor = volume->Sensor = volume->ProductType = 0;
20
21
33
    volume->FileNamingConvention = file_name_convention;
22
23
33
    volume->VolumeDirectoryFile = volume->SARLeaderFile =
24
33
        volume->SARTrailerFile = volume->NullVolumeDirectoryFile =
25
33
            volume->ImageDesc.ImageDescValid = FALSE;
26
27
33
    volume->RecordList = NULL;
28
33
}
29
30
void CalcCeosSARImageFilePosition(CeosSARVolume_t *volume, int channel,
31
                                  int line, int *record, int *file_offset)
32
94
{
33
94
    struct CeosSARImageDesc *ImageDesc;
34
94
    int TotalRecords = 0, TotalBytes = 0;
35
36
94
    if (record)
37
0
        *record = 0;
38
94
    if (file_offset)
39
94
        *file_offset = 0;
40
41
94
    if (volume)
42
94
    {
43
94
        if (volume->ImageDesc.ImageDescValid)
44
94
        {
45
94
            ImageDesc = &(volume->ImageDesc);
46
47
94
            switch (ImageDesc->ChannelInterleaving)
48
94
            {
49
0
                case CEOS_IL_PIXEL:
50
0
                    TotalRecords = (line - 1) * ImageDesc->RecordsPerLine;
51
0
                    TotalBytes = (TotalRecords) * (ImageDesc->BytesPerRecord);
52
0
                    break;
53
0
                case CEOS_IL_LINE:
54
0
                    TotalRecords =
55
0
                        (ImageDesc->NumChannels * (line - 1) + (channel - 1)) *
56
0
                        ImageDesc->RecordsPerLine;
57
0
                    TotalBytes = (TotalRecords) * (ImageDesc->BytesPerRecord);
58
0
                    break;
59
94
                case CEOS_IL_BAND:
60
94
                    TotalRecords = (((channel - 1) * ImageDesc->Lines) *
61
94
                                    ImageDesc->RecordsPerLine) +
62
94
                                   (line - 1) * ImageDesc->RecordsPerLine;
63
94
                    TotalBytes = (TotalRecords) * (ImageDesc->BytesPerRecord);
64
94
                    break;
65
94
            }
66
94
            if (file_offset)
67
94
                *file_offset = ImageDesc->FileDescriptorLength + TotalBytes;
68
94
            if (record)
69
0
                *record = TotalRecords + 1;
70
94
        }
71
94
    }
72
94
}
73
74
int32 GetCeosSARImageData(CPL_UNUSED CeosSARVolume_t *volume,
75
                          CPL_UNUSED CeosRecord_t *processed_data_record,
76
                          CPL_UNUSED int channel, CPL_UNUSED int xoff,
77
                          CPL_UNUSED int xsize, CPL_UNUSED int bufsize,
78
                          CPL_UNUSED uchar *buffer)
79
0
{
80
0
    return 0;
81
0
}
82
83
void DetermineCeosSARPixelOrder(CPL_UNUSED CeosSARVolume_t *volume,
84
                                CPL_UNUSED CeosRecord_t *record)
85
0
{
86
0
}
87
88
void GetCeosSAREmbeddedInfo(CPL_UNUSED CeosSARVolume_t *volume,
89
                            CPL_UNUSED CeosRecord_t *processed_data_record,
90
                            CPL_UNUSED CeosSAREmbeddedInfo_t *info)
91
0
{
92
0
}
93
94
void DeleteCeosSARVolume(CeosSARVolume_t *volume)
95
0
{
96
0
    Link_t *Links;
97
98
0
    if (volume)
99
0
    {
100
0
        if (volume->RecordList)
101
0
        {
102
0
            for (Links = volume->RecordList; Links != NULL; Links = Links->next)
103
0
            {
104
0
                if (Links->object)
105
0
                {
106
0
                    DeleteCeosRecord(Links->object);
107
0
                    Links->object = NULL;
108
0
                }
109
0
            }
110
0
            DestroyList(volume->RecordList);
111
0
        }
112
0
        HFree(volume);
113
0
    }
114
0
}