summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qdnd.cpp
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2024-05-24 11:06:59 +0200
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2024-05-28 10:06:08 +0200
commit19e3ec4e2fe1c6d27570ee68480846e9dbf87db7 (patch)
treec17e37fc0a6b98ff31232cb3dd6701983b9f5ef1 /src/gui/kernel/qdnd.cpp
parent1e0bc86dc01a00b115aeb1c0647d61ac8cef3c60 (diff)
QImage: allow for scaling CMYK imagesHEADdev
The codepaths for image scaling are a bit convoluted, so some "surgery" is needed. QImage::scaled() delegates to transformed(), building a suitable scaling matrix. transformed() checks if the matrix is a scaling matrix, and then has several dispatches. If smooth scaling was requested: * if the image format is supported by smoothScaled() without needing a conversion, delegate to that; * otherwise, if the transform is "non paintable" or the source image is big enough, then again call smoothScale. "non paintable" here means that we're scaling more than 2x down, and QPainter wouldn't do a good job. Otherwise, images in color formats (>= RGB32) are converted by applying the needed transformation on a QPainter and draw the source image with that transformation. Otherwise, if the matrix is invertible (a scaling matrix with non-zero scaling always is, it's a diagonal matrix), then dispatch to qt_xForm_helper. -- Amend this reasoning to support CMYK images: * Make smoothScaled support CMYK without conversions. To do so, make qSmoothScaleImage scale CMYK as if it was a ARGB image. * Make transformed() call smoothScaled() for CMYK images * In transformed(), consider CMYK as nonpaintable, because we can't paint over a CMYK image. * In the non-smooth codepath, also check that we don't try to paint over CMYK, and always go through qt_xForm_helper instead. Note that we still don't support any other transformation for CMYK. Add a test, adapting the exiting one for RGB. Change-Id: Ic72d78923a17fb3963aa22c57265904c716792b0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui/kernel/qdnd.cpp')
0 files changed, 0 insertions, 0 deletions