LibGfx: Allow images to report that they are originally grayscale

...and implement it in JPEGLoader.

Since it's easy to get the grayscale data off a Bitmap, don't
add a grayscale_frame() accessor.
This commit is contained in:
Nico Weber 2024-01-07 22:18:18 -05:00 committed by Andreas Kling
parent 239da5132d
commit d8ada20bae
Notes: sideshowbarker 2024-07-17 11:30:54 +09:00
2 changed files with 6 additions and 1 deletions
Userland/Libraries/LibGfx/ImageFormats

View file

@ -31,6 +31,7 @@ struct VectorImageFrameDescriptor {
enum class NaturalFrameFormat {
RGB,
Grayscale,
CMYK,
Vector,
};

View file

@ -2010,7 +2010,11 @@ NaturalFrameFormat JPEGImageDecoderPlugin::natural_frame_format() const
if (m_context->state == JPEGLoadingContext::State::Error)
return NaturalFrameFormat::RGB;
VERIFY(m_context->state >= JPEGLoadingContext::State::HeaderDecoded);
return m_context->components.size() == 4 ? NaturalFrameFormat::CMYK : NaturalFrameFormat::RGB;
if (m_context->components.size() == 1)
return NaturalFrameFormat::Grayscale;
if (m_context->components.size() == 4)
return NaturalFrameFormat::CMYK;
return NaturalFrameFormat::RGB;
}
ErrorOr<NonnullRefPtr<CMYKBitmap>> JPEGImageDecoderPlugin::cmyk_frame()