BackgroundTask.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "BackgroundTask.h"
  2. BackgroundTask::BackgroundTask(const std::string& shortDescription, std::function<bool(void)> stopCallback) :
  3. shortDescription{ shortDescription },
  4. stopCallback{ std::move(stopCallback) }
  5. {
  6. }
  7. ImageExportTask::ImageExportTask(const alm::ImageExportInfo& iei, std::function<bool(void)> stopCallback) :
  8. BackgroundTask{ "Exporting Image", std::move(stopCallback) },
  9. iei{ iei }
  10. {
  11. }
  12. void ImageExportTask::run(void)
  13. {
  14. try {
  15. alm::exportImage(iei, [this](float percentage) {
  16. emit progress(percentage);
  17. }, stopCallback);
  18. if (!stopCallback())
  19. emit finished(true, "Image successfully exported.");
  20. else
  21. emit finished(false, "Image export cancelled.");
  22. }
  23. catch (alm::ImageExportException& ex) {
  24. emit finished(false, QString("Error during image export: ") + ex.what());
  25. }
  26. catch (...) {
  27. emit finished(false, "Unknown error occurred during image export.");
  28. }
  29. }
  30. VideoExportTask::VideoExportTask(MandelVideoGenerator mvg, mnd::MandelGenerator& generator) :
  31. BackgroundTask{ "Exporting Video" },
  32. mvg{ std::move(mvg) },
  33. generator{ generator }
  34. {
  35. }
  36. void VideoExportTask::run(void)
  37. {
  38. try {
  39. mvg.addProgressCallback([this](const MandelVideoProgressInfo& mvpi) {
  40. emit progress(mvpi.progress);
  41. });
  42. mvg.generate(generator);
  43. if (!stopCallback())
  44. emit finished(true, "Video successfully exported.");
  45. else
  46. emit finished(false, "Video export cancelled.");
  47. }
  48. catch (alm::VideoExportException& ex) {
  49. emit finished(false, QString("Error during video export: ") + ex.what());
  50. }
  51. catch (...) {
  52. emit finished(false, "Unknown error occurred during video export.");
  53. }
  54. }