X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapisurface.cpp;h=d17560f4ca7e62c0eba638099bc302399eabf6d7;hb=65321858f558e0851a27158cbf3d207f530148e8;hp=32ebff2853452144fc5ade36ce5373a20e33afe3;hpb=3b9fc082c5d17d4325f17dcbb0d49d0c91ffea6c;p=apitrace diff --git a/gui/apisurface.cpp b/gui/apisurface.cpp index 32ebff2..d17560f 100644 --- a/gui/apisurface.cpp +++ b/gui/apisurface.cpp @@ -1,4 +1,5 @@ #include "apisurface.h" +#include "thumbnail.h" #include #include @@ -17,100 +18,71 @@ void ApiSurface::setSize(const QSize &size) m_size = size; } -static inline int -rgba8_to_argb(quint8 r, quint8 g, quint8 b, quint8 a) +void ApiSurface::contentsFromBase64(const QByteArray &base64) { - return (a << 24 | r << 16 | g << 8 | b); + QByteArray dataArray = QByteArray::fromBase64(base64); + m_image.loadFromData(dataArray, "png"); + m_thumb = thumbnail(m_image); } -static inline int -rgbaf2argb(float r, float g, float b, float a) +QImage ApiSurface::image() const { - quint8 rb = r * 255; - quint8 gb = g * 255; - quint8 bb = b * 255; - quint8 ab = a * 255; - - return (ab << 24 | rb << 16 | gb << 8 | bb); + return m_image; } -void ApiSurface::contentsFromBase64(const QByteArray &base64) +QImage ApiSurface::thumb() const { - QByteArray dataArray = QByteArray::fromBase64(base64); - const quint8 *data = (const quint8*)dataArray.data(); - int width = m_size.width(); - int height = m_size.height(); - - if (width <= 0 || height <= 0) - return; - - int *pixelData = (int*)malloc(sizeof(int) * width * height); - - //XXX not sure if this will work when - // QSysInfo::ByteOrder == QSysInfo::BigEndian - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - int pixel = rgba8_to_argb(data[(y * width + x) * 4 + 0], - data[(y * width + x) * 4 + 1], - data[(y * width + x) * 4 + 2], - data[(y * width + x) * 4 + 3]); - pixelData[y * width + x] = pixel; - } - } - - m_image = QImage((uchar*)pixelData, - width, height, - QImage::Format_ARGB32).mirrored(); - m_thumb = m_image.scaled(64, 64, Qt::KeepAspectRatio); - //m_image.save("testoutput.png"); + return m_thumb; +} - free(pixelData); +int ApiSurface::depth() const +{ + return m_depth; } -QImage ApiSurface::image() const +void ApiSurface::setDepth(int depth) { - return m_image; + m_depth = depth; } -QImage ApiSurface::thumb() const +QString ApiSurface::formatName() const { - return m_thumb; + return m_formatName; } -ApiTexture::ApiTexture() - : ApiSurface(), - m_unit(0), - m_level(0) +void ApiSurface::setFormatName(const QString &str) { + m_formatName = str; } -int ApiTexture::unit() const + +ApiTexture::ApiTexture() + : ApiSurface() { - return m_unit; } -void ApiTexture::setUnit(int un) +QString ApiTexture::label() const { - m_unit = un; + return m_label; } -QString ApiTexture::target() const +void ApiTexture::setLabel(const QString &str) { - return m_target; + m_label = str; } -void ApiTexture::setTarget(const QString &str) +ApiFramebuffer::ApiFramebuffer() + : ApiSurface() { - m_target = str; } -int ApiTexture::level() const +QString ApiFramebuffer::type() const { - return m_level; + return m_type; } -void ApiTexture::setLevel(int l) +void ApiFramebuffer::setType(const QString &str) { - m_level = l; + m_type = str; } +