Fix maximum size of .ico files in ICOReader::write()

According to MSDN, a maximum icon size is 256 pixels.

http://blogs.msdn.com/b/oldnewthing/archive/2010/10/18/10077133.aspx

Change-Id: Id87c89a20c9cba6ef041b49f93f84c5e9c3eb79f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
bb10
Serge Lysenko 2015-09-14 14:11:55 +03:00
parent d797a04adc
commit c6c930415b
1 changed files with 6 additions and 4 deletions

View File

@ -659,10 +659,11 @@ bool ICOReader::write(QIODevice *device, const QVector<QImage> &images)
for (int i=0; i<id.idCount; i++) {
QImage image = images[i];
// Scale down the image if it is larger than 128 pixels in either width or height
if (image.width() > 128 || image.height() > 128)
// Scale down the image if it is larger than 256 pixels in either width or height
// because this is a maximum size of image in the ICO file.
if (image.width() > 256 || image.height() > 256)
{
image = image.scaled(128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation);
image = image.scaled(256, 256, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
QImage maskImage(image.width(), image.height(), QImage::Format_Mono);
image = image.convertToFormat(QImage::Format_ARGB32);
@ -894,9 +895,10 @@ bool QtIcoHandler::jumpToImage(int imageNumber)
{
if (imageNumber < imageCount()) {
m_currentIconIndex = imageNumber;
return true;
}
return imageNumber < imageCount();
return false;
}
/*! \reimp