You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.2 KiB
C

#pragma once
#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>
#include <memory>
#include <vector>
#include <cmath>
#include <QDebug>
#include <QWheelEvent>
#include <QTransform>
#include "ui_MappingUI.h"
#include "mappingchart_global.h"
#include "MyQGraphicsRectItem.h"
#include <QGraphicsLineItem>
#include "global.h"
class MAPPINGCHART_EXPORT MappingUI : public QWidget
{
Q_OBJECT
enum Direct {
LEFT,
RIGHT,
UP,
DOWN
};
public:
MappingUI(QWidget *parent = Q_NULLPTR);
~MappingUI();
public:
void SetRecipe(double waferDia,
double dieWidth,
double dieHeight,
double baseDiePosX,
double baseDiePosY,
double markPoint1X,
double markPoint1Y,
double markPoint2X,
double markPoint2Y,
int areaXDirectionNum,
int areaYDirectionNum);
void DrawMapping();
void SetWaferRecipe(MaferRecipe& maferRecipe);
private:
//<2F><>׼die<69><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void LeftExtend(double firstX, double firstY);
//<2F><>׼die<69><65><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>
void RightExtend(double firstX, double firstY, bool isIncludeCur);
//<2F><><EFBFBD><EFBFBD>die<69><65><EFBFBD><EFBFBD>
void AddDieRect(double xCoord, double yCoord);
void SetDieAttr(std::shared_ptr<MyQGraphicsRectItem>& dieObj, bool isBase, bool isMark, double xCoord, double yCoord);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񳬹<C7B7><F1B3ACB9><EFBFBD><EFBFBD><EFBFBD>
bool JudgeIsInWafer(double xCoord, double yCoord);
//<2F>ж<EFBFBD><D0B6>Dz<EFBFBD><C7B2><EFBFBD>mark<72><6B>
bool JudgeIsMark(double xCoord, double yCoord);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>die<69>ĸ<EFBFBD><C4B8><EFBFBD>
void CountDieNumInArea();
protected:
virtual void wheelEvent(QWheelEvent *event) override;
virtual void mousePressEvent(QMouseEvent *event) override;
private:
Ui::MappingUI ui;
public slots:
void slot_UpdateAllDieStatus(double xCoord, double yCoord);
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QGraphicsScene m_scene;
double m_scaleFactor = 3;
std::vector<std::shared_ptr<MyQGraphicsRectItem>> m_allDieItem;
std::vector<std::shared_ptr<QGraphicsEllipseItem>> m_ellipseItem;
//<2F><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
std::vector<std::shared_ptr<QGraphicsLineItem>> m_allLineItem;
int m_realAreaXNum = 0; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
int m_readAreaYNum = 0; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
double m_areaStartX = 0.0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻǿ<CFBD>ʼ<EFBFBD>ĵ<EFBFBD>
double m_areaStartY = 0.0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻǿ<CFBD>ʼ<EFBFBD>ĵ<EFBFBD>
private:
MaferRecipe m_maferRecipe;
int ZERO = 0.00001;
};