mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Add MovablePoints on Label
This commit is contained in:
@ -12,6 +12,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||||||
ui->lable_test->setStyleSheet("QLabel { background-color : white;}");
|
ui->lable_test->setStyleSheet("QLabel { background-color : white;}");
|
||||||
on_actionLinear_Gradient_triggered();
|
on_actionLinear_Gradient_triggered();
|
||||||
ui->Rainbow_Colorspace_Radio_Button->setChecked(true);
|
ui->Rainbow_Colorspace_Radio_Button->setChecked(true);
|
||||||
|
connect(ui->lable_test, SIGNAL(mousePressed()), this, SLOT(on_label_test_clicked()));
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
@ -223,6 +224,306 @@ std::vector<std::vector<agg::rgba8>> MainWindow::QColor2rgbaMatrix()
|
|||||||
return colors;
|
return colors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void setPoint(QImage *image, int x, int y, QRgb color)
|
||||||
|
{
|
||||||
|
image->setPixel(x, y, color);
|
||||||
|
image->setPixel(x - 1, y, color);
|
||||||
|
image->setPixel(x, y - 1, color);
|
||||||
|
image->setPixel(x + 1, y, color);
|
||||||
|
image->setPixel(x, y + 1, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setPoints(QImage *image)
|
||||||
|
{
|
||||||
|
std::vector<QPoint> points;
|
||||||
|
if (info.gradient == Linear)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
info.p0.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
info.p0.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0, 0, 0));
|
||||||
|
setPoint(image,
|
||||||
|
info.p1.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
info.p1.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0, 0, 0));
|
||||||
|
points.push_back(QPoint(info.p0.x * MM_TO_COORD(ui->lable_test->width()), info.p0.y * MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
points.push_back(QPoint(info.p1.x * MM_TO_COORD(ui->lable_test->width()), info.p1.y * MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
}
|
||||||
|
else if (info.gradient == Radial)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
info.c0.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
info.c0.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0, 0, 0));
|
||||||
|
setPoint(image,
|
||||||
|
info.c1.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
info.c1.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0, 0, 0));
|
||||||
|
points.push_back(QPoint(info.c0.x * MM_TO_COORD(ui->lable_test->width()), info.c0.y * MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
points.push_back(QPoint(info.c1.x * MM_TO_COORD(ui->lable_test->width()), info.c1.y * MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
}
|
||||||
|
else if (info.gradient == Triangle || info.gradient == TriangleParametric)
|
||||||
|
{
|
||||||
|
for (NSStructures::Point p : info.triangle)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
p.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
p.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0,0,0));
|
||||||
|
points.push_back(QPoint(p.x * MM_TO_COORD(ui->lable_test->width()), p.y * MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == CoonsPatch)
|
||||||
|
{
|
||||||
|
for (NSStructures::Point p : info.curve)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
p.x,
|
||||||
|
p.y,
|
||||||
|
qRgb(0,0,0));
|
||||||
|
points.push_back(QPoint(p.x, p.y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == CoonsPatchParametric)
|
||||||
|
{
|
||||||
|
for (NSStructures::Point p : info.curve)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
p.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
p.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0,0,0));
|
||||||
|
points.push_back(QPoint(p.x * MM_TO_COORD(ui->lable_test->width()), p.y * MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == TensorCoonsPatch)
|
||||||
|
{
|
||||||
|
for (std::vector<NSStructures::Point> v : info.tensorcurve)
|
||||||
|
{
|
||||||
|
for (NSStructures::Point p : v)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
p.x,
|
||||||
|
p.y,
|
||||||
|
qRgb(0,0,0));
|
||||||
|
points.push_back(QPoint(p.x, p.y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == TensorCoonsPatchParametric)
|
||||||
|
{
|
||||||
|
for (std::vector<NSStructures::Point> v : info.tensorcurve)
|
||||||
|
{
|
||||||
|
for (NSStructures::Point p : v)
|
||||||
|
{
|
||||||
|
setPoint(image,
|
||||||
|
p.x * MM_TO_COORD(ui->lable_test->width()),
|
||||||
|
p.y * MM_TO_COORD(ui->lable_test->height()),
|
||||||
|
qRgb(0,0,0));
|
||||||
|
points.push_back(QPoint(p.x * MM_TO_COORD(ui->lable_test->width()), p.y * MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui->lable_test->SetPoints(points);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_label_test_clicked()
|
||||||
|
{
|
||||||
|
if (ui->lable_test->Movable())
|
||||||
|
{
|
||||||
|
ui->lable_test->ResetMovable();
|
||||||
|
disconnect(ui->lable_test, SIGNAL(mouseMoved()), this, SLOT(on_label_test_mouse_move()));
|
||||||
|
}
|
||||||
|
else if (ui->lable_test->CheckPointArea())
|
||||||
|
{
|
||||||
|
ui->lable_test->ResetMovable();
|
||||||
|
connect(ui->lable_test, SIGNAL(mouseMoved()), this, SLOT(on_label_test_mouse_move()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_label_test_mouse_move()
|
||||||
|
{
|
||||||
|
if (info.gradient == Linear)
|
||||||
|
{
|
||||||
|
switch (ui->lable_test->GetIndex())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ui->First_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ui->Second_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == Radial)
|
||||||
|
{
|
||||||
|
switch (ui->lable_test->GetIndex())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ui->First_Center_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Center_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ui->Second_Center_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Center_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == Triangle || info.gradient == TriangleParametric)
|
||||||
|
{
|
||||||
|
switch (ui->lable_test->GetIndex())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ui->First_Vertex_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Vertex_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ui->Second_Vertex_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Vertex_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ui->Third_Vertex_X_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Vertex_Y_Coordinate_Input->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == CoonsPatch || info.gradient == CoonsPatchParametric)
|
||||||
|
{
|
||||||
|
switch (ui->lable_test->GetIndex())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ui->First_Vertex_X_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Vertex_Y_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ui->First_X_Coordinate_First_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_First_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ui->Second_X_Coordinate_First_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_First_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ui->Second_Vertex_X_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Vertex_Y_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
ui->First_X_Coordinate_Second_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Second_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
ui->Second_X_Coordinate_Second_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Second_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
ui->Third_Vertex_X_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Vertex_Y_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
ui->First_X_Coordinate_Third_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Third_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
ui->Second_X_Coordinate_Third_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Third_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
ui->Fourth_Vertex_X_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Fourth_Vertex_Y_Coordinate_Input_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
ui->First_X_Coordinate_Fourth_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Fourth_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
ui->Second_X_Coordinate_Fourth_Edge->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Fourth_Edge->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (info.gradient == TensorCoonsPatch || info.gradient == TensorCoonsPatchParametric)
|
||||||
|
{
|
||||||
|
switch (ui->lable_test->GetIndex())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ui->First_X_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ui->Second_X_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ui->Third_X_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Y_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ui->Fourth_X_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Fourth_Y_Coordinate_First_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
ui->First_X_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
ui->Second_X_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
ui->Third_X_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Y_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
ui->Fourth_X_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Fourth_Y_Coordinate_Second_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
ui->First_X_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
ui->Second_X_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
ui->Third_X_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Y_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
ui->Fourth_X_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Fourth_Y_Coordinate_Third_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
ui->First_X_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->First_Y_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
ui->Second_X_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x() / MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Second_Y_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().y() / MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
ui->Third_X_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Third_Y_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
case 15:
|
||||||
|
ui->Fourth_X_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->width())));
|
||||||
|
ui->Fourth_Y_Coordinate_Fourth_Edge_3->setText(QString::number(ui->lable_test->GetMovePoint().x()/ MM_TO_COORD(ui->lable_test->height())));
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
on_pushButton_clicked();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_pushButton_clicked()
|
void MainWindow::on_pushButton_clicked()
|
||||||
{
|
{
|
||||||
points = {{0, 0},
|
points = {{0, 0},
|
||||||
@ -420,101 +721,7 @@ void MainWindow::on_pushButton_clicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QImage pm = GenerateImg(points, info, ui->lable_test->width(), ui->lable_test->height());
|
QImage pm = GenerateImg(points, info, ui->lable_test->width(), ui->lable_test->height());
|
||||||
|
setPoints(&pm);
|
||||||
ui->lable_test->setPixmap(QPixmap::fromImage(pm));
|
ui->lable_test->setPixmap(QPixmap::fromImage(pm));
|
||||||
ui->lable_test->setScaledContents(true);
|
ui->lable_test->setScaledContents(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_pushButton_2_clicked()
|
|
||||||
{
|
|
||||||
std::vector<QPoint> p = ui->lable_test->GetPoints();
|
|
||||||
if (info.gradient == Linear)
|
|
||||||
{
|
|
||||||
ui->First_X_Coordinate_Input->setText(QString::number(p[0].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Input->setText(QString::number(p[0].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Input->setText(QString::number(p[1].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Input->setText(QString::number(p[1].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->lable_test->Clear();
|
|
||||||
}
|
|
||||||
else if (info.gradient == Radial)
|
|
||||||
{
|
|
||||||
ui->First_Center_X_Coordinate_Input->setText(QString::number(p[0].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Center_Y_Coordinate_Input->setText(QString::number(p[0].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_Center_X_Coordinate_Input->setText(QString::number(p[1].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Center_Y_Coordinate_Input->setText(QString::number(p[1].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->lable_test->Clear();
|
|
||||||
}
|
|
||||||
else if (info.gradient == Triangle || info.gradient == TriangleParametric)
|
|
||||||
{
|
|
||||||
ui->First_Vertex_X_Coordinate_Input->setText(QString::number(p[0].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Vertex_Y_Coordinate_Input->setText(QString::number(p[0].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_Vertex_X_Coordinate_Input->setText(QString::number(p[1].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Vertex_Y_Coordinate_Input->setText(QString::number(p[1].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_Vertex_X_Coordinate_Input->setText(QString::number(p[2].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Vertex_Y_Coordinate_Input->setText(QString::number(p[2].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->lable_test->Clear();
|
|
||||||
}
|
|
||||||
else if (info.gradient == CoonsPatch || info.gradient == CoonsPatchParametric)
|
|
||||||
{
|
|
||||||
ui->First_Vertex_X_Coordinate_Input_3->setText(QString::number(p[0].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Vertex_Y_Coordinate_Input_3->setText(QString::number(p[0].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_First_Edge->setText(QString::number(p[1].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_First_Edge->setText(QString::number(p[1].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_First_Edge->setText(QString::number(p[2].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_First_Edge->setText(QString::number(p[2].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_Vertex_X_Coordinate_Input_3->setText(QString::number(p[3].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Vertex_Y_Coordinate_Input_3->setText(QString::number(p[3].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Second_Edge->setText(QString::number(p[4].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Second_Edge->setText(QString::number(p[4].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Second_Edge->setText(QString::number(p[5].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Second_Edge->setText(QString::number(p[5].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_Vertex_X_Coordinate_Input_3->setText(QString::number(p[6].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Vertex_Y_Coordinate_Input_3->setText(QString::number(p[6].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Third_Edge->setText(QString::number(p[7].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Third_Edge->setText(QString::number(p[7].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Third_Edge->setText(QString::number(p[8].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Third_Edge->setText(QString::number(p[8].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Fourth_Vertex_X_Coordinate_Input_3->setText(QString::number(p[9].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Fourth_Vertex_Y_Coordinate_Input_3->setText(QString::number(p[9].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Fourth_Edge->setText(QString::number(p[10].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Fourth_Edge->setText(QString::number(p[10].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Fourth_Edge->setText(QString::number(p[11].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Fourth_Edge->setText(QString::number(p[11].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->lable_test->Clear();
|
|
||||||
}
|
|
||||||
else if (info.gradient == TensorCoonsPatch || info.gradient == TensorCoonsPatchParametric)
|
|
||||||
{
|
|
||||||
ui->First_X_Coordinate_First_Edge_3->setText(QString::number(p[0].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_First_Edge_3->setText(QString::number(p[0].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_First_Edge_3->setText(QString::number(p[1].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_First_Edge_3->setText(QString::number(p[1].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_X_Coordinate_First_Edge_3->setText(QString::number(p[2].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Y_Coordinate_First_Edge_3->setText(QString::number(p[2].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Fourth_X_Coordinate_First_Edge_3->setText(QString::number(p[3].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Fourth_Y_Coordinate_First_Edge_3->setText(QString::number(p[3].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Second_Edge_3->setText(QString::number(p[4].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Second_Edge_3->setText(QString::number(p[4].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Second_Edge_3->setText(QString::number(p[5].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Second_Edge_3->setText(QString::number(p[5].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_X_Coordinate_Second_Edge_3->setText(QString::number(p[6].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Y_Coordinate_Second_Edge_3->setText(QString::number(p[6].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Fourth_X_Coordinate_Second_Edge_3->setText(QString::number(p[7].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Fourth_Y_Coordinate_Second_Edge_3->setText(QString::number(p[7].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Third_Edge_3->setText(QString::number(p[8].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Third_Edge_3->setText(QString::number(p[8].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Third_Edge_3->setText(QString::number(p[9].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Third_Edge_3->setText(QString::number(p[9].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_X_Coordinate_Third_Edge_3->setText(QString::number(p[10].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Y_Coordinate_Third_Edge_3->setText(QString::number(p[10].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Fourth_X_Coordinate_Third_Edge_3->setText(QString::number(p[11].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Fourth_Y_Coordinate_Third_Edge_3->setText(QString::number(p[11].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->First_X_Coordinate_Fourth_Edge_3->setText(QString::number(p[12].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->First_Y_Coordinate_Fourth_Edge_3->setText(QString::number(p[12].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Second_X_Coordinate_Fourth_Edge_3->setText(QString::number(p[13].x() / MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Second_Y_Coordinate_Fourth_Edge_3->setText(QString::number(p[13].y() / MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Third_X_Coordinate_Fourth_Edge_3->setText(QString::number(p[14].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Third_Y_Coordinate_Fourth_Edge_3->setText(QString::number(p[14].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->Fourth_X_Coordinate_Fourth_Edge_3->setText(QString::number(p[15].x()/ MM_TO_COORD(ui->lable_test->width())));
|
|
||||||
ui->Fourth_Y_Coordinate_Fourth_Edge_3->setText(QString::number(p[15].x()/ MM_TO_COORD(ui->lable_test->height())));
|
|
||||||
ui->lable_test->Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -69,34 +69,95 @@ class CustomLabel : public QLabel
|
|||||||
public:
|
public:
|
||||||
CustomLabel(QWidget *parent = nullptr) : QLabel(parent)
|
CustomLabel(QWidget *parent = nullptr) : QLabel(parent)
|
||||||
{
|
{
|
||||||
connect(this, &CustomLabel::mousePressed, this, &CustomLabel::onCheckPosition);
|
movable = false;
|
||||||
|
setMouseTracking(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
~CustomLabel() {}
|
~CustomLabel() {}
|
||||||
|
|
||||||
std::vector<QPoint> GetPoints() const
|
void SetPoints(const std::vector<QPoint>& points)
|
||||||
{
|
{
|
||||||
return m_points;
|
m_points = points;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPoint GetCheckPoint() const
|
||||||
|
{
|
||||||
|
return checkPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPoint GetMovePoint() const
|
||||||
|
{
|
||||||
|
return movePoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t GetIndex() const
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Movable() const
|
||||||
|
{
|
||||||
|
return movable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetMovable()
|
||||||
|
{
|
||||||
|
if (movable)
|
||||||
|
{
|
||||||
|
movable = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
movable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setIndex(size_t _index)
|
||||||
|
{
|
||||||
|
index = _index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clear()
|
void Clear()
|
||||||
{
|
{
|
||||||
m_points.clear();
|
m_points.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CheckPointArea()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < m_points.size(); i++)
|
||||||
|
{
|
||||||
|
QRect rect(m_points[i].x() - 5, m_points[i].y() - 5, m_points[i].x() + 5, m_points[i].y() + 5);
|
||||||
|
if (rect.contains(checkPoint))
|
||||||
|
{
|
||||||
|
index = i;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void mousePressed(QPoint point);
|
void mousePressed();
|
||||||
|
void mouseMoved();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *event) override
|
void mousePressEvent(QMouseEvent *event) override
|
||||||
{
|
{
|
||||||
QPoint point = event->pos();
|
checkPoint = event->pos();
|
||||||
emit mousePressed(point);
|
emit mousePressed();
|
||||||
}
|
}
|
||||||
public slots:
|
|
||||||
void onCheckPosition(QPoint point)
|
void mouseMoveEvent(QMouseEvent *event) override
|
||||||
{
|
{
|
||||||
m_points.push_back(point);
|
movePoint = event->pos();
|
||||||
|
emit mouseMoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool movable;
|
||||||
|
size_t index;
|
||||||
|
QPoint movePoint;
|
||||||
|
QPoint checkPoint;
|
||||||
std::vector<QPoint> m_points;
|
std::vector<QPoint> m_points;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -238,6 +299,7 @@ public:
|
|||||||
void InitializeColors(bool triangle);
|
void InitializeColors(bool triangle);
|
||||||
std::vector<agg::rgba8> QColor2rgba(bool triangle);
|
std::vector<agg::rgba8> QColor2rgba(bool triangle);
|
||||||
std::vector<std::vector<agg::rgba8>> QColor2rgbaMatrix();
|
std::vector<std::vector<agg::rgba8>> QColor2rgbaMatrix();
|
||||||
|
void setPoints(QImage *image);
|
||||||
QImage img;
|
QImage img;
|
||||||
QLabel *lable;
|
QLabel *lable;
|
||||||
std::vector<Point> points;
|
std::vector<Point> points;
|
||||||
@ -245,6 +307,10 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
|
void on_label_test_clicked();
|
||||||
|
|
||||||
|
void on_label_test_mouse_move();
|
||||||
|
|
||||||
void on_actionLinear_Gradient_triggered();
|
void on_actionLinear_Gradient_triggered();
|
||||||
|
|
||||||
void on_actionRadial_Gradient_triggered();
|
void on_actionRadial_Gradient_triggered();
|
||||||
@ -263,8 +329,6 @@ private slots:
|
|||||||
|
|
||||||
void on_actionTensor_Coons_Patch_Parametric_triggered();
|
void on_actionTensor_Coons_Patch_Parametric_triggered();
|
||||||
|
|
||||||
void on_pushButton_2_clicked();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -52,7 +52,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>3</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="Linear_Page">
|
<widget class="QWidget" name="Linear_Page">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@ -2426,32 +2426,6 @@
|
|||||||
<string>Render Gradient</string>
|
<string>Render Gradient</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QPushButton" name="pushButton_2">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>390</x>
|
|
||||||
<y>100</y>
|
|
||||||
<width>80</width>
|
|
||||||
<height>29</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>set from</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="label_42">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>300</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>288</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Set the coordinates from the label and click</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QStackedWidget" name="stackedWidget_3">
|
<widget class="QStackedWidget" name="stackedWidget_3">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
|
|||||||
Reference in New Issue
Block a user