#pragma once #include "Document/ColorPalette.h" #include "IO/ImageExporter.h" #include #include #include #include #include class QLabel; class QProgressBar; class QPushButton; class QSlider; class QTimer; class SwatchButton; // Swift's JPEGExportSheet: quality, matte and the encoded preview. class JPEGExportSheet : public QWidget { Q_OBJECT public: // The last export's quality, where the next one starts. static const QString qualityKey; JPEGExportSheet(ExportRaster raster, std::function)> finish, QWidget *parent = nullptr); ~JPEGExportSheet() override; private: class Preview; void request(); void encode(); void pickMatte(); void synchronize(); const ExportRaster m_raster; const std::function)> m_finish; JPEGOptions m_options; std::optional m_result; std::optional m_readyOptions; std::optional m_error; // The newest request's flag, Swift's task cancellation. std::shared_ptr m_cancelled; QTimer *const m_wait; Preview *const m_preview; QProgressBar *const m_spinner; QSlider *const m_quality; QLabel *const m_percent; SwatchButton *const m_matteSwatch; QLabel *const m_failure; QLabel *const m_bytes; QLabel *const m_note; QPushButton *const m_export; };