106{
107 {
109
110 {
111 const quint32 patternVersion = 1;
113 }
114
115 {
116 const quint32 patternImageMode = 3;
118 }
119
120 {
121 const quint16 patternHeight = static_cast<quint16>(pattern->height());
123 }
124
125 {
126 const quint16 patternWidth = static_cast<quint16>(pattern->width());
128 }
129
130 KisAslWriterUtils::writeUnicodeString<byteOrder>(pattern->name(),
m_device);
132
133
134
135 const QRect patternRect(0, 0, pattern->width(), pattern->height());
136
137 {
138 {
139 const quint32 arrayVersion = 3;
141 }
142
144
145 KisAslWriterUtils::writeRect<byteOrder>(patternRect,
m_device);
146
147 {
148
149 const quint32 numberOfChannels = 24;
151 }
152
154
156 bool isCompressed;
157 sliceQImage(pattern->pattern(), &imagePlanes, &isCompressed);
158
159 for (int i = 0; i < 3; i++) {
160 {
161 const quint32 planeIsWritten = 1;
163 }
164
166
167 {
168 const quint32 pixelDepth1 = 8;
170 }
171
172 KisAslWriterUtils::writeRect<byteOrder>(patternRect,
m_device);
173
174 {
175
176 const quint16 pixelDepth2 = 8;
178 }
179
180 {
181
182 const quint8 compressionMethod = isCompressed;
184 }
185
187
188 if (isCompressed) {
189 Q_FOREACH (const QByteArray &compressedRow, imagePlanes[i]) {
190 const quint16 compressionRowSize = static_cast<quint16>(compressedRow.size());
192 }
193 }
194
195 Q_FOREACH (const QByteArray &rowData, imagePlanes[i]) {
196 const qint64 bytesWritten =
m_device.write(rowData);
197 if (bytesWritten != rowData.size()) {
199 }
200 }
201 }
202 }
203 }
204
205 const qint64 currentPos =
m_device.pos();
207
208 if (currentPos != alignedPos) {
210 }
211
213}
void sliceQImage(const QImage &image, QVector< QVector< QByteArray > > *dstPlanes, bool *isCompressed)
#define SAFE_WRITE_EX(byteOrder, device, varname)
#define KIS_ASSERT_RECOVER_RETURN(cond)
QString getPatternUuidLazy(const KoPatternSP pattern)
qint64 alignOffsetCeil(qint64 pos, qint64 alignment)
int size(const Forest< T > &forest)