blobdifference.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "blobdifference.h"
  2. #include "ui_blobdifference.h"
  3. #include "../ToolDialog.h"
  4. class ToolDialogImpl;
  5. BlobDifference::BlobDifference(QWidget *parent , ToolDialogImpl* p)
  6. : ToolInterface(parent), ui(new Ui::BlobDifference)
  7. {
  8. ui->setupUi(this);
  9. m_pToolDialogImpl = p;
  10. ui->comboBox_index->setView(new QListView());
  11. if(m_pToolDialogImpl->m_LinkProcess.size() > 0)
  12. {
  13. ui->comboBox_index->setVisible(true);
  14. ui->label_index->setVisible(true);
  15. }
  16. else
  17. {
  18. ui->comboBox_index->setVisible(false);
  19. ui->label_index->setVisible(false);
  20. }
  21. for(int i = 0; i < m_pToolDialogImpl->m_LinkProcess.size(); i++)
  22. {
  23. ui->comboBox_index->addItem(QString::number(i));
  24. }
  25. }
  26. BlobDifference::~BlobDifference()
  27. {
  28. delete ui;
  29. }
  30. bool BlobDifference::Serialized(QDataStream& ar, bool bIsOut)
  31. {
  32. int paranum;//参数数量
  33. if (bIsOut)//保存参数流程
  34. {
  35. paranum = 1;
  36. ar << paranum;//先保存参数数量
  37. ar << (int)1 << ui->comboBox_index->currentIndex();
  38. }
  39. else//加载参数流程,参数加载顺序一定要跟保存顺序一致
  40. {
  41. int nCurrentIndex = 0;
  42. int para;
  43. ar >> paranum;//读取参数数量
  44. for (int i = 0; i < paranum; i++)
  45. {
  46. ar >> para;
  47. switch (para)
  48. {
  49. case 1: ar >> nCurrentIndex; break;
  50. default:
  51. {
  52. qWarning() << "Serialized(In) Error";
  53. return false;
  54. }
  55. break;
  56. }
  57. }
  58. {
  59. ui->comboBox_index->setCurrentIndex(nCurrentIndex);
  60. emit updateParameter(ShowParameter());
  61. }
  62. }
  63. return true;
  64. }
  65. QString BlobDifference::ShowParameter()
  66. {
  67. return " ";
  68. }
  69. int BlobDifference::Execute()
  70. {
  71. int result = 1;
  72. try
  73. {
  74. if(ui->comboBox_index->currentIndex() > 0)
  75. {
  76. int index = ui->comboBox_index->currentIndex() - 1;
  77. HObject inputimage = m_pToolDialogImpl->m_LinkProcess[index].p_dlg->GetResult();
  78. Difference(m_InImage, inputimage, &m_OutImage);
  79. }
  80. }
  81. catch(...)
  82. {
  83. }
  84. return result;
  85. }
  86. void BlobDifference::on_comboBox_index_currentIndexChanged(int index)
  87. {
  88. if(index > 0)
  89. {
  90. emit updateParameterIndex(QString::number(index - 1));
  91. }
  92. }