| 185 |
185 |
}
|
| 186 |
186 |
}
|
| 187 |
187 |
|
|
188 |
String ImlEOL("\r\n");
|
|
189 |
|
| 188 |
190 |
bool LoadIml(const String& data, Array<ImlImage>& img, int& format)
|
| 189 |
191 |
{
|
|
192 |
ImlEOL = "\r\n";
|
|
193 |
int q = data.ReverseFind("\n");
|
|
194 |
if(q >= 0) {
|
|
195 |
if(data.Mid(q - 1, 1) != "\r")
|
|
196 |
ImlEOL = "\n";
|
|
197 |
}
|
|
198 |
#if 0
|
|
199 |
else if(data.ReverseFind("\r") >= 0)
|
|
200 |
ImlEOL = "\r";
|
|
201 |
#endif
|
| 190 |
202 |
CParser p(data);
|
| 191 |
203 |
format = 0;
|
| 192 |
204 |
try {
|
| ... | ... | |
| 277 |
289 |
int64 start = out.GetPos();
|
| 278 |
290 |
while(b < e) {
|
| 279 |
291 |
if(split && out.GetPos() >= start + 200u) {
|
| 280 |
|
out.Put("\"\r\n\t\"");
|
|
292 |
out << "\"" << ImlEOL << "\t\"";
|
| 281 |
293 |
start = out.GetPos();
|
| 282 |
294 |
}
|
| 283 |
295 |
if((byte)*b >= ' ' && *b != '\x7F' && *b != '\xFF') {
|
| ... | ... | |
| 299 |
311 |
for(int i = 0; i < iml.GetCount(); i++) {
|
| 300 |
312 |
const ImlImage& c = iml[i];
|
| 301 |
313 |
if(c.exp)
|
| 302 |
|
out << "IMAGE_META(\"exp\", \"\")\r\n";
|
|
314 |
out << "IMAGE_META(\"exp\", \"\")" << ImlEOL;
|
| 303 |
315 |
String name = c.name;
|
| 304 |
316 |
Image buffer = c.image;
|
| 305 |
317 |
if(IsNull(name))
|
| ... | ... | |
| 314 |
326 |
out.PutLine("\tIMAGE_SCAN(\"\")");
|
| 315 |
327 |
out.Put("\tIMAGE_SCAN(");
|
| 316 |
328 |
PutOctalString(out, scan.Begin(), scan.End(), true);
|
| 317 |
|
out.Put(")\r\n");
|
|
329 |
out << ")" << ImlEOL;
|
| 318 |
330 |
last = i + 1;
|
| 319 |
331 |
}
|
| 320 |
332 |
}
|
| ... | ... | |
| 331 |
343 |
ASSERT(!datastrm.IsError());
|
| 332 |
344 |
String s = datastrm.GetResult();
|
| 333 |
345 |
PutOctalString(out, s.Begin(), s.End());
|
| 334 |
|
out.Put(")\r\n");
|
|
346 |
out << ")" << ImlEOL;
|
| 335 |
347 |
}
|
| 336 |
348 |
}
|
| 337 |
349 |
else {
|
| 338 |
|
out << "PREMULTIPLIED\r\n";
|
|
350 |
out << "PREMULTIPLIED" << ImlEOL;
|
| 339 |
351 |
Index<String> std_name;
|
| 340 |
352 |
for(int i = 0; i < iml.GetCount(); i++) {
|
| 341 |
353 |
const ImlImage& c = iml[i];
|
| ... | ... | |
| 351 |
363 |
out << "__DARK";
|
| 352 |
364 |
out << ")";
|
| 353 |
365 |
if(c.exp)
|
| 354 |
|
out << " IMAGE_META(\"exp\", \"\")\r\n";
|
| 355 |
|
out << "\r\n";
|
|
366 |
out << " IMAGE_META(\"exp\", \"\")" << ImlEOL;
|
|
367 |
out << ImlEOL;
|
| 356 |
368 |
}
|
| 357 |
369 |
int ii = 0;
|
| 358 |
370 |
while(ii < iml.GetCount()) {
|
| ... | ... | |
| 372 |
384 |
bn++;
|
| 373 |
385 |
}
|
| 374 |
386 |
String bs = PackImlData(bimg);
|
| 375 |
|
out << "\r\nIMAGE_BEGIN_DATA\r\n";
|
|
387 |
out << ImlEOL << "IMAGE_BEGIN_DATA" << ImlEOL;
|
| 376 |
388 |
bs.Cat(0, ((bs.GetCount() + 31) & ~31) - bs.GetCount());
|
| 377 |
389 |
const byte *s = bs;
|
| 378 |
390 |
for(int n = bs.GetCount() / 32; n--;) {
|
| ... | ... | |
| 381 |
393 |
if(j) out << ',';
|
| 382 |
394 |
out << (int)*s++;
|
| 383 |
395 |
}
|
| 384 |
|
out << ")\r\n";
|
|
396 |
out << ")" << ImlEOL;
|
| 385 |
397 |
}
|
| 386 |
|
out << "IMAGE_END_DATA(" << bs.GetCount() << ", " << bn << ")\r\n";
|
|
398 |
out << "IMAGE_END_DATA(" << bs.GetCount() << ", " << bn << ")" << ImlEOL;
|
| 387 |
399 |
}
|
| 388 |
400 |
}
|
| 389 |
401 |
return out.GetResult();
|