Fixes to osgText to handle std::string correctly.
This commit is contained in:
parent
29f4fa713f
commit
c3a7ce7352
@ -55,7 +55,7 @@ class OSGTEXT_EXPORT EncodedText : public osg::Referenced
|
|||||||
Encoding getOverrideEncoding() const { return _overrideEncoding; }
|
Encoding getOverrideEncoding() const { return _overrideEncoding; }
|
||||||
Encoding getEncoding() const { return _encoding; }
|
Encoding getEncoding() const { return _encoding; }
|
||||||
|
|
||||||
void setText(const unsigned char* text);
|
void setText(const unsigned char* text, int length = -1);
|
||||||
std::vector<int>::const_iterator getUnicodeText() const { return _unicodeText.begin(); }
|
std::vector<int>::const_iterator getUnicodeText() const { return _unicodeText.begin(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -200,21 +200,24 @@ EncodedText::Encoding EncodedText::findEncoding(const unsigned char*& charString
|
|||||||
return ENCODING_ASCII;
|
return ENCODING_ASCII;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EncodedText::setText(const unsigned char* text)
|
void EncodedText::setText(const unsigned char* text, int length)
|
||||||
{
|
{
|
||||||
_unicodeText.clear();
|
_unicodeText.clear();
|
||||||
if (text != NULL)
|
if (text != NULL)
|
||||||
{
|
{
|
||||||
|
const unsigned char* textStart = text;
|
||||||
if ((_overrideEncoding == ENCODING_SIGNATURE) ||
|
if ((_overrideEncoding == ENCODING_SIGNATURE) ||
|
||||||
(_overrideEncoding == ENCODING_UTF16) ||
|
(_overrideEncoding == ENCODING_UTF16) ||
|
||||||
(_overrideEncoding == ENCODING_UTF32))
|
(_overrideEncoding == ENCODING_UTF32))
|
||||||
_encoding = findEncoding(text);
|
_encoding = findEncoding(text);
|
||||||
|
|
||||||
int character = getNextCharacter(text);
|
int character = getNextCharacter(text);
|
||||||
while (character)
|
int charCount = (int)(text-textStart);
|
||||||
|
while ((character) && (charCount <= length))
|
||||||
{
|
{
|
||||||
_unicodeText.push_back(character);
|
_unicodeText.push_back(character);
|
||||||
character = getNextCharacter(text);
|
character = getNextCharacter(text);
|
||||||
|
charCount = (int)(text-textStart);
|
||||||
}
|
}
|
||||||
_unicodeText.push_back(0); //just making the null-termination explicit
|
_unicodeText.push_back(0); //just making the null-termination explicit
|
||||||
}
|
}
|
||||||
|
@ -505,7 +505,7 @@ setText(const std::string& text)
|
|||||||
{
|
{
|
||||||
_text=text;
|
_text=text;
|
||||||
_initAlignment=false;
|
_initAlignment=false;
|
||||||
_encodedText->setText((const unsigned char*)_text.data());
|
_encodedText->setText((const unsigned char*)_text.data(),_text.size());
|
||||||
}
|
}
|
||||||
// Text
|
// Text
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user