bool QDirectFBPixmapData::fromFile(const QString &filename, const char *format, Qt::ImageConversionFlags flags) { if (!QFile::exists(filename)) return false; if (flags == Qt::AutoColor) { if (filename.startsWith(QLatin1Char(':'))) { // resource QFile file(filename); if (!file.open(QIODevice::ReadOnly)) return false; const QByteArray data = file.readAll(); file.close(); return fromData(reinterpret_cast<const uchar*>(data.constData()), data.size(), format, flags); } else { DFBDataBufferDescription description; description.flags = DBDESC_FILE; const QByteArray fileNameData = filename.toLocal8Bit(); description.file = fileNameData.constData(); if (fromDataBufferDescription(description)) { return true; } // fall back to Qt } } return QPixmapData::fromFile(filename, format, flags); }
bool QDirectFbBlitterPlatformPixmap::fromFile(const QString &filename, const char *format, Qt::ImageConversionFlags flags) { // If we can't find the file, pass it on to the base class as it is // trying harder by appending various extensions to the path. if (!QFile::exists(filename)) return QBlittablePlatformPixmap::fromFile(filename, format, flags); // Stop if there is a requirement for colors if (flags != Qt::AutoColor) return QBlittablePlatformPixmap::fromFile(filename, format, flags); // Deal with resources if (filename.startsWith(QLatin1Char(':'))) return QBlittablePlatformPixmap::fromFile(filename, format, flags); // Try to use directfb to load it. DFBDataBufferDescription description; description.flags = DBDESC_FILE; const QByteArray fileNameData = filename.toLocal8Bit(); description.file = fileNameData.constData(); if (fromDataBufferDescription(description)) return true; // Fallback return QBlittablePlatformPixmap::fromFile(filename, format, flags); }
bool QDirectFBPixmapData::fromData(const uchar *buffer, uint len, const char *format, Qt::ImageConversionFlags flags) { if (flags == Qt::AutoColor) { DFBDataBufferDescription description; description.flags = DBDESC_MEMORY; description.memory.data = buffer; description.memory.length = len; if (fromDataBufferDescription(description)) return true; // fall back to Qt } return QPixmapData::fromData(buffer, len, format, flags); }