#ifndef IPRHPARSER_H #define IPRHPARSER_H #include "GPRDataModel.h" #include #include 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 &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