git-svn-id: svn://db.shs.com.ru/libs@75 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2016-01-18 14:41:29 +00:00
parent 5b523a65ae
commit d88b341070
28 changed files with 539 additions and 112 deletions

View File

@@ -28,18 +28,23 @@ GLObjectBase * loadFromQGLFile(const QString & filepath) {
}
f.open(QIODevice::ReadOnly);
QDataStream s(&f);
s.setVersion(QDataStream::Qt_4_8);
char sign[4];
s.readRawData(sign, 4);
if ((sign[0] != 'Q') || (sign[1] != 'G') || (sign[2] != 'L') || (sign[3] != 'F')) {
qDebug() << "[Loader QGL] Error: \"" + filepath + "\" is not valid QGL file!";
return 0;
}
QByteArray fc_; s >> fc_;
QByteArray fc = qUncompress(fc_);
if (fc.isEmpty()) return 0;
QDataStream os(fc);
GLObjectBase * root = 0;
os >> root;
ushort version = 0xFFFF;
f.peek((char*)&version, 2);
if (version == 1) {
s.skipRawData(2);
s >> root;
} else {
qDebug() << "[Loader QGL] Error: \"" + filepath + "\" unsupported version!";
return 0;
}
root->buildTransform();
if (root->name().isEmpty())
root->setName(QFileInfo(f).baseName());
@@ -54,11 +59,11 @@ bool saveToQGLFile(const QString & filepath, const GLObjectBase * o) {
return false;
f.resize(0);
QDataStream s(&f);
s.setVersion(QDataStream::Qt_4_8);
char sign[4] = {'Q', 'G', 'L', 'F'};
ushort version = 1;
s.writeRawData(sign, 4);
QByteArray fc;
QDataStream os(&fc, QIODevice::ReadWrite);
os << o;
s << qCompress(fc);
s.writeRawData((char*)&version, 2);
s << o;
return true;
}