42 lines
1.8 KiB
C++
42 lines
1.8 KiB
C++
#ifndef IPRHPARSER_H
|
||
#define IPRHPARSER_H
|
||
|
||
#include "GPRDataModel.h"
|
||
#include <QString>
|
||
#include <QStringList>
|
||
|
||
class IprhParser {
|
||
public:
|
||
// 主入口:传入 .iprh 文件路径,自动寻找同名的 .iprb 文件
|
||
static bool loadFromIprh(const QString &iprhFilePath, GPRDataModel &model);
|
||
|
||
// 多通道 Impulse 数据合并入口:一个文件夹下有多个 _A01.iprh/.iprb ... _A14.iprh/.iprb
|
||
static bool loadImpulseMultiChannel(const QString &dirPath,
|
||
const QString &baseName,
|
||
GPRDataModel &model);
|
||
|
||
// 将多通道 Impulse 数据转换为本地 Mala Mira 风格 .rad/.rd3,再走现有 Mala Mira 解析流程
|
||
static bool convertImpulseMultiChannelToMala(const QString &dirPath,
|
||
const QString &baseName,
|
||
QString *radFilePath,
|
||
QString *errorMessage = nullptr);
|
||
|
||
static bool parseHeaderOnly(const QString &iprhFilePath, GPRDataModel::Header &header);
|
||
|
||
private:
|
||
static bool parseIprhHeader(const QString &iprhFilePath, GPRDataModel::Header &header);
|
||
static bool loadIprbBinary(const QString &iprbFilePath, GPRDataModel &model);
|
||
static bool writeMalaFiles(const QString &radFilePath,
|
||
const QString &rd3FilePath,
|
||
const GPRDataModel &model,
|
||
const QString &sourceBaseName,
|
||
QString *errorMessage);
|
||
static QString formatFloatList(const QVector<float> &values);
|
||
static QString uniqueConvertedBasePath(const QString &dirPath, const QString &baseName);
|
||
|
||
static double extractDouble(const QString &value);
|
||
static int extractInt(const QString &value);
|
||
};
|
||
|
||
#endif // IPRHPARSER_H
|