qt/Compass/layer.h

69 lines
2.3 KiB
C
Raw Normal View History

2025-03-14 15:23:08 +08:00
#ifndef LAYER_H
#define LAYER_H
#include "main.h"
#define HandleSize 10
2025-05-06 18:28:05 +08:00
class OutputView;
2025-03-14 15:23:08 +08:00
class Layer : public QWidget {
Q_OBJECT
public:
2025-05-06 18:28:05 +08:00
explicit Layer(int idx, const QString &name, QWidget *parent = 0) : QWidget(parent), idx(idx), name(name) {}
inline void updateGeo() {
2025-03-14 15:23:08 +08:00
setGeometry(QRect(sPos*gScale+gOrigin, sSize*gScale));
}
2025-05-06 18:28:05 +08:00
void select();
2025-03-14 15:23:08 +08:00
QPoint sPos;
QSize sSize{1920, 1080};
int idx = 1, rowIdx = 0;
QString name;
2025-05-06 18:28:05 +08:00
TreeWidgetItem *item = 0;
OutputView *view = 0;
2025-03-14 15:23:08 +08:00
protected:
void paintEvent(QPaintEvent *) override;
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void leaveEvent(QEvent *) override;
2025-05-06 18:28:05 +08:00
void resizeEvent(QResizeEvent *event) override {
hdlT = QRectF(width()/2 - HandleSize/2, -HandleSize/2, HandleSize, HandleSize);
hdlRT = QRectF(width() - HandleSize/2, - HandleSize/2, HandleSize, HandleSize);
hdlL = QRectF(-HandleSize/2, height()/2 - HandleSize/2, HandleSize, HandleSize);
hdlR = QRectF(width() - HandleSize/2, height()/2 - HandleSize/2, HandleSize, HandleSize);
hdlLB = QRectF(-HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
hdlB = QRectF(width()/2 - HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
hdlRB = QRectF(width() - HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
}
2025-03-14 15:23:08 +08:00
void setFrmSec(const QPointF &);
void setFrmSecIfNeed(Qt::WindowFrameSection frmSec, Qt::CursorShape cursor);
void clearSnap();
2025-05-06 18:28:05 +08:00
QRectF hdlLT = QRectF(-HandleSize/2, -HandleSize/2, HandleSize, HandleSize), hdlT, hdlRT, hdlL, hdlR, hdlLB, hdlB, hdlRB;
2025-03-14 15:23:08 +08:00
QPointF mPressRel{FLT_MAX, FLT_MAX};
Qt::WindowFrameSection mFrmSec = Qt::NoSection;
char snapLR = 0, snapTB = 0;
2025-05-06 18:28:05 +08:00
};
class OutputView : public QGraphicsView {
Q_OBJECT
public:
explicit OutputView(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void leaveEvent(QEvent *) override;
void clearSnap();
QPointF mPressRel{FLT_MAX, FLT_MAX};
char snapLR = 0, snapTB = 0;
2025-03-14 15:23:08 +08:00
};
#endif // LAYER_H