|
|
|
|
|
#ifndef MAINWINDOW_H
|
|
|
|
|
|
#define MAINWINDOW_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
|
namespace Ui { class MainWindow; }
|
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
|
|
|
|
|
|
struct TabletContext
|
|
|
|
|
|
{
|
|
|
|
|
|
int max_x;
|
|
|
|
|
|
int max_y;
|
|
|
|
|
|
int max_p;
|
|
|
|
|
|
|
|
|
|
|
|
int sys_x;
|
|
|
|
|
|
int sys_y;
|
|
|
|
|
|
int sys_w;
|
|
|
|
|
|
int sys_h;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct TabletDataPacket
|
|
|
|
|
|
{
|
|
|
|
|
|
unsigned int x; //Wintab X
|
|
|
|
|
|
unsigned int y; //Wintab Y
|
|
|
|
|
|
unsigned int p; //压力
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class QImage;
|
|
|
|
|
|
class SignPenPainter;
|
|
|
|
|
|
class MainWindow : public QMainWindow
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
MainWindow(QWidget *parent = nullptr);
|
|
|
|
|
|
~MainWindow();
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
void on_pushButton_clicked();
|
|
|
|
|
|
void NeedToUpdate(QRect rect);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
|
|
|
|
|
|
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
|
|
|
|
|
|
#else
|
|
|
|
|
|
virtual bool winEvent(MSG *message, long *result);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent *event) override;
|
|
|
|
|
|
virtual void resizeEvent(QResizeEvent *event) override;
|
|
|
|
|
|
|
|
|
|
|
|
virtual void mousePressEvent(QMouseEvent *event) override;
|
|
|
|
|
|
|
|
|
|
|
|
virtual void mouseMoveEvent(QMouseEvent *event) override;
|
|
|
|
|
|
|
|
|
|
|
|
virtual void mouseReleaseEvent(QMouseEvent *event) override;
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
void on_checkBox_stateChanged(int arg1);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
//初始化后台缓冲区
|
|
|
|
|
|
void ResetBufferImage();
|
|
|
|
|
|
|
|
|
|
|
|
//绘制笔迹
|
|
|
|
|
|
void DrawSign_Base(int x,int y,int p,bool is_ink=false);
|
|
|
|
|
|
void DrawSign_Wintab(const TabletDataPacket &pkt);
|
|
|
|
|
|
void DrawSign_Ink(int ink_x,int ink_y,int ink_p);
|
|
|
|
|
|
|
|
|
|
|
|
void MousePressed(QPointF currentPoint,double force,double maxForce,bool isStressSwitch);//force 压感力度
|
|
|
|
|
|
void MouseMoved(QPointF currentPoint,double force,double maxForce,bool isStressSwitch);
|
|
|
|
|
|
void MouseReleased(QPointF currentPoint);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
Ui::MainWindow *ui;
|
|
|
|
|
|
|
|
|
|
|
|
// QImage *m_pImage{nullptr};
|
|
|
|
|
|
// QPainter *m_pPainter{nullptr};//后台绘图器
|
|
|
|
|
|
// TabletContext m_tablet_ctx{0};
|
|
|
|
|
|
// unsigned int m_wintab_handle{0};
|
|
|
|
|
|
// bool m_mouse_pressed{false};
|
|
|
|
|
|
QImage *m_pImage;
|
|
|
|
|
|
QPainter *m_pPainter;//后台绘图器
|
|
|
|
|
|
TabletContext m_tablet_ctx;
|
|
|
|
|
|
unsigned int m_wintab_handle;
|
|
|
|
|
|
bool m_mouse_pressed;
|
|
|
|
|
|
// QList<TabletDataPacket> m_list_buffer;
|
|
|
|
|
|
|
|
|
|
|
|
SignPenPainter* m_SignPenpainter;
|
|
|
|
|
|
|
|
|
|
|
|
float penRadius;
|
|
|
|
|
|
|
|
|
|
|
|
bool isUsedMouse;
|
|
|
|
|
|
bool isUsedInk;
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif // MAINWINDOW_H
|