| 507 | Q_STATIC_ASSERT((Concurrency::supported<BWMapper>::value)); |
| 508 | |
| 509 | QImage Vectorizer::getBWImage(std::vector<bool> selectedColors, |
| 510 | ProgressObserver* progressObserver) |
| 511 | { |
| 512 | if (bwImage.isNull() |
| 513 | || !std::equal(begin(selectedColors), end(selectedColors), |
| 514 | begin(this->selectedColors), end(this->selectedColors))) |
| 515 | { |
| 516 | this->selectedColors = selectedColors; |
| 517 | bwImage = QImage(sourceImage.size(), QImage::Format_Mono); |
| 518 | bwImage.setColorTable( |
| 519 | QVector<QRgb>{QColor(Qt::white).rgb(), QColor(Qt::black).rgb()}); |
| 520 | |
| 521 | auto mapFunctor = BWMapper(std::move(selectedColors)); |
| 522 | Concurrency::process(progressObserver, mapFunctor, classifiedImage, bwImage); |
| 523 | if (progressObserver && progressObserver->isInterruptionRequested()) |
| 524 | bwImage = {}; |
| 525 | } |
| 526 | |
| 527 | return bwImage; |
| 528 | } |
| 529 | |
| 530 | /*! Performs selected Morphological operation on data member bwImage. |
| 531 | \sa MorphologicalOperation getTransformedImage(QImage bwImage, |
no test coverage detected