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

Classes

struct  ASLWriteException
 
class  OffsetStreamPusher
 

Functions

qint64 alignOffsetCeil (qint64 pos, qint64 alignment)
 
template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString getPatternUuidLazy (const KoPatternSP pattern)
 
template<psd_byte_order byteOrder>
void writeFixedString (const QString &value, QIODevice &device)
 
template<psd_byte_order byteOrder>
void writePascalString (const QString &value, QIODevice &device)
 
template<psd_byte_order byteOrder>
void writeRect (const QRect &rect, QIODevice &device)
 
template<psd_byte_order byteOrder>
void writeUnicodeString (const QString &value, QIODevice &device)
 
template<psd_byte_order byteOrder>
void writeVarString (const QString &value, QIODevice &device)
 

Function Documentation

◆ alignOffsetCeil()

qint64 KisAslWriterUtils::alignOffsetCeil ( qint64 pos,
qint64 alignment )
inline

Align the pointer pos by alignment. Grow the pointer if needed.

Returns
the lowest integer not smaller than pos that divides by alignment

Definition at line 153 of file kis_asl_writer_utils.h.

154{
155 qint64 mask = alignment - 1;
156 return (pos + mask) & ~mask;
157}

◆ getPatternUuidLazy()

template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian>
QString KisAslWriterUtils::getPatternUuidLazy ( const KoPatternSP pattern)
inline

Definition at line 126 of file kis_asl_writer_utils.h.

127{
128 QUuid uuid;
129 QString patternFileName = pattern->filename();
130
131 if (patternFileName.endsWith(".pat", Qt::CaseInsensitive)) {
132 QString strUuid = patternFileName.left(patternFileName.size() - 4);
133
134 uuid = QUuid(strUuid);
135 }
136
137 if (uuid.isNull()) {
138 warnKrita << "WARNING: Saved pattern doesn't have a UUID, generating...";
139 warnKrita << ppVar(patternFileName) << ppVar(pattern->name());
140 uuid = QUuid::createUuid();
141 }
142
143 return uuid.toString().mid(1, 36);
144}
#define warnKrita
Definition kis_debug.h:87
#define ppVar(var)
Definition kis_debug.h:155

References ppVar, and warnKrita.

◆ writeFixedString()

template<psd_byte_order byteOrder>
void KisAslWriterUtils::writeFixedString ( const QString & value,
QIODevice & device )
inline

Definition at line 108 of file kis_asl_writer_utils.h.

109{
110 KIS_ASSERT_RECOVER_RETURN(value.length() == 4);
111
112 QByteArray data = value.toLatin1();
113
114 if (byteOrder == psd_byte_order::psdLittleEndian) {
115 std::reverse(data.begin(), data.end());
116 }
117
118 if (!device.write(data.data(), value.length())) {
119 warnKrita << "WARNING: ASL: Failed to write ASL string" << ppVar(value);
120 return;
121 }
122}
float value(const T *src, size_t ch)
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:75

References KIS_ASSERT_RECOVER_RETURN, ppVar, psdLittleEndian, value(), and warnKrita.

◆ writePascalString()

template<psd_byte_order byteOrder>
void KisAslWriterUtils::writePascalString ( const QString & value,
QIODevice & device )
inline

Definition at line 94 of file kis_asl_writer_utils.h.

95{
96 KIS_ASSERT_RECOVER_RETURN(value.length() < 256);
97 KIS_ASSERT_RECOVER_RETURN(value.length() >= 0);
98 const quint8 lenTag = static_cast<quint8>(value.length());
99 SAFE_WRITE_EX(byteOrder, device, lenTag);
100
101 if (!device.write(value.toLatin1().data(), value.length())) {
102 warnKrita << "WARNING: ASL: Failed to write ASL string" << ppVar(value);
103 return;
104 }
105}
#define SAFE_WRITE_EX(byteOrder, device, varname)

References KIS_ASSERT_RECOVER_RETURN, ppVar, SAFE_WRITE_EX, value(), and warnKrita.

◆ writeRect()

template<psd_byte_order byteOrder>
void KisAslWriterUtils::writeRect ( const QRect & rect,
QIODevice & device )
inline

Definition at line 49 of file kis_asl_writer_utils.h.

50{
51 {
52 const qint32 rectY0 = static_cast<qint32>(rect.y());
53 SAFE_WRITE_EX(byteOrder, device, rectY0);
54 }
55 {
56 const qint32 rectX0 = static_cast<qint32>(rect.x());
57 SAFE_WRITE_EX(byteOrder, device, rectX0);
58 }
59 {
60 const qint32 rectY1 = static_cast<qint32>(rect.y() + rect.height());
61 SAFE_WRITE_EX(byteOrder, device, rectY1);
62 }
63 {
64 const qint32 rectX1 = static_cast<qint32>(rect.x() + rect.width());
65 SAFE_WRITE_EX(byteOrder, device, rectX1);
66 }
67}

References SAFE_WRITE_EX.

◆ writeUnicodeString()

template<psd_byte_order byteOrder>
void KisAslWriterUtils::writeUnicodeString ( const QString & value,
QIODevice & device )
inline

Definition at line 70 of file kis_asl_writer_utils.h.

71{
72 const quint32 len = static_cast<quint32>(value.length() + 1);
73 SAFE_WRITE_EX(byteOrder, device, len);
74
75 const quint16 *ptr = value.utf16();
76 for (quint32 i = 0; i < len; i++) {
77 SAFE_WRITE_EX(byteOrder, device, ptr[i]);
78 }
79}

References SAFE_WRITE_EX, and value().

◆ writeVarString()

template<psd_byte_order byteOrder>
void KisAslWriterUtils::writeVarString ( const QString & value,
QIODevice & device )
inline

Definition at line 82 of file kis_asl_writer_utils.h.

83{
84 const quint32 lenTag = static_cast<quint32>(value.length() != 4 ? value.length() : 0);
85 SAFE_WRITE_EX(byteOrder, device, lenTag);
86
87 if (!device.write(value.toLatin1().data(), value.length())) {
88 warnKrita << "WARNING: ASL: Failed to write ASL string" << ppVar(value);
89 return;
90 }
91}

References ppVar, SAFE_WRITE_EX, value(), and warnKrita.