WebCore/platform/graphics/qt/ImageDecoderQt.cpp
changeset 2 303757a437d3
parent 0 4f2f89ce4247
equal deleted inserted replaced
0:4f2f89ce4247 2:303757a437d3
    76     m_buffer.set(new QBuffer);
    76     m_buffer.set(new QBuffer);
    77     m_buffer->setData(imageData);
    77     m_buffer->setData(imageData);
    78     m_buffer->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
    78     m_buffer->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
    79     m_reader.set(new QImageReader(m_buffer.get(), m_format));
    79     m_reader.set(new QImageReader(m_buffer.get(), m_format));
    80 
    80 
       
    81     // This will force the JPEG decoder to use JDCT_IFAST
       
    82     m_reader->setQuality(49);
       
    83 
    81     // QImageReader only allows retrieving the format before reading the image
    84     // QImageReader only allows retrieving the format before reading the image
    82     m_format = m_reader->format();
    85     m_format = m_reader->format();
    83 }
    86 }
    84 
    87 
    85 bool ImageDecoderQt::isSizeAvailable()
    88 bool ImageDecoderQt::isSizeAvailable()
   184 }
   187 }
   185 
   188 
   186 bool ImageDecoderQt::internalHandleCurrentImage(size_t frameIndex)
   189 bool ImageDecoderQt::internalHandleCurrentImage(size_t frameIndex)
   187 {
   190 {
   188     QPixmap pixmap;
   191     QPixmap pixmap;
   189     bool pixmapLoaded;
   192 
   190     const int imageCount = m_reader->imageCount();
   193 #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
   191     if (imageCount == 0 || imageCount == 1)
   194     pixmap = QPixmap::fromImageReader(m_reader.get());
   192         pixmapLoaded = pixmap.loadFromData((const uchar*)(m_data->data()), m_data->size(), m_format);
   195 #else
   193     else {
   196     QImage img;
   194         QImage img;
   197     if (m_reader->read(&img))
   195         const bool imageLoaded = m_reader->read(&img);
   198         pixmap = QPixmap::fromImage(img);
   196         if (imageLoaded) {
   199 #endif
   197             pixmap = QPixmap::fromImage(img);
   200 
   198             pixmapLoaded = true;
   201     if (pixmap.isNull()) {
   199         }
       
   200     }
       
   201 
       
   202     if (!pixmapLoaded) {
       
   203         frameCount();
   202         frameCount();
   204         repetitionCount();
   203         repetitionCount();
   205         clearPointers();
   204         clearPointers();
   206         return false;
   205         return false;
   207     }
   206     }