blobpartitiondynamic.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #include "blobpartitiondynamic.h"
  2. #include "ui_blobpartitiondynamic.h"
  3. #include "../ToolDialog.h"
  4. class ToolDialogImpl;
  5. BlobPartitionDynamic::BlobPartitionDynamic(QWidget *parent , ToolDialogImpl* p)
  6. : ToolInterface(parent), ui(new Ui::BlobPartitionDynamic)
  7. {
  8. ui->setupUi(this);
  9. m_pToolDialogImpl = p;
  10. m_nWidth = 5;
  11. m_nHeight = 5;
  12. ui->lineEdit_width->setText("5");
  13. ui->lineEdit_height->setText("5");
  14. ui->lineEdit_width->setValidator(new QIntValidator(1, 16777215, this));
  15. ui->lineEdit_height->setValidator(new QIntValidator(1, 16777215, this));
  16. ui->BTN_Add1->setIconSize(QSize(40, 40));
  17. ui->comboBox_index->setView(new QListView());
  18. if(m_pToolDialogImpl->m_LinkProcess.size() > 0)
  19. {
  20. ui->comboBox_index->setVisible(true);
  21. ui->label_index->setVisible(true);
  22. }
  23. else
  24. {
  25. ui->comboBox_index->setVisible(false);
  26. ui->label_index->setVisible(false);
  27. }
  28. for(int i = 0; i < m_pToolDialogImpl->m_LinkProcess.size(); i++)
  29. {
  30. ui->comboBox_index->addItem(QString::number(i));
  31. }
  32. }
  33. BlobPartitionDynamic::~BlobPartitionDynamic()
  34. {
  35. delete ui;
  36. }
  37. bool BlobPartitionDynamic::Serialized(QDataStream& ar, bool bIsOut)
  38. {
  39. int paranum;//参数数量
  40. if (bIsOut)//保存参数流程
  41. {
  42. paranum = 3;
  43. ar << paranum;//先保存参数数量
  44. ar << (int)1 << m_nWidth;
  45. ar << (int)2 << m_nHeight;
  46. ar << (int)3 << ui->comboBox_index->currentIndex();
  47. }
  48. else//加载参数流程,参数加载顺序一定要跟保存顺序一致
  49. {
  50. int nCurrentIndex1 = 0;
  51. int nCurrentIndex2 = 0;
  52. int para;
  53. ar >> paranum;//读取参数数量
  54. for (int i = 0; i < paranum; i++)
  55. {
  56. ar >> para;
  57. switch (para)
  58. {
  59. case 1: ar >> m_nWidth; break;
  60. case 2: ar >> m_nHeight; break;
  61. case 3: ar >> nCurrentIndex1; break;
  62. default:
  63. {
  64. qWarning() << "Serialized(In) Error";
  65. return false;
  66. }
  67. break;
  68. }
  69. }
  70. {
  71. ui->comboBox_index->setCurrentIndex(nCurrentIndex1);
  72. ui->lineEdit_width->setText(QString::number(m_nWidth));
  73. ui->lineEdit_height->setText(QString::number(m_nHeight));
  74. emit updateParameter(ShowParameter());
  75. }
  76. }
  77. return true;
  78. }
  79. QString BlobPartitionDynamic::ShowParameter()
  80. {
  81. QString str;
  82. m_nWidth = ui->lineEdit_width->text().toInt();
  83. m_nHeight = ui->lineEdit_height->text().toInt();
  84. str += QString::number(m_nWidth);
  85. str += ",";
  86. str += QString::number(m_nHeight);
  87. return str;
  88. }
  89. int BlobPartitionDynamic::Execute()
  90. {
  91. int result = 1;
  92. m_nWidth = ui->lineEdit_width->text().toInt();
  93. m_nHeight = ui->lineEdit_height->text().toInt();
  94. try
  95. {
  96. if(ui->comboBox_index->currentIndex() == 0)
  97. {
  98. PartitionDynamic (m_InImage, &m_OutImage, m_nWidth, m_nHeight);
  99. }
  100. else
  101. {
  102. int index = ui->comboBox_index->currentIndex() - 1;
  103. HObject inputimage = m_pToolDialogImpl->m_LinkProcess[index].p_dlg->GetResult();
  104. PartitionDynamic (inputimage, &m_OutImage, m_nWidth, m_nHeight);
  105. }
  106. }
  107. catch(...)
  108. {
  109. }
  110. return result;
  111. }
  112. void BlobPartitionDynamic::on_BTN_Add1_clicked()
  113. {
  114. ui->lineEdit_width->setText(QString::number(ui->lineEdit_width->text().toInt() + 1));
  115. emit updateParameter(ShowParameter());
  116. }
  117. void BlobPartitionDynamic::on_BTN_Sub1_clicked()
  118. {
  119. if(ui->lineEdit_width->text().toInt() >= 2)
  120. {
  121. ui->lineEdit_width->setText(QString::number(ui->lineEdit_width->text().toInt() - 1));
  122. emit updateParameter(ShowParameter());
  123. }
  124. }
  125. void BlobPartitionDynamic::on_BTN_Add2_clicked()
  126. {
  127. ui->lineEdit_height->setText(QString::number(ui->lineEdit_height->text().toInt() + 1));
  128. emit updateParameter(ShowParameter());
  129. }
  130. void BlobPartitionDynamic::on_BTN_Sub2_clicked()
  131. {
  132. if(ui->lineEdit_height->text().toInt() >= 2)
  133. {
  134. ui->lineEdit_height->setText(QString::number(ui->lineEdit_height->text().toInt() - 1));
  135. emit updateParameter(ShowParameter());
  136. }
  137. }
  138. void BlobPartitionDynamic::on_lineEdit_width_editingFinished()
  139. {
  140. emit updateParameter(ShowParameter());
  141. }
  142. void BlobPartitionDynamic::on_lineEdit_height_editingFinished()
  143. {
  144. emit updateParameter(ShowParameter());
  145. }
  146. void BlobPartitionDynamic::on_comboBox_index_currentIndexChanged(int index)
  147. {
  148. if(index > 0)
  149. {
  150. emit updateParameterIndex(QString::number(index - 1));
  151. }
  152. emit updateParameter(ShowParameter());
  153. }