blobclose.cpp 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. #include "blobclose.h"
  2. #include "ui_blobclose.h"
  3. #include "../ToolDialog.h"
  4. class ToolDialogImpl;
  5. BlobClose::BlobClose(QWidget *parent , ToolDialogImpl* p)
  6. : ToolInterface(parent), ui(new Ui::BlobClose)
  7. {
  8. ui->setupUi(this);
  9. m_pToolDialogImpl = p;
  10. ui->lineEdit_Width->setText("5");
  11. ui->lineEdit_Height->setText("6");
  12. ui->lineEdit_Size->setText("1");
  13. ui->lineEdit_Width->setValidator(new QIntValidator(1, 16777215, this));
  14. ui->lineEdit_Height->setValidator(new QIntValidator(1, 16777215, this));
  15. ui->lineEdit_Size->setValidator(new QIntValidator(1, 16777215, this));
  16. ui->widget2->setVisible(false);
  17. ui->comboBox->setView(new QListView());
  18. ui->comboBox_index->setView(new QListView());
  19. if(m_pToolDialogImpl->m_LinkProcess.size() > 0)
  20. {
  21. ui->comboBox_index->setVisible(true);
  22. ui->label_index->setVisible(true);
  23. }
  24. else
  25. {
  26. ui->comboBox_index->setVisible(false);
  27. ui->label_index->setVisible(false);
  28. }
  29. for(int i = 0; i < m_pToolDialogImpl->m_LinkProcess.size(); i++)
  30. {
  31. ui->comboBox_index->addItem(QString::number(i));
  32. }
  33. }
  34. BlobClose::~BlobClose()
  35. {
  36. delete ui;
  37. }
  38. bool BlobClose::Serialized(QDataStream& ar, bool bIsOut)
  39. {
  40. int paranum;//参数数量
  41. if (bIsOut)//保存参数流程
  42. {
  43. paranum = 5;
  44. ar << paranum;//先保存参数数量
  45. ar << (int)1 << m_nWidth;
  46. ar << (int)2 << m_nHeight;
  47. ar << (int)3 << m_nSize;
  48. ar << (int)4 << m_nType;
  49. ar << (int)5 << ui->comboBox_index->currentIndex();
  50. }
  51. else//加载参数流程,参数加载顺序一定要跟保存顺序一致
  52. {
  53. int nCurrentIndex = 0;
  54. int para;
  55. ar >> paranum;//读取参数数量
  56. for (int i = 0; i < paranum; i++)
  57. {
  58. ar >> para;
  59. switch (para)
  60. {
  61. case 1: ar >> m_nWidth; break;
  62. case 2: ar >> m_nHeight; break;
  63. case 3: ar >> m_nSize; break;
  64. case 4: ar >> m_nType; break;
  65. case 5: ar >> nCurrentIndex; break;
  66. default:
  67. {
  68. qWarning() << "Serialized(In) Error";
  69. return false;
  70. }
  71. break;
  72. }
  73. }
  74. {
  75. ui->comboBox_index->setCurrentIndex(nCurrentIndex);
  76. ui->lineEdit_Width->setText(QString::number(m_nWidth));
  77. ui->lineEdit_Height->setText(QString::number(m_nHeight));
  78. ui->lineEdit_Size->setText(QString::number(m_nSize));
  79. emit updateParameter(ShowParameter());
  80. }
  81. }
  82. return true;
  83. }
  84. QString BlobClose::ShowParameter()
  85. {
  86. QString str;
  87. m_nSize = ui->lineEdit_Size->text().toInt();
  88. m_nWidth = ui->lineEdit_Width->text().toInt();
  89. m_nHeight = ui->lineEdit_Height->text().toInt();
  90. m_nType = ui->comboBox->currentIndex();
  91. if(m_nType == 0)
  92. {
  93. str += ui->comboBox->currentText();
  94. str += ",";
  95. str += QString::number(m_nSize);
  96. }
  97. else
  98. {
  99. str += ui->comboBox->currentText();
  100. str += ",";
  101. str += QString::number(m_nWidth);
  102. str += ",";
  103. str += QString::number(m_nHeight);
  104. }
  105. return str;
  106. }
  107. int BlobClose::Execute()
  108. {
  109. int result = 1;
  110. m_nSize = ui->lineEdit_Size->text().toInt();
  111. m_nType = ui->comboBox->currentIndex();
  112. m_nWidth = ui->lineEdit_Width->text().toInt();
  113. m_nHeight = ui->lineEdit_Height->text().toInt();
  114. try
  115. {
  116. if(ui->comboBox_index->currentIndex() == 0)
  117. {
  118. if(m_nType == 0)
  119. {
  120. ClosingCircle (m_InImage, &m_OutImage, m_nSize);
  121. }
  122. else
  123. {
  124. ClosingRectangle1 (m_InImage, &m_OutImage, m_nWidth, m_nHeight);
  125. }
  126. }
  127. else
  128. {
  129. int index = ui->comboBox_index->currentIndex() - 1;
  130. HObject inputimage = m_pToolDialogImpl->m_LinkProcess[index].p_dlg->GetResult();
  131. if(m_nType == 0)
  132. {
  133. ClosingCircle (inputimage, &m_OutImage, m_nSize);
  134. }
  135. else
  136. {
  137. ClosingRectangle1 (inputimage, &m_OutImage, m_nWidth, m_nHeight);
  138. }
  139. }
  140. }
  141. catch(...)
  142. {
  143. }
  144. return result;
  145. }
  146. void BlobClose::on_BTN_Add1_clicked()
  147. {
  148. ui->lineEdit_Size->setText(QString::number(ui->lineEdit_Size->text().toInt() + 1));
  149. emit updateParameter(ShowParameter());
  150. }
  151. void BlobClose::on_BTN_Sub1_clicked()
  152. {
  153. if(ui->lineEdit_Size->text().toInt() >= 2)
  154. {
  155. ui->lineEdit_Size->setText(QString::number(ui->lineEdit_Size->text().toInt() - 1));
  156. emit updateParameter(ShowParameter());
  157. }
  158. }
  159. void BlobClose::on_BTN_Add2_clicked()
  160. {
  161. ui->lineEdit_Width->setText(QString::number(ui->lineEdit_Width->text().toInt() + 1));
  162. emit updateParameter(ShowParameter());
  163. }
  164. void BlobClose::on_BTN_Sub2_clicked()
  165. {
  166. if(ui->lineEdit_Width->text().toInt() >= 2)
  167. {
  168. ui->lineEdit_Width->setText(QString::number(ui->lineEdit_Width->text().toInt() - 1));
  169. emit updateParameter(ShowParameter());
  170. }
  171. }
  172. void BlobClose::on_BTN_Add3_clicked()
  173. {
  174. ui->lineEdit_Height->setText(QString::number(ui->lineEdit_Height->text().toInt() + 1));
  175. emit updateParameter(ShowParameter());
  176. }
  177. void BlobClose::on_BTN_Sub3_clicked()
  178. {
  179. if(ui->lineEdit_Height->text().toInt() >= 2)
  180. {
  181. ui->lineEdit_Height->setText(QString::number(ui->lineEdit_Height->text().toInt() - 1));
  182. emit updateParameter(ShowParameter());
  183. }
  184. }
  185. void BlobClose::on_lineEdit_Size_editingFinished()
  186. {
  187. emit updateParameter(ShowParameter());
  188. }
  189. void BlobClose::on_lineEdit_Width_editingFinished()
  190. {
  191. emit updateParameter(ShowParameter());
  192. }
  193. void BlobClose::on_lineEdit_Height_editingFinished()
  194. {
  195. emit updateParameter(ShowParameter());
  196. }
  197. void BlobClose::on_comboBox_currentIndexChanged(int index)
  198. {
  199. emit updateParameter(ShowParameter());
  200. if(index == 0)
  201. {
  202. ui->widget1->setVisible(true);
  203. ui->widget2->setVisible(false);
  204. }
  205. else
  206. {
  207. ui->widget1->setVisible(false);
  208. ui->widget2->setVisible(true);
  209. }
  210. }
  211. void BlobClose::on_comboBox_index_currentIndexChanged(int index)
  212. {
  213. if(index > 0)
  214. {
  215. emit updateParameterIndex(QString::number(index - 1));
  216. }
  217. emit updateParameter(ShowParameter());
  218. }