linuxOS_D21X/source/artinchip/qtlauncher/views/aicrtpview.cpp
2024-11-29 16:33:21 +08:00

85 lines
1.9 KiB
C++

/*
* Copyright (C) 2024 Artinchip Technology Co. Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
* Author: artinchip
*/
#include "aicrtpview.h"
#include <QPainter>
#include <QDebug>
AiCRtpView::AiCRtpView(QSize size, int margin, QWidget *parent) : QWidget(parent)
{
initView(size.width(),size.height(), margin);
}
void AiCRtpView::initView(int width, int height, int margin)
{
mWidth = width;
mHeight = height;
mMargin = margin;
mImage = QImage(QSize(width - mMargin * 2,height - mMargin * 2), QImage::Format_RGB32);
//mImage.fill(QColor(Qt::lightGray).rgb());
mImage.fill(QColor(Qt::white).rgb());
mPen = QPen(Qt::blue, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
mPen.setWidthF(2.0);
}
void AiCRtpView::cleanView()
{
mImage.fill(QColor(Qt::white).rgb());
update();
}
bool AiCRtpView::validPoint(QPoint point)
{
int x = point.x();
int y = point.y();
return (x >0 && x < mWidth) && (y > 0 && y < mHeight);
}
bool AiCRtpView::isFar(QPoint p1, QPoint p2){
QPoint distance = p2 - p1;
int caldis = distance.x() * distance.x() + distance.y() * distance.y();
if (caldis > 5)
return TRUE;
else
return FALSE;
}
void AiCRtpView::mousePressEvent(QMouseEvent *event)
{
if(validPoint(event->pos())){
mCurrentPoint = mLastPoint = event->pos();
}
}
void AiCRtpView::mouseMoveEvent(QMouseEvent *event)
{
if(validPoint(event->pos())){
if(isFar(event->pos(), mLastPoint)){
mLastPoint = mCurrentPoint;
mCurrentPoint = event->pos();
QPainter painter(&mImage);
painter.setPen(mPen);
painter.drawLine(mLastPoint, mCurrentPoint);
update();
}
}
}
void AiCRtpView::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawImage(QPoint(mMargin, mMargin), mImage);
}
AiCRtpView::~AiCRtpView()
{
}