158 lines
4.6 KiB
C
158 lines
4.6 KiB
C
|
#ifndef DATAFILEDST_H
|
|||
|
#define DATAFILEDST_H
|
|||
|
|
|||
|
#include <QFileInfo>
|
|||
|
#include <QFile>
|
|||
|
#include <QString>
|
|||
|
#include <QByteArray>
|
|||
|
#include <QImage>
|
|||
|
#include <QDebug>
|
|||
|
#include <QPainter>
|
|||
|
#include <QRgb>
|
|||
|
#include "math.h"
|
|||
|
#include <QBrush>
|
|||
|
|
|||
|
#include "machine/comm/datadef.h"
|
|||
|
#include "machine/comm/crc16.h"
|
|||
|
#include "datafile/dataoperat.h"
|
|||
|
|
|||
|
#define DATAFACTOR 10 //dst绝对坐标数据转换为ds16前需要扩大10倍
|
|||
|
|
|||
|
#define DST_EMB_DATADIRX (-1) // X向数据坐标与下位机坐标系统的差异
|
|||
|
#define DST_EMB_DATADIRY (1) // Y向数据坐标与下位机坐标系统的差异
|
|||
|
|
|||
|
#define DST_SHOWDIRX (-1) // X向显示坐标和数据坐标的差异
|
|||
|
#define DST_SHOWDIRY (1) // Y向显示坐标和数据坐标的差异
|
|||
|
|
|||
|
#define DST_PREVIEW_SIDE (15) // 留边大小
|
|||
|
#define DST_PREVIEW_WIDTH (156) // 默认预览图区域宽度
|
|||
|
#define DST_PREVIEW_HEIGHT (164) // 默认预览图区域高度
|
|||
|
|
|||
|
// dst文件头
|
|||
|
#pragma pack(1)//设定为1字节对齐
|
|||
|
struct DstHead
|
|||
|
{
|
|||
|
// 0
|
|||
|
char la[20];
|
|||
|
char st[11];
|
|||
|
char co[7];
|
|||
|
char xp[9];
|
|||
|
char xn[9];
|
|||
|
char yp[9];
|
|||
|
char yn[9];
|
|||
|
char ax[10];
|
|||
|
char ay[10];
|
|||
|
char mx[10];
|
|||
|
char my[10];
|
|||
|
char pd[10];
|
|||
|
char sub;
|
|||
|
char reserved1[3];
|
|||
|
|
|||
|
// 128
|
|||
|
u8 rotateStyle; //旋转式样
|
|||
|
u8 horizontalStyle; //水平翻转式样
|
|||
|
u8 verticalStyle; //垂直翻转式样
|
|||
|
u8 rotateAngle; //旋转角度
|
|||
|
u8 reinMode; //加固方式
|
|||
|
u8 reinNeedles; //针数
|
|||
|
u8 reinNum; //次数
|
|||
|
s16 normalStep; //针步大小
|
|||
|
s16 angleCorrOffset; //角度修正量
|
|||
|
s16 angleCorrPosX; //角度修正量X正
|
|||
|
s16 angleCorrPosY; //角度修正量Y正
|
|||
|
s16 angleCorrNegX; //角度修正量X负
|
|||
|
s16 angleCorrNegY; //角度修正量Y负
|
|||
|
int scanX; //X向宽度
|
|||
|
int scanY; //Y向高度
|
|||
|
int left; //左边
|
|||
|
int front; //前边
|
|||
|
|
|||
|
// 163
|
|||
|
u8 reserved2[256-163]; //BYTE
|
|||
|
|
|||
|
// 256
|
|||
|
s16 reserved3;
|
|||
|
|
|||
|
// 258
|
|||
|
int anchorX; //定位点
|
|||
|
int anchorY;
|
|||
|
|
|||
|
// 266
|
|||
|
s32 startX; //起始点
|
|||
|
s32 startY;
|
|||
|
|
|||
|
// 274
|
|||
|
u8 reserved4[512-274]; //BYTE // 保留字节
|
|||
|
};
|
|||
|
#pragma pack(1)//恢复对齐状态
|
|||
|
|
|||
|
|
|||
|
// 针步数据
|
|||
|
typedef struct strDstStep
|
|||
|
{
|
|||
|
u8 c1; ////BYTE
|
|||
|
u8 c2; ////BYTE
|
|||
|
u8 c3; ////BYTE
|
|||
|
}__attribute__ ((packed)) DstStep;
|
|||
|
|
|||
|
|
|||
|
class DataFileDst
|
|||
|
{
|
|||
|
public:
|
|||
|
DataFileDst();
|
|||
|
~DataFileDst();
|
|||
|
|
|||
|
public:
|
|||
|
void initFile(const QString & fullPathName);
|
|||
|
int createPreviewImage(QImage * pImg = NULL, int saveflag = 0, int penwidth = 1, int reDraw = 0); // 生成预览文件
|
|||
|
void convertDataToAbs(); // 转换为绝对坐标数据
|
|||
|
void writePointToFile(int x, int y, int flag = 0);//写入起始点到文件中
|
|||
|
void writePatternParaToFile(DstHead *head);//将花样参数配置写到文件中
|
|||
|
void writeOffsetXYMoveToFile(s32 EnFlag,s32 offsetX,s32 offsetY);
|
|||
|
int checkDstFile();//检查dst文件是否正确
|
|||
|
DstHead * getDstHead();
|
|||
|
void moveDataBeginPonit(s32 left, s32 front);//移动数据起始点
|
|||
|
|
|||
|
public:
|
|||
|
void clear();
|
|||
|
void loadFile();
|
|||
|
void saveFile();
|
|||
|
inline const QString & getFileFullPathName() const {return m_fileFullPathName;} // 文件路径名称
|
|||
|
inline QByteArray & getFileData() {return m_fileData;} // 得到文件数据
|
|||
|
inline QByteArray & getEmbAbsData() {return m_embAbsData;} // 得到转换后的数据
|
|||
|
QString getFileFullPath(); // 文件所在目录
|
|||
|
QString getFileFullName(); // 文件名称(包括扩展名)
|
|||
|
QString getFileName(); // 文件名称(不包括扩展名)
|
|||
|
QString getFileSuffix(); // 文件扩展名
|
|||
|
|
|||
|
int getStitchNums();//得到数据的针数
|
|||
|
int getFileid();//得到fileid
|
|||
|
int getDatWidth();//得到数据的图形宽度
|
|||
|
int getDatHeight();//得到数据的图形高度
|
|||
|
int getMaxX();//得到数据最大X+
|
|||
|
int getMinX();//得到数据最小X-
|
|||
|
int getMaxY();//得到数据最大Y+
|
|||
|
int getMinY();//得到数据最小Y-
|
|||
|
int getBeginXYAndAnchorXY(int &beginX, int &beginY, int &anchorX, int &anchorY);
|
|||
|
|
|||
|
protected:
|
|||
|
QString m_fileFullPathName; // 文件路径
|
|||
|
QByteArray m_embAbsData; // 转换后的绝对坐标数据
|
|||
|
|
|||
|
private:
|
|||
|
QByteArray m_fileData;// 文件数据内容(原始数据)
|
|||
|
QString m_fileName; // 文件路径
|
|||
|
|
|||
|
private:
|
|||
|
double m_minX;
|
|||
|
double m_maxX;
|
|||
|
double m_minY;
|
|||
|
double m_maxY;
|
|||
|
|
|||
|
private:
|
|||
|
int changeDstStep(DstStep * pDststep, Ds4Item & ds4step);
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
#endif // DATAFILEDST_H
|