Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "QDragEnterEvent"
- #include "QMimeData"
- #include "QTableWidget"
- #include "QTableWidgetItem"
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::dragEnterEvent(QDragEnterEvent *e)
- {
- if (e->mimeData()->hasUrls()) {
- e->acceptProposedAction();
- }
- }
- void MainWindow::dropEvent(QDropEvent *e)
- {
- foreach (const QUrl &url, e->mimeData()->urls()) {
- file_url = url.toLocalFile();
- this->file_img = QImage(file_url);
- ui->label->setGeometry(0, 0, this->file_img.width(), this->file_img.height());
- ui->label->setPixmap(QPixmap::fromImage(file_img/*.convertToFormat(QImage::Format_RGB32)*/));
- }
- }
- void MainWindow::write_to_map(int x, int y) {
- this->map.push_back(QPair<int, int>(x,y));
- }
- bool MainWindow::find_on_map(int x, int y) {
- for (QPair<int,int> i : this->map)
- if (i.first == x && i.second == y)
- return true;
- return false;
- }
- void MainWindow::mark(int x, int y, QImage &image)
- {
- if(image.pixelColor(x,y).blue() < grey_border && !find_on_map(x,y))
- {
- write_to_map(x,y);
- image.setPixelColor(x, y, QColor::fromRgb(0, 0, 255));
- this->img_map[y][x] = this->index;
- mark(x-1, y-1, image);
- mark(x-1, y, image);
- mark(x-1, y+1, image);
- mark(x, y-1, image);
- mark(x, y+1, image);
- mark(x+1, y-1, image);
- mark(x+1, y, image);
- mark(x+1, y+1, image);
- }
- return;
- }
- void MainWindow::print(QTableWidget &table) {
- int r = this->file_img.height();
- int c = this->file_img.width();
- table.setRowCount(r);
- table.setColumnCount(c);
- for (int i = 0; i < r; ++i)
- for (int j = 0; j < c; ++j) {
- QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
- this->img_map[i][j]));
- table.setItem(i, j, newItem);
- }
- }
- void MainWindow::on_pushButton_clicked()
- {
- QImage img = this->file_img.copy();
- this->int_label = 0;
- this->error_table.push_back(QVector<int>());
- this->error_table.push_back(QVector<int>());
- for (int i = 0; i < img.height(); ++i){
- this->img_map.push_back(QVector<int>());
- for (int j = 0; j < img.width(); ++j)
- this->img_map[i].push_back(0);
- }
- for (int i = 0; i < img.height(); ++i)
- for (int j = 0; j < img.width(); ++j)
- if (img.pixelColor(j,i).blue() <= grey_border)
- this->img_map[i][j] = -1;
- for (int i = 0; i < img.height(); ++i)
- for (int j = 0; j < img.width(); ++j) {
- if(img.pixelColor(j,i).blue() < grey_border && !find_on_map(j,i)) {
- this->mark(j, i, img);
- this->index += 1;
- }
- }
- this->print(*ui->table_2);
- //this->do_something(j, i);
- //this->print(*ui->table_2);
- // for (int i = 0; i < this->error_table[1].length(); ++i)
- // for (int ii = 0; ii < img.height(); ++ii)
- // for (int jj = 0; jj < img.width(); ++jj)
- // if (this->img_map[ii][jj] == this->error_table[1][i])
- // this->img_map[ii][jj] = this->error_table[0][i];
- // this->print(*ui->table_2);
- // ui->table_3->setRowCount(this->error_table[0].length());
- // ui->table_3->setColumnCount(2);
- // ui->table_3->verticalHeader()->hide();
- // ui->table_3->horizontalHeader()->hide();
- // for (int i = 0; i < this->error_table[0].length(); ++i)
- // for (int j = 0; j < 2; ++j) {
- // QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
- // this->error_table[j][i]));
- // ui->table_3->setItem(i, j, newItem);
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement