Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include "QDragEnterEvent"
  4. #include "QMimeData"
  5. #include "QTableWidget"
  6. #include "QTableWidgetItem"
  7.  
  8. MainWindow::MainWindow(QWidget *parent)
  9. : QMainWindow(parent)
  10. , ui(new Ui::MainWindow)
  11. {
  12. ui->setupUi(this);
  13. }
  14.  
  15. MainWindow::~MainWindow()
  16. {
  17. delete ui;
  18. }
  19.  
  20. void MainWindow::dragEnterEvent(QDragEnterEvent *e)
  21. {
  22. if (e->mimeData()->hasUrls()) {
  23. e->acceptProposedAction();
  24. }
  25. }
  26.  
  27. void MainWindow::dropEvent(QDropEvent *e)
  28. {
  29. foreach (const QUrl &url, e->mimeData()->urls()) {
  30. file_url = url.toLocalFile();
  31. this->file_img = QImage(file_url);
  32. ui->label->setGeometry(0, 0, this->file_img.width(), this->file_img.height());
  33. ui->label->setPixmap(QPixmap::fromImage(file_img/*.convertToFormat(QImage::Format_RGB32)*/));
  34. }
  35. }
  36.  
  37. void MainWindow::write_to_map(int x, int y) {
  38. this->map.push_back(QPair<int, int>(x,y));
  39. }
  40.  
  41. bool MainWindow::find_on_map(int x, int y) {
  42. for (QPair<int,int> i : this->map)
  43. if (i.first == x && i.second == y)
  44. return true;
  45. return false;
  46. }
  47.  
  48. void MainWindow::mark(int x, int y, QImage &image)
  49. {
  50. if(image.pixelColor(x,y).blue() < grey_border && !find_on_map(x,y))
  51. {
  52. write_to_map(x,y);
  53. image.setPixelColor(x, y, QColor::fromRgb(0, 0, 255));
  54. this->img_map[y][x] = this->index;
  55. mark(x-1, y-1, image);
  56. mark(x-1, y, image);
  57. mark(x-1, y+1, image);
  58. mark(x, y-1, image);
  59. mark(x, y+1, image);
  60. mark(x+1, y-1, image);
  61. mark(x+1, y, image);
  62. mark(x+1, y+1, image);
  63. }
  64. return;
  65. }
  66.  
  67.  
  68. void MainWindow::print(QTableWidget &table) {
  69. int r = this->file_img.height();
  70. int c = this->file_img.width();
  71. table.setRowCount(r);
  72. table.setColumnCount(c);
  73. for (int i = 0; i < r; ++i)
  74. for (int j = 0; j < c; ++j) {
  75. QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
  76. this->img_map[i][j]));
  77. table.setItem(i, j, newItem);
  78. }
  79. }
  80.  
  81. void MainWindow::on_pushButton_clicked()
  82. {
  83. QImage img = this->file_img.copy();
  84. this->int_label = 0;
  85.  
  86. this->error_table.push_back(QVector<int>());
  87. this->error_table.push_back(QVector<int>());
  88.  
  89. for (int i = 0; i < img.height(); ++i){
  90. this->img_map.push_back(QVector<int>());
  91. for (int j = 0; j < img.width(); ++j)
  92. this->img_map[i].push_back(0);
  93. }
  94.  
  95. for (int i = 0; i < img.height(); ++i)
  96. for (int j = 0; j < img.width(); ++j)
  97. if (img.pixelColor(j,i).blue() <= grey_border)
  98. this->img_map[i][j] = -1;
  99.  
  100. for (int i = 0; i < img.height(); ++i)
  101. for (int j = 0; j < img.width(); ++j) {
  102. if(img.pixelColor(j,i).blue() < grey_border && !find_on_map(j,i)) {
  103. this->mark(j, i, img);
  104. this->index += 1;
  105. }
  106. }
  107.  
  108.  
  109.  
  110. this->print(*ui->table_2);
  111. //this->do_something(j, i);
  112. //this->print(*ui->table_2);
  113. // for (int i = 0; i < this->error_table[1].length(); ++i)
  114. // for (int ii = 0; ii < img.height(); ++ii)
  115. // for (int jj = 0; jj < img.width(); ++jj)
  116. // if (this->img_map[ii][jj] == this->error_table[1][i])
  117. // this->img_map[ii][jj] = this->error_table[0][i];
  118.  
  119. // this->print(*ui->table_2);
  120.  
  121. // ui->table_3->setRowCount(this->error_table[0].length());
  122. // ui->table_3->setColumnCount(2);
  123. // ui->table_3->verticalHeader()->hide();
  124. // ui->table_3->horizontalHeader()->hide();
  125. // for (int i = 0; i < this->error_table[0].length(); ++i)
  126. // for (int j = 0; j < 2; ++j) {
  127. // QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
  128. // this->error_table[j][i]));
  129. // ui->table_3->setItem(i, j, newItem);
  130. // }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement