diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2015-09-18 18:04:22 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-10-13 12:13:09 +0000 |
commit | b6756277908e1d8e15dd3e35da72c42569494152 (patch) | |
tree | 237ea333015f4479f9fbafd4184b89789983a304 /src/render/io/texturedata.cpp | |
parent | 9c1281f56317bfb8c050d0c464a5a1da1ca885bd (diff) |
Final batch of file moves for now
Change-Id: I0c9e83e3142e6b083feb2cbcabcc4279de64b95b
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/io/texturedata.cpp')
-rw-r--r-- | src/render/io/texturedata.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/render/io/texturedata.cpp b/src/render/io/texturedata.cpp deleted file mode 100644 index b54c526f9..000000000 --- a/src/render/io/texturedata.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "texturedata.h" - -#include <QDebug> -#include <QOpenGLTexture> -#include <QFileInfo> -#include <QFile> -#include <qendian.h> - -QT_BEGIN_NAMESPACE - -namespace Qt3DRender { - -TexImageData::TexImageData() - : m_width(-1) - , m_height(-1) - , m_depth(-1) - , m_isCompressed(false) - , m_format(QOpenGLTexture::RGBA8_UNorm) -{ -} - -TexImageData::~TexImageData() -{ -} - -void TexImageData::cleanup() -{ - m_width = -1; - m_height = -1; - m_depth = -1; - m_isCompressed = false; - m_data.clear(); -} - -void TexImageData::setImage(const QImage &image) -{ - m_width = image.width(); - m_height = image.height(); - m_depth = 1; - - QImage glImage = image.convertToFormat(QImage::Format_RGBA8888); - Q_ASSERT_X(glImage.bytesPerLine() == (glImage.width() * glImage.depth() + 7) / 8, "TexImageData::setImage", "glImage is not packed"); // QTBUG-48330 - QByteArray imageBytes((const char*) glImage.constBits(), glImage.byteCount()); - setData(imageBytes, QOpenGLTexture::RGBA, QOpenGLTexture::UInt8); - m_format = QOpenGLTexture::RGBA8_UNorm; -} - -void TexImageData::setData(const QByteArray &data, QOpenGLTexture::PixelFormat fmt, QOpenGLTexture::PixelType ptype) -{ - m_isCompressed = false; - m_data = data; - m_pixelFormat = fmt; - m_pixelType = ptype; -} - -bool TexImageData::setCompressedFile(const QString &source) -{ - const bool isPkm = QFileInfo(source).suffix() == QStringLiteral("pkm"); - if (!isPkm) - return false; - - QFile f(source); - if (!f.open(QIODevice::ReadOnly)) { - qWarning() << "Failed to open" << source; - return false; - } - - // ETC1 in PKM, as generated by f.ex. Android's etc1tool - static const char pkmMagic[] = { 'P', 'K', 'M', ' ', '1', '0' }; - const int pkmHeaderSize = 6 + 2 + 4 * 2; - QByteArray header = f.read(pkmHeaderSize); - if (header.size() >= pkmHeaderSize && !qstrncmp(header.constData(), pkmMagic, 6)) { - m_format = QOpenGLTexture::RGB8_ETC1; // may get changed to RGB8_ETC2 later on - // get the extended (multiple of 4) width and height - m_width = qFromBigEndian(*(reinterpret_cast<const quint16 *>(header.constData() + 6 + 2))); - m_height = qFromBigEndian(*(reinterpret_cast<const quint16 *>(header.constData() + 6 + 2 + 2))); - m_depth = 1; - QByteArray data = f.readAll(); - if (data.size() < (m_width / 4) * (m_height / 4) * 8) - qWarning() << "Unexpected end of ETC1 data in" << source; - setData(data, QOpenGLTexture::RGBA, QOpenGLTexture::UInt8); - m_isCompressed = true; - return true; - } - - return false; -} - -} // namespace Qt3DRender - -QT_END_NAMESPACE |