Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qddshandler.cpp File Reference

(d59c5eb8ccc5777ab99c96c733eafb1405fcb808)

#include "qddshandler.h"
#include <QtCore/qdebug.h>
#include <QtGui/qimage.h>
#include <cmath>
#include "ddsheader.h"
Include dependency graph for qddshandler.cpp:

Go to the source code of this file.

Classes

struct  FaceOffset
struct  FormatInfo
struct  FormatName

Enumerations

enum  Colors {
  Red = 0 , Green , Blue , Alpha ,
  ColorCount , Red = 0 , Green , Blue ,
  Alpha , ColorCount
}
enum  DXTVersions {
  One = 1 , Two = 2 , Three = 3 , Four = 4 ,
  Five = 5 , RXGB = 6 , One = 1 , Two = 2 ,
  Three = 3 , Four = 4 , Five = 5 , RXGB = 6
}
enum  Colors {
  Red = 0 , Green , Blue , Alpha ,
  ColorCount , Red = 0 , Green , Blue ,
  Alpha , ColorCount
}
enum  DXTVersions {
  One = 1 , Two = 2 , Three = 3 , Four = 4 ,
  Five = 5 , RXGB = 6 , One = 1 , Two = 2 ,
  Three = 3 , Four = 4 , Five = 5 , RXGB = 6
}

Functions

