| 69 | ~Impl() FL_NOEXCEPT = default; |
| 70 | |
| 71 | bool begin(fl::filebuf_ptr stream) { |
| 72 | if (!mDriver) { |
| 73 | setError("Driver not initialized"); |
| 74 | return false; |
| 75 | } |
| 76 | |
| 77 | mState = JpegDecoder::State::NotStarted; |
| 78 | mHasError = false; |
| 79 | mErrorMessage.clear(); |
| 80 | mProgress = 0.0f; |
| 81 | |
| 82 | // Configure progressive settings |
| 83 | fl::third_party::TJpgProgressiveConfig mDriverconfig; |
| 84 | mDriverconfig.max_mcus_per_tick = progressive_mConfig.max_mcus_per_tick; |
| 85 | mDriverconfig.max_time_per_tick_ms = progressive_mConfig.max_time_per_tick_ms; |
| 86 | mDriver->setProgressiveConfig(mDriverconfig); |
| 87 | |
| 88 | // Set scale based on quality setting |
| 89 | mDriver->setScale(getScale()); |
| 90 | |
| 91 | if (!mDriver->beginDecodingStream(stream, mConfig.format)) { |
| 92 | fl::string err; |
| 93 | if (mDriver->hasError(&err)) { |
| 94 | setError(err); |
| 95 | } else { |
| 96 | setError("Failed to begin JPEG decoding"); |
| 97 | } |
| 98 | return false; |
| 99 | } |
| 100 | |
| 101 | mState = JpegDecoder::State::HeaderParsed; |
| 102 | return true; |
| 103 | } |
| 104 | |
| 105 | void end() { |
| 106 | if (mDriver) { |
nothing calls this directly
no test coverage detected