From Eric Sokolowski, added support for the new Text line spacing parameter to the .osg and .ive formats.

This commit is contained in:
Robert Osfield 2007-02-02 16:51:59 +00:00
parent 6d9641a78b
commit bee545b82d
4 changed files with 28 additions and 1 deletions

View File

@ -501,6 +501,8 @@ int main(int , char **)
viewer.setSceneData(group);
}
osgDB::writeNodeFile(*viewer.getSceneData(),"text.osg");
return viewer.run();
}

View File

@ -28,8 +28,9 @@
#define VERSION_0017 17
#define VERSION_0018 18
#define VERSION_0019 19
#define VERSION_0020 20
#define VERSION VERSION_0019
#define VERSION VERSION_0020
/* The BYTE_SEX tag is used to check the endian
of the IVE file being read in. The IVE format

View File

@ -62,6 +62,9 @@ void Text::write(DataOutputStream* out){
out->writeUInt(getCharacterSizeMode());
out->writeFloat(getMaximumWidth());
out->writeFloat(getMaximumHeight());
out->writeFloat(getLineSpacing());
out->writeUInt(getAlignment());
out->writeQuat(getRotation()); //FIXME: controllare che ci sia
@ -151,6 +154,11 @@ void Text::read(DataInputStream* in){
setMaximumWidth(in->readFloat());
setMaximumHeight(in->readFloat());
if ( in->getVersion() >= VERSION_0020 )
{
setLineSpacing(in->readFloat());
}
setAlignment((osgText::Text::AlignmentType) in->readUInt());
//Nothing to do...

View File

@ -94,6 +94,17 @@ bool Text_readLocalData(osg::Object &obj, osgDB::Input &fr)
}
}
if (fr[0].matchWord("lineSpacing"))
{
float height;
if (fr[1].getFloat(height))
{
text.setLineSpacing(height);
fr += 2;
itAdvanced = true;
}
}
if (fr.matchSequence("alignment %w"))
{
std::string str = fr[1].getStr();
@ -278,6 +289,11 @@ bool Text_writeLocalData(const osg::Object &obj, osgDB::Output &fw)
{
fw.indent() << "maximumHeight " << text.getMaximumHeight() << std::endl;
}
if (text.getLineSpacing()>0.0f)
{
fw.indent() << "lineSpacing " << text.getLineSpacing() << std::endl;
}
// alignment
fw.indent() << "alignment ";