[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38384] branches/soc-2011-cucumber/source/ gameengine/Ketsji: Primitive support for the new line character added to KX_FontObjects.
Daniel Stokes
kupomail at gmail.com
Thu Jul 14 08:16:32 CEST 2011
Revision: 38384
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38384
Author: kupoman
Date: 2011-07-14 06:16:31 +0000 (Thu, 14 Jul 2011)
Log Message:
-----------
Primitive support for the new line character added to KX_FontObjects. The line spacing is fixed, and does not work when the FontObject is rotated. Also, the text attribute has been temporarily disabled, as it needs some updating to support the multiline changes.
Modified Paths:
--------------
branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.cpp
branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.h
Modified: branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.cpp
===================================================================
--- branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.cpp 2011-07-14 05:56:47 UTC (rev 38383)
+++ branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.cpp 2011-07-14 06:16:31 UTC (rev 38384)
@@ -54,7 +54,21 @@
m_rendertools(rendertools)
{
Curve *text = static_cast<Curve *> (ob->data);
- m_text = text->str;
+
+ /* Split the string upon new lines */
+ int begin=0, end=0;
+ STR_String str = STR_String(text->str);
+ while (end < str.Length())
+ {
+ if(str.GetAt(end) == '\n')
+ {
+ m_text.push_back(str.Mid(begin, end-begin));
+ begin = end+1;
+ }
+ end++;
+ }
+ //Now grab the last line
+ m_text.push_back(str.Mid(begin, end-begin));
m_fsize = text->fsize;
/* FO_BUILTIN_NAME != "default" */
@@ -109,8 +123,13 @@
float size = m_fsize * m_object->size[0] * RES;
float aspect = 1.f / (m_object->size[0] * RES);
-
- m_rendertools->RenderText3D(m_fontid, m_text, int(size), m_dpi, m_color, this->GetOpenGLMatrix(), aspect);
+ double mat[16];
+ for(int i=0; i<m_text.size(); ++i)
+ {
+ memcpy(mat, this->GetOpenGLMatrix(), sizeof(double)*16);
+ mat[13] -= i;
+ m_rendertools->RenderText3D(m_fontid, m_text[i], int(size), m_dpi, m_color, mat, aspect);
+ }
}
#ifdef WITH_PYTHON
@@ -152,7 +171,7 @@
};
PyAttributeDef KX_FontObject::Attributes[] = {
- KX_PYATTRIBUTE_STRING_RW("text", 0, 280, false, KX_FontObject, m_text), //arbitrary limit. 280 = 140 unicode chars in unicode
+ //KX_PYATTRIBUTE_STRING_RW("text", 0, 280, false, KX_FontObject, m_text[0]), //arbitrary limit. 280 = 140 unicode chars in unicode
KX_PYATTRIBUTE_FLOAT_RW("size", 0.0001f, 10000.0f, KX_FontObject, m_fsize),
KX_PYATTRIBUTE_FLOAT_RW("resolution", 0.0001f, 10000.0f, KX_FontObject, m_resolution),
/* KX_PYATTRIBUTE_INT_RW("dpi", 0, 10000, false, KX_FontObject, m_dpi), */// no real need for expose this I think
Modified: branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.h
===================================================================
--- branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.h 2011-07-14 05:56:47 UTC (rev 38383)
+++ branches/soc-2011-cucumber/source/gameengine/Ketsji/KX_FontObject.h 2011-07-14 06:16:31 UTC (rev 38384)
@@ -59,7 +59,7 @@
virtual void ProcessReplica();
protected:
- STR_String m_text;
+ std::vector<STR_String> m_text;
Object* m_object;
int m_fontid;
int m_dpi;
More information about the Bf-blender-cvs
mailing list