📄 msg_header.h
字号:
//-----------------------------------------------------------------------------#ifndef __MSG_HEADER_H__#define __MSG_HEADER_H__#include <string>typedef enum { MSG_HEADER_PRIMARY = 0, MSG_HEADER_IMAGE_STRUCTURE = 1, MSG_HEADER_IMAGE_NAVIGATION = 2, MSG_HEADER_IMAGE_DATA_FUNCTION = 3, MSG_HEADER_ANNOTATION = 4, MSG_HEADER_TIMESTAMP = 5, MSG_HEADER_ANCILLARY_TEXT = 6, MSG_HEADER_KEY = 7, MSG_HEADER_RESERVED = 8, MSG_HEADER_SEGMENT_IDENTIFICATION = 128, MSG_HEADER_IMAGE_SEGMENT_LINE_QUALITY = 129, MSG_HEADER_MISSION_RESERVED_FUTURE_USE = 130, MSG_HEADER_IMAGE_DATETIME = 131, MSG_HEADER_IMAGE_QUALITY = 132} t_enum_MSG_headertype;#define MSG_HEADER_PRIMARY_LEN 16#define MSG_IMAGE_STRUCTURE_LEN 9#define MSG_IMAGE_NAVIGATION_LEN 51#define MSG_ANNOTATION_LEN 64#define MSG_TIMESTAMP_LEN 10 #define MSG_KEY_LEN 12#define MSG_SEGMENT_ID_LEN 13class stTextInfo{
public:
unsigned char Header_Type;
unsigned short Header_Record_Length;
unsigned char* szText;
bool bValid;
public:
stTextInfo();
~stTextInfo();
bool Assign(unsigned char *ptr);
};
//---------------------------------------------------------------------------
struct stPrimaryHeader
{
public:
unsigned char Header_Type; // = 0;
unsigned short Header_Record_Length; // = 0x10;
unsigned char File_Type_Code; // 0: image data file;
// 1: GTS Message(not used);
// 2: alphanumeric text file;
// 3: encryption key message;
unsigned int Total_Header_Length;
__int64 Data_Field_Length;
bool bValid;
public:
stPrimaryHeader(){ Header_Type = 0; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stImageStruct
{
public:
unsigned char Header_Type; // = 1;
unsigned short Header_Record_Length; // = 9;
unsigned char NB; // number of bits per pixel;
unsigned short NC; // number of columns;
unsigned short NL; // number of lines;
unsigned char Compression_Flag; // 0: no compression
// 1: lossless compression
// 2: lossy compression
bool bValid;
public:
stImageStruct(){ Header_Type = 1; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stImageNavigation
{
public:
unsigned char Header_Type; // = 2;
unsigned short Header_Record_Length; // = 0X33;
unsigned char Projection_Name[32]; // projection names;
unsigned int CFAC; // column scaling factor as;
unsigned int LFAC; // line scaling factor as defined;
unsigned int COFF; // column offset;
unsigned int LOFF; // line offset;
bool bValid;
public:
stImageNavegation(){ Header_Type = 2; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stImageDataFunction : public stTextInfo
{
stImageDataFunction(){ Header_Type = 3; bValid = false; }
};
struct stAnnotation : public stTextInfo
{
stAnnotation(){ Header_Type = 4; bValid = false; }
};
struct stTimeStamp
{
public:
unsigned char Header_Type; // = 5;
unsigned short Header_Record_Length; // = 0x0A;
unsigned char CDS_P_Field; // = 0x40;
unsigned short CDS_T_Field_day; // counter of days starting from 1958-1-1;
unsigned int CDS_T_Field_ms; // milliseconds of day;
bool bValid;
public:
stTimeStamp(){ Header_Type = 5; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stAncillaryText : public stTextInfo
{
stAncillaryText(){ Header_Type = 6; bValid = false; }
};
struct stKeyHeader
{
public:
unsigned char Header_Type; // = 7;
unsigned short Header_Record_Length; // = 7;
unsigned int Key_Number; // index of the used MGK;
bool bValid;
public:
stKeyHeader(){ Header_Type = 7; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stImageSegmentID
{
public:
unsigned char Header_Type; // = 128;
unsigned short Header_Record_Length; // = 7;
unsigned char Image_Segm_Seq_No; // image segment sequence number
unsigned char Total_No_Image_Segm; // total number of image segments
unsigned short Line_No_Image_Segm; // line number of the imagen segment
bool bValid;
public:
stImageSegmentID(){ Header_Type = 0x80; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stEncryptionKeyMsgHeader
{
public:
unsigned char Header_Type; // = 129;
unsigned short Header_Record_Length; // = 5;
unsigned short Station_Number; // index of the used station;
bool bValid;
public:
stEncryptionKeyMsgHeader(){ Header_Type = 0x81; bValid = false; }
bool Assign(unsigned char *ptr);
};
struct stImageCompensationInfo : public stTextInfo
{
stImageCompensationInfo(){ Header_Type = 0x82; bValid = false; }
};
struct stImageObserveTime : public stTextInfo
{
stImageObserveTime(){ Header_Type = 0x83; bValid = false; }
};
struct stImageQualityInfo : public stTextInfo
{
stImageQualityInfo(){ Header_Type = 0x84; bValid = false; }
};
//===========================================================================
class THritFile
{
public:
struct stPrimaryHeader m_PrimaryHeader;
struct stImageStruct m_ImageStruct;
struct stImageNavigation m_ImageNavigation;
struct stImageDataFunction m_ImageDataFunction;
struct stAnnotation m_Annotation;
struct stTimeStamp m_TimeStamp;
struct stAncillaryText m_AncillaryText;
struct stKeyHeader m_KeyHeader;
struct stImageSegmentID m_ImageSegmentID;
struct stEncryptionKeyMsgHeader m_EncryptionKeyMsgHeader;
struct stImageCompensationInfo m_ImageCompensationInfo;
struct stImageObserveTime m_ImageObserveTime;
struct stImageQualityInfo m_ImageQualityInfo;
public:
unsigned char szFileName[256];
unsigned char *data;
unsigned long dwBufSize;
public:
THritFile();
THritFile(char *fs);
~THritFile();
void SetFileName(unsigned char *fs);
void GetHeaderInfo(unsigned char *ptr, int len);
void GetHeaderInfo();
void SaveHeadStructToFile(char *fs);
void SaveData(char *fs);
unsigned char *ReadDataField(unsigned long& nReadBytes);
}; /*数据类型 字节 数取值范围char 1 -128到126
unsigned char 1 0到255
short 2 -32,768到32,767
unsigned short 2 0到65,535
long 4 -2,147,483,648到2,147,483,648
unsigned long 4 0到4,294,967,295
int 4 同long
unsigned int 4 同unsigned long
float 4 1.2E-38到3.4E381
double 8 2.2E-308到1.8E3082
bool 1 true或false
*/#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -