git-svn-id: svn://db.shs.com.ru/libs@75 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user