1 #include "Matrix.h"
2 
3 
readMatrix(osg::Matrix & matrix,osgDB::Input & fr,const char * keyword)4 bool readMatrix(osg::Matrix& matrix, osgDB::Input& fr, const char* keyword)
5 {
6     bool iteratorAdvanced = false;
7 
8     if (fr[0].matchWord(keyword) && fr[1].isOpenBracket())
9     {
10         int entry = fr[0].getNoNestedBrackets();
11 
12         fr += 2;
13 
14         int row=0;
15         int col=0;
16         double v;
17         while (!fr.eof() && fr[0].getNoNestedBrackets()>entry)
18         {
19             if (fr[0].getFloat(v))
20             {
21                 matrix(row,col)=v;
22                 ++col;
23                 if (col>=4)
24                 {
25                     col = 0;
26                     ++row;
27                 }
28                 ++fr;
29             }
30             else fr.advanceOverCurrentFieldOrBlock();
31         }
32         iteratorAdvanced = true;
33     }
34 
35     return iteratorAdvanced;
36 }
37 
38 
writeMatrix(const osg::Matrix & matrix,osgDB::Output & fw,const char * keyword)39 bool writeMatrix(const osg::Matrix& matrix, osgDB::Output& fw, const char* keyword)
40 {
41     fw.indent() << keyword <<" {" << std::endl;
42     fw.moveIn();
43     fw.indent() << matrix(0,0) << " " << matrix(0,1) << " " << matrix(0,2) << " " << matrix(0,3) << std::endl;
44     fw.indent() << matrix(1,0) << " " << matrix(1,1) << " " << matrix(1,2) << " " << matrix(1,3) << std::endl;
45     fw.indent() << matrix(2,0) << " " << matrix(2,1) << " " << matrix(2,2) << " " << matrix(2,3) << std::endl;
46     fw.indent() << matrix(3,0) << " " << matrix(3,1) << " " << matrix(3,2) << " " << matrix(3,3) << std::endl;
47     fw.moveOut();
48     fw.indent() << "}"<< std::endl;
49     return true;
50 }
51 
52