static int maskToShift (quint32 mask)
static int maskLength (quint32 mask)
static quint32 readValue (QDataStream &s, quint32 size)
static bool hasAlpha (const DDSHeader &dds)
static bool isCubeMap (const DDSHeader &dds)
static QRgb yuv2rgb (quint8 Y, quint8 U, quint8 V)
static Format getFormat (const DDSHeader &dds)
static quint8 getNormalZ (quint8 nx, quint8 ny)
static void decodeColor (quint16 color, quint8 &red, quint8 &green, quint8 &blue)
static quint8 calcC2 (quint8 c0, quint8 c1)
static quint8 calcC2a (quint8 c0, quint8 c1)
static quint8 calcC3 (quint8 c0, quint8 c1)
static void DXTFillColors (QRgb *result, quint16 c0, quint16 c1, quint32 table, bool dxt1a=false)
template<DXTVersions version>
void setAlphaDXT32Helper (QRgb *rgbArr, quint64 alphas)
template<DXTVersions version>
void setAlphaDXT45Helper (QRgb *rgbArr, quint64 alphas)
template<DXTVersions version>
void setAlphaDXT (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Two > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Three > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Four > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Five > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< RXGB > (QRgb *rgbArr, quint64 alphas)
static QRgb invertRXGBColors (QRgb pixel)
template<DXTVersions version>
static QImage readDXT (QDataStream &s, quint32 width, quint32 height)
static QImage readDXT1 (QDataStream &s, quint32 width, quint32 height)
static QImage readDXT2 (QDataStream &s, quint32 width, quint32 height)
static QImage readDXT3 (QDataStream &s, quint32 width, quint32 height)
static QImage readDXT4 (QDataStream &s, quint32 width, quint32 height)
static QImage readDXT5 (QDataStream &s, quint32 width, quint32 height)
static QImage readRXGB (QDataStream &s, quint32 width, quint32 height)
static QImage readATI2 (QDataStream &s, quint32 width, quint32 height)
static QImage readUnsignedImage (QDataStream &s, const DDSHeader &dds, quint32 width, quint32 height, bool hasAlpha)
static double readFloat16 (QDataStream &s)
static float readFloat32 (QDataStream &s)
static QImage readR16F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readRG16F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readARGB16F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readR32F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readRG32F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readARGB32F (QDataStream &s, const quint32 width, const quint32 height)
static QImage readQ16W16V16U16 (QDataStream &s, const quint32 width, const quint32 height)
static QImage readCxV8U8 (QDataStream &s, const quint32 width, const quint32 height)
static QImage readPalette8Image (QDataStream &s, quint32 width, quint32 height)
static QImage readPalette4Image (QDataStream &s, quint32 width, quint32 height)
static QImage readARGB16 (QDataStream &s, quint32 width, quint32 height)
static QImage readV8U8 (QDataStream &s, quint32 width, quint32 height)
static QImage readL6V5U5 (QDataStream &s, quint32 width, quint32 height)
static QImage readX8L8V8U8 (QDataStream &s, quint32 width, quint32 height)
static QImage readQ8W8V8U8 (QDataStream &s, quint32 width, quint32 height)
static QImage readV16U16 (QDataStream &s, quint32 width, quint32 height)
static QImage readA2W10V10U10 (QDataStream &s, quint32 width, quint32 height)
static QImage readUYVY (QDataStream &s, quint32 width, quint32 height)
static QImage readR8G8B8G8 (QDataStream &s, quint32 width, quint32 height)
static QImage readYUY2 (QDataStream &s, quint32 width, quint32 height)
static QImage readG8R8G8B8 (QDataStream &s, quint32 width, quint32 height)
static QImage readA2R10G10B10 (QDataStream &s, const DDSHeader &dds, quint32 width, quint32 height)
static QImage readLayer (QDataStream &s, const DDSHeader &dds, const int format, quint32 width, quint32 height)
static QImage readTexture (QDataStream &s, const DDSHeader &dds, const int format, const int mipmapLevel)
static qint64 mipmapSize (const DDSHeader &dds, const int format, const int level)
static qint64 mipmapOffset (const DDSHeader &dds, const int format, const int level)
static QImage readCubeMap (QDataStream &s, const DDSHeader &dds, const int fmt)
static QByteArray formatName (int format)
static int formatByName (const QByteArray &name)
template<>
void setAlphaDXT< Two > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Three > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Four > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< Five > (QRgb *rgbArr, quint64 alphas)
template<>
void setAlphaDXT< RXGB > (QRgb *rgbArr, quint64 alphas)

Variables

static const quint32 ddsMagic = 0x20534444
static const quint32 dx10Magic = 0x30315844
static const qint64 headerSize = 128
static const quint32 ddsSize = 124
static const quint32 pixelFormatSize = 32
static const FaceOffset faceOffsets [6] = { {2, 1}, {0, 1}, {1, 0}, {1, 2}, {1, 1}, {3, 1} }
static int faceFlags [6]
static const FormatInfo formatInfos []
static const size_t formatInfosSize = sizeof(formatInfos)/sizeof(FormatInfo)
static const Format knownFourCCs []
static const size_t knownFourCCsSize = sizeof(knownFourCCs)/sizeof(Format)
static const FormatName formatNames []
static const size_t formatNamesSize = sizeof(formatNames)/sizeof(FormatName)

Enumeration Type Documentation

◆ Colors [1/2]

enum Colors
Enumerator
Red 
Green 
Blue 
Alpha 
ColorCount 
Red 
Green 
Blue 
Alpha 
ColorCount 

Definition at line 21 of file qddshandler.cpp.

◆ Colors [2/2]

enum Colors
Enumerator
Red 
Green 
Blue 
Alpha 
ColorCount 
Red 
Green 
Blue 
Alpha 
ColorCount 

Definition at line 21 of file qddshandler.cpp.

◆ DXTVersions [1/2]

Enumerator
One 
Two 
Three 
Four 
Five 
RXGB 
One 
Two 
Three 
Four 
Five 
RXGB 

Definition at line 29 of file qddshandler.cpp.

◆ DXTVersions [2/2]

Enumerator
One 
Two 
Three 
Four 
Five 
RXGB 
One 
Two 
Three 
Four 
Five 
RXGB 

Definition at line 29 of file qddshandler.cpp.

Function Documentation

◆ calcC2()

quint8 calcC2 ( quint8 c0,
quint8 c1 )
inlinestatic

Definition at line 325 of file qddshandler.cpp.

◆ calcC2a()

quint8 calcC2a ( quint8 c0,
quint8 c1 )
inlinestatic

Definition at line 330 of file qddshandler.cpp.

◆ calcC3()

quint8 calcC3 ( quint8 c0,
quint8 c1 )
inlinestatic

Definition at line 335 of file qddshandler.cpp.

◆ decodeColor()

void decodeColor ( quint16 color,
quint8 & red,
quint8 & green,
quint8 & blue )
inlinestatic

Definition at line 318 of file qddshandler.cpp.

◆ DXTFillColors()

void DXTFillColors ( QRgb * result,
quint16 c0,
quint16 c1,
quint32 table,
bool dxt1a = false )
static

Definition at line 340 of file qddshandler.cpp.

◆ formatByName()

int formatByName ( const QByteArray & name)
static

Definition at line 1330 of file qddshandler.cpp.

References formatNames.

◆ formatName()

QByteArray formatName ( int format)
static

Definition at line 1320 of file qddshandler.cpp.

References formatNames, and FormatName::name.

◆ getFormat()

◆ getNormalZ()

quint8 getNormalZ ( quint8 nx,
quint8 ny )
inlinestatic

Definition at line 310 of file qddshandler.cpp.

◆ hasAlpha()

bool hasAlpha ( const DDSHeader & dds)
inlinestatic

Definition at line 264 of file qddshandler.cpp.

References DDSPixelFormat::FlagAlpha, and DDSPixelFormat::FlagAlphaPixels.

◆ invertRXGBColors()

QRgb invertRXGBColors ( QRgb pixel)
inlinestatic

Definition at line 461 of file qddshandler.cpp.

◆ isCubeMap()

bool isCubeMap ( const DDSHeader & dds)
inlinestatic

Definition at line 269 of file qddshandler.cpp.

References DDSHeader::Caps2CubeMap.

◆ maskLength()

int maskLength ( quint32 mask)
inlinestatic

Definition at line 240 of file qddshandler.cpp.

◆ maskToShift()

int maskToShift ( quint32 mask)
inlinestatic

Definition at line 229 of file qddshandler.cpp.

◆ mipmapOffset()

qint64 mipmapOffset ( const DDSHeader & dds,
const int format,
const int level )
static

Definition at line 1284 of file qddshandler.cpp.

◆ mipmapSize()

qint64 mipmapSize ( const DDSHeader & dds,
const int format,
const int level )
static

Definition at line 1188 of file qddshandler.cpp.

◆ readA2R10G10B10()

QImage readA2R10G10B10 ( QDataStream & s,
const DDSHeader & dds,
quint32 width,
quint32 height )
static

Definition at line 1054 of file qddshandler.cpp.

◆ readA2W10V10U10()

QImage readA2W10V10U10 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 950 of file qddshandler.cpp.

◆ readARGB16()

QImage readARGB16 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 841 of file qddshandler.cpp.

◆ readARGB16F()

QImage readARGB16F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 689 of file qddshandler.cpp.

◆ readARGB32F()

QImage readARGB32F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 738 of file qddshandler.cpp.

◆ readATI2()

QImage readATI2 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 537 of file qddshandler.cpp.

References Five, and setAlphaDXT< Three >().

Here is the call graph for this function:

◆ readCubeMap()

QImage readCubeMap ( QDataStream & s,
const DDSHeader & dds,
const int fmt )
static

Definition at line 1292 of file qddshandler.cpp.

References faceFlags, faceOffsets, FaceOffset::x, and FaceOffset::y.

◆ readCxV8U8()

QImage readCxV8U8 ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 775 of file qddshandler.cpp.

◆ readDXT()

template<DXTVersions version>
QImage readDXT ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 467 of file qddshandler.cpp.

References One, and setAlphaDXT< Three >().

Here is the call graph for this function:

◆ readDXT1()

QImage readDXT1 ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 507 of file qddshandler.cpp.

References One.

◆ readDXT2()

QImage readDXT2 ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 512 of file qddshandler.cpp.

References Two.

◆ readDXT3()

QImage readDXT3 ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 517 of file qddshandler.cpp.

References Three.

◆ readDXT4()

QImage readDXT4 ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 522 of file qddshandler.cpp.

References Four.

◆ readDXT5()

QImage readDXT5 ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 527 of file qddshandler.cpp.

References Five.

◆ readFloat16()

double readFloat16 ( QDataStream & s)
static

Definition at line 631 of file qddshandler.cpp.

◆ readFloat32()

float readFloat32 ( QDataStream & s)
inlinestatic

Definition at line 646 of file qddshandler.cpp.

◆ readG8R8G8B8()

QImage readG8R8G8B8 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 1034 of file qddshandler.cpp.

◆ readL6V5U5()

QImage readL6V5U5 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 877 of file qddshandler.cpp.

◆ readLayer()

QImage readLayer ( QDataStream & s,
const DDSHeader & dds,
const int format,
quint32 width,
quint32 height )
static

Definition at line 1067 of file qddshandler.cpp.

◆ readPalette4Image()

QImage readPalette4Image ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 816 of file qddshandler.cpp.

◆ readPalette8Image()

QImage readPalette8Image ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 796 of file qddshandler.cpp.

◆ readQ16W16V16U16()

QImage readQ16W16V16U16 ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 755 of file qddshandler.cpp.

◆ readQ8W8V8U8()

QImage readQ8W8V8U8 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 912 of file qddshandler.cpp.

◆ readR16F()

QImage readR16F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 658 of file qddshandler.cpp.

◆ readR32F()

QImage readR32F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 707 of file qddshandler.cpp.

◆ readR8G8B8G8()

QImage readR8G8B8G8 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 993 of file qddshandler.cpp.

◆ readRG16F()

QImage readRG16F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 673 of file qddshandler.cpp.

◆ readRG32F()

QImage readRG32F ( QDataStream & s,
const quint32 width,
const quint32 height )
static

Definition at line 722 of file qddshandler.cpp.

◆ readRXGB()

QImage readRXGB ( QDataStream & s,
quint32 width,
quint32 height )
inlinestatic

Definition at line 532 of file qddshandler.cpp.

References RXGB.

◆ readTexture()

QImage readTexture ( QDataStream & s,
const DDSHeader & dds,
const int format,
const int mipmapLevel )
inlinestatic

Definition at line 1181 of file qddshandler.cpp.

◆ readUnsignedImage()

QImage readUnsignedImage ( QDataStream & s,
const DDSHeader & dds,
quint32 width,
quint32 height,
bool hasAlpha )
static

Definition at line 574 of file qddshandler.cpp.

References DDSPixelFormat::FlagLuminance, and DDSPixelFormat::FlagYUV.

◆ readUYVY()

QImage readUYVY ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 972 of file qddshandler.cpp.

◆ readV16U16()

QImage readV16U16 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 932 of file qddshandler.cpp.

◆ readV8U8()

QImage readV8U8 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 861 of file qddshandler.cpp.

◆ readValue()

quint32 readValue ( QDataStream & s,
quint32 size )
inlinestatic

Definition at line 251 of file qddshandler.cpp.

◆ readX8L8V8U8()

QImage readX8L8V8U8 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 895 of file qddshandler.cpp.

◆ readYUY2()

QImage readYUY2 ( QDataStream & s,
quint32 width,
quint32 height )
static

Definition at line 1013 of file qddshandler.cpp.

◆ setAlphaDXT()

template<DXTVersions version>
void setAlphaDXT ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 425 of file qddshandler.cpp.

◆ setAlphaDXT32Helper()

template<DXTVersions version>
void setAlphaDXT32Helper ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 375 of file qddshandler.cpp.

References Three, and Two.

◆ setAlphaDXT45Helper()

template<DXTVersions version>
void setAlphaDXT45Helper ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 390 of file qddshandler.cpp.

References Five, and Four.

◆ setAlphaDXT< Five >() [1/2]

template<>
void setAlphaDXT< Five > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 450 of file qddshandler.cpp.

◆ setAlphaDXT< Five >() [2/2]

template<>
void setAlphaDXT< Five > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 450 of file qddshandler.cpp.

◆ setAlphaDXT< Four >() [1/2]

template<>
void setAlphaDXT< Four > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 444 of file qddshandler.cpp.

◆ setAlphaDXT< Four >() [2/2]

template<>
void setAlphaDXT< Four > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 444 of file qddshandler.cpp.

◆ setAlphaDXT< RXGB >() [1/2]

template<>
void setAlphaDXT< RXGB > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 456 of file qddshandler.cpp.

◆ setAlphaDXT< RXGB >() [2/2]

template<>
void setAlphaDXT< RXGB > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 456 of file qddshandler.cpp.

◆ setAlphaDXT< Three >() [1/2]

template<>
void setAlphaDXT< Three > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 438 of file qddshandler.cpp.

Referenced by readATI2(), and readDXT().

Here is the caller graph for this function:

◆ setAlphaDXT< Three >() [2/2]

template<>
void setAlphaDXT< Three > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 438 of file qddshandler.cpp.

◆ setAlphaDXT< Two >() [1/2]

template<>
void setAlphaDXT< Two > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 432 of file qddshandler.cpp.

References Two.

◆ setAlphaDXT< Two >() [2/2]

template<>
void setAlphaDXT< Two > ( QRgb * rgbArr,
quint64 alphas )
inline

Definition at line 432 of file qddshandler.cpp.

◆ yuv2rgb()

QRgb yuv2rgb ( quint8 Y,
quint8 U,
quint8 V )
inlinestatic

Definition at line 274 of file qddshandler.cpp.

Variable Documentation

◆ ddsMagic

const quint32 ddsMagic = 0x20534444
static

Definition at line 40 of file qddshandler.cpp.

◆ ddsSize

const quint32 ddsSize = 124
static

Definition at line 44 of file qddshandler.cpp.

◆ dx10Magic

const quint32 dx10Magic = 0x30315844
static

Definition at line 41 of file qddshandler.cpp.

◆ faceFlags

◆ faceOffsets

const FaceOffset faceOffsets = { {2, 1}, {0, 1}, {1, 0}, {1, 2}, {1, 1}, {3, 1} }
static

Definition at line 52 of file qddshandler.cpp.

Referenced by readCubeMap().

◆ formatInfos

const FormatInfo formatInfos
static

Definition at line 74 of file qddshandler.cpp.

Referenced by getFormat().

◆ formatInfosSize

const size_t formatInfosSize = sizeof(formatInfos)/sizeof(FormatInfo)
static

Definition at line 107 of file qddshandler.cpp.

◆ formatNames

const FormatName formatNames
static

Definition at line 139 of file qddshandler.cpp.

Referenced by formatByName(), and formatName().

◆ formatNamesSize

const size_t formatNamesSize = sizeof(formatNames)/sizeof(FormatName)
static

Definition at line 227 of file qddshandler.cpp.

◆ headerSize

const qint64 headerSize = 128
static

Definition at line 43 of file qddshandler.cpp.

◆ knownFourCCs

const Format knownFourCCs
static
Initial value:
= {
}
@ FormatA32B32G32R32F
Definition ddsheader.h:92
@ FormatUYVY
Definition ddsheader.h:50
@ FormatRXGB
Definition ddsheader.h:59
@ FormatR8G8B8G8
Definition ddsheader.h:51
@ FormatCxV8U8
Definition ddsheader.h:94
@ FormatDXT4
Definition ddsheader.h:57
@ FormatDXT5
Definition ddsheader.h:58
@ FormatV8U8
Definition ddsheader.h:43
@ FormatG16R16F
Definition ddsheader.h:87
@ FormatDXT3
Definition ddsheader.h:56
@ FormatA16B16G16R16
Definition ddsheader.h:34
@ FormatDXT2
Definition ddsheader.h:55
@ FormatR32F
Definition ddsheader.h:90
@ FormatQ16W16V16U16
Definition ddsheader.h:82
@ FormatA16B16G16R16F
Definition ddsheader.h:88
@ FormatATI2
Definition ddsheader.h:60
@ FormatG8R8G8B8
Definition ddsheader.h:53
@ FormatG32R32F
Definition ddsheader.h:91
@ FormatYUY2
Definition ddsheader.h:52
@ FormatR16F
Definition ddsheader.h:86
@ FormatDXT1
Definition ddsheader.h:54

Definition at line 109 of file qddshandler.cpp.

Referenced by getFormat().

◆ knownFourCCsSize

const size_t knownFourCCsSize = sizeof(knownFourCCs)/sizeof(Format)
static

Definition at line 132 of file qddshandler.cpp.

◆ pixelFormatSize

const quint32 pixelFormatSize = 32
static

Definition at line 45 of file qddshandler.cpp.