119 lines
6.1 KiB
C++
119 lines
6.1 KiB
C++
#ifndef DATAFILEQUIX_H
|
||
#define DATAFILEQUIX_H
|
||
|
||
#include <QFileInfo>
|
||
#include <QFile>
|
||
#include <QString>
|
||
#include <QByteArray>
|
||
#include <QImage>
|
||
#include <QDebug>
|
||
#include <QPainter>
|
||
#include <QRgb>
|
||
#include "math.h"
|
||
#include <QBrush>
|
||
#include "stdint.h"
|
||
|
||
//#include "vectorsqrt.h"
|
||
#include "machine/comm/datadef.h"
|
||
#include "machine/comm/crc16.h"
|
||
#include "datafile/dataoperat.h"
|
||
|
||
#define QUIX_DATADIRX (1) // X向数据坐标与下位机坐标系统的差异
|
||
#define QUIX_DATADIRY (-1) // Y向数据坐标与下位机坐标系统的差异
|
||
#define QUIX_DATADIRR (-1) // R向数据坐标与下位机坐标系统的差异
|
||
|
||
#define QUIX_SHOWDIRX (1) // X向显示坐标和数据坐标的差异
|
||
#define QUIX_SHOWDIRY (-1) // Y向显示坐标和数据坐标的差异
|
||
|
||
#define QUIX_PREVIEW_SIDE (15) // 留边大小
|
||
#define QUIX_PREVIEW_WIDTH (156) // 默认预览图区域宽度
|
||
#define QUIX_PREVIEW_HEIGHT (164) // 默认预览图区域高度
|
||
|
||
typedef struct tagQuixFileHead
|
||
{
|
||
char id[7]; // 0x0000~0x0006; 标志:=="RICH"
|
||
char name[1]; // 0x0007; 文件名
|
||
unsigned char reserve1[6]; // 0x0008~0x000D; 保留
|
||
unsigned char rotateStyle; // 0x000E; 旋转式样
|
||
unsigned char rotateAngle; // 0x000F; 旋转角度
|
||
unsigned int left; // 0x0010~0x0013; 左边 (中间数据后,可以修改,改变起始点,单针机)
|
||
unsigned int front; // 0x0014~0x0017; 前边 (中间数据后,可以修改,改变起始点,单针机)
|
||
unsigned int scanX; // 0x0018~0x001B; 缩放X (中间数据前,可以修改,单针机和多针机)
|
||
unsigned int scanY; // 0x001C~0x001F; 缩放Y (中间数据前,可以修改,单针机和多针机)
|
||
unsigned int normalStep; // 0x0020~0x0023; 针步大小(中间数据前,可以修改,单针机和多针机)
|
||
unsigned int reinMode; // 0x0024~0x0027; 加固模式(中间数据后,可以修改,终点有跨步的才加,单针机和多针机)
|
||
unsigned int reinNeedles; // 0x0028~0x002B; 加固针数(中间数据后,可以修改,终点有跨步的才加,单针机和多针机)
|
||
unsigned int reinNum; // 0x002C~0x002F; 加固次数(中间数据后,可以修改,终点有跨步的才加,单针机和多针机)
|
||
unsigned int angleCorrPosX; // 0x0030~0x0033; 角度修正x正(中间数据后,可以修改,拐角补偿,单针机和多针机)
|
||
unsigned int angleCorrPosY; // 0x0034~0x0037; 角度修正y正(中间数据后,可以修改,拐角补偿,单针机和多针机)
|
||
unsigned int angleCorrNegX; // 0x0038~0x003B; 角度修正x负(中间数据后,可以修改,拐角补偿,单针机和多针机)
|
||
unsigned int angleCorrNegY; // 0x003C~0x003F; 角度修正y负(中间数据后,可以修改,拐角补偿,单针机和多针机)
|
||
unsigned int stepQuiCorrection; // 0x0040~0x0043; 跨步绗缝修正(中间数据后,可以修改,拐角补偿,单针机和多针机)
|
||
unsigned int rollaComp; // 0x0044~0x0047; 罗拉补偿(中间数据后,让图形闭合,可以修改,多针机)
|
||
unsigned short angleCorrOffset; // 0x0048~0x0049; 角度修正量 (中间数据后,可以修改,拐角补偿,单针机和多针机,新加-hhy)
|
||
unsigned char reserve2[6]; // 0x004A~0x004F; 保留
|
||
unsigned int HStep; // 0x0050~0x0053; 水平方向针距 单位:0.1mm(绘制用,多针机)
|
||
unsigned int leftRightLen; // 0x0054~0x0057; 左针右针距离 单位:0.1mm(绘制用,多针机)
|
||
unsigned int VStep12; // 0x0058~0x005B; 第1 2排针距 单位:0.1mm(绘制用,多针机)
|
||
unsigned int VStep23; // 0x005C~0x005F; 第2 3排针距 单位:0.1mm(绘制用,多针机)
|
||
// 排针每个字节:XXXX XXXX
|
||
// 针位n (0x00:无针,0x01:右针, 0x10:左针,0x11:左右针)
|
||
unsigned char arrayNeedle1[48]; // 0x0060~0x008F; 第1排排针(绘制用,多针机)
|
||
unsigned char arrayNeedle2[48]; // 0x0090~0x00BF; 第2排排针(绘制用,多针机)
|
||
unsigned char arrayNeedle3[48]; // 0x00C0~0x00EF; 第3排排针(绘制用,多针机)
|
||
unsigned int firstPullLen; // 0x00F0~0x00F3; 一次拉料长度
|
||
unsigned int secondPullLen; // 0x00F4~0x00F7; 二次拉料长度
|
||
unsigned int triplePullLen; // 0x00F8~0x00FB; 三次拉料长度
|
||
unsigned char reserve3[4]; // 0x00FC~0x00FF; 保留
|
||
unsigned char reserve4[768]; // 0x0100~0x0400; 保留
|
||
unsigned char reserve5[3072]; // 0x0401~0x1000; 保留
|
||
|
||
} __attribute__ ((packed)) QuixFileHead;
|
||
|
||
class DataFileQuix
|
||
{
|
||
public:
|
||
DataFileQuix();
|
||
|
||
protected:
|
||
QString m_fileFullPathName; // 文件路径
|
||
QByteArray m_absData; // 转换后的绝对坐标数据
|
||
QByteArray m_fileData;// 文件数据内容(原始数据)
|
||
|
||
private:
|
||
double m_minX;
|
||
double m_maxX;
|
||
double m_minY;
|
||
double m_maxY;
|
||
QuiPoint m_firstPoint;
|
||
|
||
private:
|
||
void creatAbsHeadAndAr();//生成绝对坐标数据文件头及ar
|
||
void getQuixMinMax();
|
||
int checkFileHead();
|
||
double getMutiUnit(int unit);
|
||
|
||
public:
|
||
void initFile(const QString & fullPathName);
|
||
void clear();
|
||
void loadFile();
|
||
void convertDataToEmbAbs(s16 falg = 1);
|
||
int createPreviewImage(QImage * pImg = NULL, int saveflag = 0, int penwidth = 1, int reDraw = 0); // 生成预览文件
|
||
inline const QString & getFileFullPathName() const {return m_fileFullPathName;} // 文件路径名称
|
||
inline QByteArray & getEmbAbsData() {return m_absData;} // 得到转换后的数据
|
||
QuixFileHead *getQuixHead();
|
||
void writePatternParaToFile(QuixFileHead *head);//将花样参数配置写到文件中
|
||
void moveDataBeginPonit(s32 left, s32 front);//移动数据起始点
|
||
|
||
public:
|
||
int getStitchNums();//得到数据的针数
|
||
int getDatWidth();//得到数据的图形宽度
|
||
int getDatHeight();//得到数据的图形高度
|
||
int getMaxX();//得到数据最大X+
|
||
int getMinX();//得到数据最小X-
|
||
int getMaxY();//得到数据最大Y+
|
||
int getMinY();//得到数据最小Y-
|
||
};
|
||
|
||
#endif // DATAFILEQUI_H
|