Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAslReaderUtils Namespace Reference

Classes

struct  ASLParseException
 

Functions

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString readFixedString (QIODevice &device)
 
template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString readPascalString (QIODevice &device)
 
template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString readStringCommon (QIODevice &device, int length)
 
template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString readUnicodeString (QIODevice &device)
 
template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString readVarString (QIODevice &device)
 

Function Documentation

◆ readFixedString()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslReaderUtils::readFixedString ( QIODevice & device)
inline

Definition at line 132 of file kis_asl_reader_utils.h.

133{
134 return readStringCommon<byteOrder>(device, 4);
135}

◆ readPascalString()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslReaderUtils::readPascalString ( QIODevice & device)
inline

Definition at line 151 of file kis_asl_reader_utils.h.

152{
153 quint8 length = 0;
154 SAFE_READ_EX(byteOrder, device, length);
155
156 return readStringCommon(device, length);
157}
qreal length(const QPointF &vec)
Definition Ellipse.cc:82
#define SAFE_READ_EX(byteOrder, device, varname)
QString readStringCommon(QIODevice &device, int length)

References length(), readStringCommon(), and SAFE_READ_EX.

◆ readStringCommon()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslReaderUtils::readStringCommon ( QIODevice & device,
int length )
inline

String fetch functions

ASL has 4 types of strings:

  • fixed length (4 bytes)
  • variable length (length (4 bytes) + string (var))
  • pascal (length (1 byte) + string (var))
  • unicode string (length (4 bytes) + null-terminated unicode string (var)

Definition at line 115 of file kis_asl_reader_utils.h.

116{
117 QByteArray data = psdreadBytes<byteOrder>(device, length);
118
119 if (data.size() != length) {
120 QString msg = QString(
121 "Failed to read a string! "
122 "Bytes read: %1 Expected: %2")
123 .arg(data.size())
124 .arg(length);
125 throw ASLParseException(msg);
126 }
127
128 return QString(data);
129}

References length().

◆ readUnicodeString()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslReaderUtils::readUnicodeString ( QIODevice & device)
inline

Definition at line 160 of file kis_asl_reader_utils.h.

161{
162 QString string;
163
164 if (!psdread_unicodestring<byteOrder>(device, string)) {
165 QString msg = QString("Failed to read a unicode string!");
166 throw ASLParseException(msg);
167 }
168
169 return string;
170}

◆ readVarString()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslReaderUtils::readVarString ( QIODevice & device)
inline

Definition at line 138 of file kis_asl_reader_utils.h.

139{
140 quint32 length = 0;
141 SAFE_READ_EX(byteOrder, device, length);
142
143 if (!length) {
144 length = 4;
145 }
146
147 return readStringCommon<byteOrder>(device, length);
148}

References length(), and SAFE_READ_EX.