blobfillup.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "blobfillup.h"
  2. #include "ui_blobfillup.h"
  3. #include "../ToolDialog.h"
  4. class ToolDialogImpl;
  5. BlobFillUp::BlobFillUp(QWidget *parent , ToolDialogImpl* p)
  6. : ToolInterface(parent), ui(new Ui::BlobFillUp)
  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. BlobFillUp::~BlobFillUp()
  27. {
  28. delete ui;
  29. }
  30. bool BlobFillUp::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 BlobFillUp::ShowParameter()
  66. {
  67. return " ";
  68. }
  69. int BlobFillUp::Execute()
  70. {
  71. int result = 1;
  72. try
  73. {
  74. if(ui->comboBox_index->currentIndex() == 0)
  75. {
  76. FillUp(m_InImage, &m_OutImage);
  77. }
  78. else
  79. {
  80. int index = ui->comboBox_index->currentIndex() - 1;
  81. HObject inputimage = m_pToolDialogImpl->m_LinkProcess[index].p_dlg->GetResult();
  82. FillUp(inputimage, &m_OutImage);
  83. }
  84. }
  85. catch(...)
  86. {
  87. }
  88. return result;
  89. }
  90. void BlobFillUp::on_comboBox_index_currentIndexChanged(int index)
  91. {
  92. if(index > 0)
  93. {
  94. emit updateParameterIndex(QString::number(index - 1));
  95. }
  96. }