diff --git uppsrc/IconDes/ImlFile.cpp uppsrc/IconDes/ImlFile.cpp --- uppsrc/IconDes/ImlFile.cpp +++ uppsrc/IconDes/ImlFile.cpp @@ -185,8 +185,20 @@ void ScanIML(CParser& parser, Array& out_images, } } +String ImlEOL("\r\n"); + bool LoadIml(const String& data, Array& img, int& format) { + ImlEOL = "\r\n"; + int q = data.ReverseFind("\n"); + if(q >= 0) { + if(data.Mid(q - 1, 1) != "\r") + ImlEOL = "\n"; + } +#if 0 + else if(data.ReverseFind("\r") >= 0) + ImlEOL = "\r"; +#endif CParser p(data); format = 0; try { @@ -277,7 +289,7 @@ static void PutOctalString(Stream& out, const char *b, const char *e, bool split int64 start = out.GetPos(); while(b < e) { if(split && out.GetPos() >= start + 200u) { - out.Put("\"\r\n\t\""); + out << "\"" << ImlEOL << "\t\""; start = out.GetPos(); } if((byte)*b >= ' ' && *b != '\x7F' && *b != '\xFF') { @@ -299,7 +311,7 @@ String SaveIml(const Array& iml, int format) { for(int i = 0; i < iml.GetCount(); i++) { const ImlImage& c = iml[i]; if(c.exp) - out << "IMAGE_META(\"exp\", \"\")\r\n"; + out << "IMAGE_META(\"exp\", \"\")" << ImlEOL; String name = c.name; Image buffer = c.image; if(IsNull(name)) @@ -314,7 +326,7 @@ String SaveIml(const Array& iml, int format) { out.PutLine("\tIMAGE_SCAN(\"\")"); out.Put("\tIMAGE_SCAN("); PutOctalString(out, scan.Begin(), scan.End(), true); - out.Put(")\r\n"); + out << ")" << ImlEOL; last = i + 1; } } @@ -331,11 +343,11 @@ String SaveIml(const Array& iml, int format) { ASSERT(!datastrm.IsError()); String s = datastrm.GetResult(); PutOctalString(out, s.Begin(), s.End()); - out.Put(")\r\n"); + out << ")" << ImlEOL; } } else { - out << "PREMULTIPLIED\r\n"; + out << "PREMULTIPLIED" << ImlEOL; Index std_name; for(int i = 0; i < iml.GetCount(); i++) { const ImlImage& c = iml[i]; @@ -351,8 +363,8 @@ String SaveIml(const Array& iml, int format) { out << "__DARK"; out << ")"; if(c.exp) - out << " IMAGE_META(\"exp\", \"\")\r\n"; - out << "\r\n"; + out << " IMAGE_META(\"exp\", \"\")" << ImlEOL; + out << ImlEOL; } int ii = 0; while(ii < iml.GetCount()) { @@ -372,7 +384,7 @@ String SaveIml(const Array& iml, int format) { bn++; } String bs = PackImlData(bimg); - out << "\r\nIMAGE_BEGIN_DATA\r\n"; + out << ImlEOL << "IMAGE_BEGIN_DATA" << ImlEOL; bs.Cat(0, ((bs.GetCount() + 31) & ~31) - bs.GetCount()); const byte *s = bs; for(int n = bs.GetCount() / 32; n--;) { @@ -381,9 +393,9 @@ String SaveIml(const Array& iml, int format) { if(j) out << ','; out << (int)*s++; } - out << ")\r\n"; + out << ")" << ImlEOL; } - out << "IMAGE_END_DATA(" << bs.GetCount() << ", " << bn << ")\r\n"; + out << "IMAGE_END_DATA(" << bs.GetCount() << ", " << bn << ")" << ImlEOL; } } return out.GetResult();