2024-04-23 13:41:16 +08:00
|
|
|
|
#pragma once
|
2024-03-26 10:33:00 +08:00
|
|
|
|
#include <set>
|
|
|
|
|
#include "MetaData.h"
|
|
|
|
|
#include "JobContent.h"
|
|
|
|
|
#include "expat.h"
|
|
|
|
|
#define BIN_LIMIT_SIZE 524288000 //500m
|
|
|
|
|
|
|
|
|
|
class JobMetaData : public MetaData
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
struct ParseAssist {
|
|
|
|
|
unsigned int depth;
|
|
|
|
|
string tempValue;
|
|
|
|
|
Property* tempProperty;
|
|
|
|
|
map<int, string> depthMap;
|
|
|
|
|
Part* lastPart;
|
|
|
|
|
ParameterSet* lastParameterSet;
|
|
|
|
|
BinaryFile* lastBinaryFile;
|
|
|
|
|
Layer* lastLayer;
|
|
|
|
|
DataBlock* lastDataBlock;
|
|
|
|
|
//double fixDis;
|
|
|
|
|
ScanField* lastScanField;
|
|
|
|
|
ParseAssist() {
|
|
|
|
|
depth = 0;
|
|
|
|
|
tempValue = "";
|
|
|
|
|
tempProperty = NULL;
|
|
|
|
|
lastPart = NULL;
|
|
|
|
|
lastParameterSet = NULL;
|
|
|
|
|
lastBinaryFile = NULL;
|
|
|
|
|
lastLayer = NULL;
|
|
|
|
|
lastDataBlock = NULL;
|
|
|
|
|
lastScanField = NULL;
|
|
|
|
|
// fixDis = 0.0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
JobMetaData();
|
|
|
|
|
~JobMetaData();
|
|
|
|
|
bool LoadFile(string path, string filename, vector<BPBinary::BFileInfo>& bfileinfos,string binpath);
|
|
|
|
|
bool LoadLayerByIndex(unsigned int lindex);
|
2024-05-15 13:38:34 +08:00
|
|
|
|
bool GetLayerByIndex(unsigned int lindex, ::stream::ResponseAny** response);
|
2024-03-26 10:33:00 +08:00
|
|
|
|
bool LoadLayer(Layer* layer);
|
|
|
|
|
void SetJobContent(JobContent* job_content);
|
|
|
|
|
bool LoadPrevLayer(Layer* layer);
|
|
|
|
|
bool LoadPrevLayerByIndex(unsigned int lindex);
|
|
|
|
|
bool LoadRemoteLayerByIndex(unsigned int index);
|
|
|
|
|
bool LoadFirstLayer();
|
|
|
|
|
//float CalcEvaTime(float start_at = 0.0);
|
|
|
|
|
//void ReCalcEvaTime();
|
|
|
|
|
|
|
|
|
|
void AddPart(Part* part);
|
|
|
|
|
void DelPart(Part* part);
|
|
|
|
|
private:
|
|
|
|
|
static void XMLCALL StartElement(void *userData, const XML_Char *name, const XML_Char **attrs);
|
|
|
|
|
static void XMLCALL EndElement(void *userData, const XML_Char *name);
|
|
|
|
|
static void XMLCALL DataHandler(void *userData, const XML_Char *s, int len);
|
|
|
|
|
|
|
|
|
|
bool ReadBDataBlock(LayerSummary* summary, Dimensions* partLayerDimensions, BPBinary::BinDataBlock* datablock, ifstream* ifs);
|
|
|
|
|
//bool ReadBChains(LayerSummary* summary, BPBinary::ChainPoint* chainpoint, ifstream* ifs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
map<int,BinaryFile*> binary_files;
|
|
|
|
|
|
|
|
|
|
JobContent* m_job_content;
|
|
|
|
|
ParseAssist parseAssist;
|
|
|
|
|
unsigned int m_ReadBytes;
|
|
|
|
|
unsigned int m_TotalBytes;
|
|
|
|
|
XML_Parser m_Parser;
|
|
|
|
|
};
|
|
|
|
|
|