[DEV] Parse decorated text like a html page
This commit is contained in:
parent
f848ee4ce0
commit
c3dde8d2ac
2
build
2
build
@ -1 +1 @@
|
|||||||
Subproject commit 606c90b3685e5be82c055e337f11f764f6be7d55
|
Subproject commit 1b6659890d1ce315d52398954f77966c72a7fc99
|
@ -466,6 +466,11 @@ void ewol::Drawing::LineTo(etk::Vector3D<float> dest)
|
|||||||
m_position = dest;
|
m_position = dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::Drawing::LineRel(etk::Vector3D<float> vect)
|
||||||
|
{
|
||||||
|
LineTo(m_position+vect);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Drawing::Rectangle(etk::Vector3D<float> dest)
|
void ewol::Drawing::Rectangle(etk::Vector3D<float> dest)
|
||||||
{
|
{
|
||||||
|
@ -138,6 +138,11 @@ namespace ewol
|
|||||||
* @param[in] dest Position of the end of the line.
|
* @param[in] dest Position of the end of the line.
|
||||||
*/
|
*/
|
||||||
void LineTo(etk::Vector3D<float> dest);
|
void LineTo(etk::Vector3D<float> dest);
|
||||||
|
/**
|
||||||
|
* @brief Relative drawing a line (spacial vector)
|
||||||
|
* @param[in] vect Vector of the curent line.
|
||||||
|
*/
|
||||||
|
void LineRel(etk::Vector3D<float> vect);
|
||||||
/**
|
/**
|
||||||
* @brief Draw a 2D rectangle to the position requested.
|
* @brief Draw a 2D rectangle to the position requested.
|
||||||
* @param[in] dest Position the the end of the rectangle
|
* @param[in] dest Position the the end of the rectangle
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <ewol/Debug.h>
|
#include <ewol/Debug.h>
|
||||||
#include <ewol/compositing/Text.h>
|
#include <ewol/compositing/Text.h>
|
||||||
#include <ewol/font/FontManager.h>
|
#include <ewol/font/FontManager.h>
|
||||||
|
#include <tinyXML/tinyxml.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -178,6 +179,8 @@ void ewol::Text::Clear(void)
|
|||||||
m_startTextpos = 0;
|
m_startTextpos = 0;
|
||||||
m_stopTextPos = 0;
|
m_stopTextPos = 0;
|
||||||
m_alignement = ewol::Text::alignDisable;
|
m_alignement = ewol::Text::alignDisable;
|
||||||
|
m_htmlCurrrentLine = "";
|
||||||
|
m_htmlDecoration.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -304,6 +307,12 @@ void ewol::Text::SetFontMode(ewol::font::mode_te mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ewol::font::mode_te ewol::Text::GetFontMode(void)
|
||||||
|
{
|
||||||
|
return m_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Text::SetFontBold(bool status)
|
void ewol::Text::SetFontBold(bool status)
|
||||||
{
|
{
|
||||||
if (true == status) {
|
if (true == status) {
|
||||||
@ -363,10 +372,111 @@ void ewol::Text::Print(const etk::UString& text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Text::PrintDecorated(const etk::UString& text)
|
void ewol::Text::ParseHtmlNode(void* element2)
|
||||||
{
|
{
|
||||||
EWOL_TODO("The Decorated print is not supported now ...");
|
TiXmlNode* element = static_cast<TiXmlNode*>(element2);
|
||||||
Print(text);
|
if (NULL != element) {
|
||||||
|
/*const char *myData = element->ToElement()->GetText();
|
||||||
|
if (NULL != myData) {
|
||||||
|
etk::UString outputData(myData);
|
||||||
|
Print(myData);
|
||||||
|
} else {
|
||||||
|
*/
|
||||||
|
for (TiXmlNode * child = element->FirstChild(); NULL != child ; child = child->NextSibling() ) {
|
||||||
|
if (child->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||||
|
// nothing to do ...
|
||||||
|
} else if (child->Type()==TiXmlNode::TINYXML_TEXT) {
|
||||||
|
HtmlAddData(child->Value() );
|
||||||
|
} else if (!strcmp(child->Value(), "br")) {
|
||||||
|
HtmlFlush();
|
||||||
|
ForceLineReturn();
|
||||||
|
} else if (!strcmp(child->Value(), "font")) {
|
||||||
|
TextDecoration tmpDeco = m_htmlDecoTmp;
|
||||||
|
const char *colorValue = child->ToElement()->Attribute("color");
|
||||||
|
if (NULL != colorValue) {
|
||||||
|
draw::ParseColor(colorValue, m_htmlDecoTmp.m_colorFg);
|
||||||
|
}
|
||||||
|
colorValue = child->ToElement()->Attribute("colorBg");
|
||||||
|
if (NULL != colorValue) {
|
||||||
|
draw::ParseColor(colorValue, m_htmlDecoTmp.m_colorBg);
|
||||||
|
}
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
m_htmlDecoTmp = tmpDeco;
|
||||||
|
} else if (!strcmp(child->Value(), "b")) {
|
||||||
|
TextDecoration tmpDeco = m_htmlDecoTmp;
|
||||||
|
if (m_htmlDecoTmp.m_mode == ewol::font::Regular) {
|
||||||
|
m_htmlDecoTmp.m_mode = ewol::font::Bold;
|
||||||
|
} else if (m_htmlDecoTmp.m_mode == ewol::font::Italic) {
|
||||||
|
m_htmlDecoTmp.m_mode = ewol::font::BoldItalic;
|
||||||
|
}
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
m_htmlDecoTmp = tmpDeco;
|
||||||
|
} else if (!strcmp(child->Value(), "i")) {
|
||||||
|
TextDecoration tmpDeco = m_htmlDecoTmp;
|
||||||
|
if (m_htmlDecoTmp.m_mode == ewol::font::Regular) {
|
||||||
|
m_htmlDecoTmp.m_mode = ewol::font::Italic;
|
||||||
|
} else if (m_htmlDecoTmp.m_mode == ewol::font::Bold) {
|
||||||
|
m_htmlDecoTmp.m_mode = ewol::font::BoldItalic;
|
||||||
|
}
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
m_htmlDecoTmp = tmpDeco;
|
||||||
|
} else if (!strcmp(child->Value(), "u")) {
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
} else if (!strcmp(child->Value(), "p")) {
|
||||||
|
HtmlFlush();
|
||||||
|
m_alignement = ewol::Text::alignLeft;
|
||||||
|
ForceLineReturn();
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
ForceLineReturn();
|
||||||
|
} else if (!strcmp(child->Value(), "center")) {
|
||||||
|
HtmlFlush();
|
||||||
|
m_alignement = ewol::Text::alignCenter;
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
} else if (!strcmp(child->Value(), "left")) {
|
||||||
|
HtmlFlush();
|
||||||
|
m_alignement = ewol::Text::alignLeft;
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
} else if (!strcmp(child->Value(), "right")) {
|
||||||
|
HtmlFlush();
|
||||||
|
m_alignement = ewol::Text::alignRight;
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
} else if (!strcmp(child->Value(), "justify")) {
|
||||||
|
HtmlFlush();
|
||||||
|
m_alignement = ewol::Text::alignJustify;
|
||||||
|
ParseHtmlNode(child);
|
||||||
|
} else {
|
||||||
|
EWOL_ERROR("(l "<< child->Row() << ") node not suported type : " << child->Type() << " val=\""<< child->Value() << "\"" );
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ewol::Text::PrintDecorated(etk::UString& text)
|
||||||
|
{
|
||||||
|
TiXmlDocument XmlDocument;
|
||||||
|
|
||||||
|
// reset parameter :
|
||||||
|
m_htmlDecoTmp.m_colorBg = draw::color::none;
|
||||||
|
m_htmlDecoTmp.m_colorFg = draw::color::black;
|
||||||
|
m_htmlDecoTmp.m_mode = ewol::font::Regular;
|
||||||
|
|
||||||
|
|
||||||
|
// load the XML from the memory
|
||||||
|
bool loadError = XmlDocument.Parse((const char*)text.c_str(), 0, TIXML_ENCODING_UTF8);
|
||||||
|
if (false == loadError) {
|
||||||
|
EWOL_ERROR( "can not load Hightlight XML: PARSING error: Decorated text ");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TiXmlElement* root = XmlDocument.FirstChildElement( "html" );
|
||||||
|
if (NULL == root) {
|
||||||
|
EWOL_ERROR( "can not load Hightlight XML: main node not find: \"html\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TiXmlElement* bodyNode = root->FirstChildElement( "body" );
|
||||||
|
ParseHtmlNode(bodyNode);
|
||||||
|
HtmlFlush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -395,6 +505,10 @@ void ewol::Text::Print(const etk::UString& text, const etk::Vector<TextDecoratio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// special start case at the right of the endpoint :
|
||||||
|
if (m_stopTextPos <= m_position.x) {
|
||||||
|
ForceLineReturn();
|
||||||
|
}
|
||||||
float basicSpaceWidth = CalculateSize(' ').x;
|
float basicSpaceWidth = CalculateSize(' ').x;
|
||||||
int32_t currentId = 0;
|
int32_t currentId = 0;
|
||||||
int32_t stop;
|
int32_t stop;
|
||||||
@ -439,12 +553,16 @@ void ewol::Text::Print(const etk::UString& text, const etk::Vector<TextDecoratio
|
|||||||
}
|
}
|
||||||
// special for the justify mode
|
// special for the justify mode
|
||||||
if (text[iii] == (uniChar_t)' ') {
|
if (text[iii] == (uniChar_t)' ') {
|
||||||
m_vectorialDraw.SetPos(m_position);
|
if (m_colorBg.a != 0) {
|
||||||
|
m_vectorialDraw.SetPos(m_position);
|
||||||
|
}
|
||||||
// Must generate a dynamic space :
|
// Must generate a dynamic space :
|
||||||
SetPos(etk::Vector3D<float>(m_position.x + interpolation,
|
SetPos(etk::Vector3D<float>(m_position.x + interpolation,
|
||||||
m_position.y,
|
m_position.y,
|
||||||
m_position.z) );
|
m_position.z) );
|
||||||
m_vectorialDraw.RectangleWidth(etk::Vector3D<float>(interpolation,fontHeigh,0.0f) );
|
if (m_colorBg.a != 0) {
|
||||||
|
m_vectorialDraw.RectangleWidth(etk::Vector3D<float>(interpolation,fontHeigh,0.0f) );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_colorBg.a != 0) {
|
if (m_colorBg.a != 0) {
|
||||||
etk::Vector3D<float> pos = m_position;
|
etk::Vector3D<float> pos = m_position;
|
||||||
@ -460,6 +578,10 @@ void ewol::Text::Print(const etk::UString& text, const etk::Vector<TextDecoratio
|
|||||||
currentId++;
|
currentId++;
|
||||||
} else if(text[stop] == (uniChar_t)' ') {
|
} else if(text[stop] == (uniChar_t)' ') {
|
||||||
currentId = stop+1;
|
currentId = stop+1;
|
||||||
|
// Reset position :
|
||||||
|
SetPos(etk::Vector3D<float>(m_startTextpos,
|
||||||
|
(float)(m_position.y - m_font->GetHeight(m_mode)),
|
||||||
|
m_position.z) );
|
||||||
} else if(text[stop] == (uniChar_t)'\n') {
|
} else if(text[stop] == (uniChar_t)'\n') {
|
||||||
currentId = stop+1;
|
currentId = stop+1;
|
||||||
// Reset position :
|
// Reset position :
|
||||||
@ -619,20 +741,6 @@ void ewol::Text::Print(const uniChar_t charcode)
|
|||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
/*
|
|
||||||
if (m_colorBg.a != 0) {
|
|
||||||
|
|
||||||
m_vectorialDraw.SetPos();
|
|
||||||
// set display positions :
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[0]);
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[1]);
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[2]);
|
|
||||||
// set the color
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/* Step 2 :
|
/* Step 2 :
|
||||||
*
|
*
|
||||||
* **
|
* **
|
||||||
@ -652,18 +760,6 @@ void ewol::Text::Print(const uniChar_t charcode)
|
|||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
m_coordColor.PushBack(m_color);
|
m_coordColor.PushBack(m_color);
|
||||||
/*
|
|
||||||
if (m_colorBg.a != 0) {
|
|
||||||
// set display positions :
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[0]);
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[2]);
|
|
||||||
m_coordBg.PushBack(bitmapDrawPos[3]);
|
|
||||||
// set the color
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
m_coordColorBg.PushBack(m_colorBg);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -683,7 +779,7 @@ void ewol::Text::ForceLineReturn(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Text::SetTextAlignement(float startTextpos, float stopTextPos, aligneMode_te alignement)
|
void ewol::Text::SetTextAlignement(float startTextpos, float stopTextPos, ewol::Text::aligneMode_te alignement)
|
||||||
{
|
{
|
||||||
m_startTextpos = startTextpos;
|
m_startTextpos = startTextpos;
|
||||||
m_stopTextPos = stopTextPos;
|
m_stopTextPos = stopTextPos;
|
||||||
@ -694,6 +790,12 @@ void ewol::Text::SetTextAlignement(float startTextpos, float stopTextPos, aligne
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ewol::Text::aligneMode_te ewol::Text::GetAlignement(void)
|
||||||
|
{
|
||||||
|
return m_alignement;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Text::DisableAlignement(void)
|
void ewol::Text::DisableAlignement(void)
|
||||||
{
|
{
|
||||||
m_alignement = ewol::Text::alignDisable;
|
m_alignement = ewol::Text::alignDisable;
|
||||||
@ -741,6 +843,19 @@ etk::Vector3D<float> ewol::Text::CalculateSize(const uniChar_t charcode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ewol::Text::PrintCursor(bool isInsertMode)
|
||||||
|
{
|
||||||
|
int32_t fontHeigh = m_font->GetHeight(m_mode);
|
||||||
|
if (true == isInsertMode) {
|
||||||
|
m_vectorialDraw.RectangleWidth(etk::Vector3D<float>(20, fontHeigh, 0) );
|
||||||
|
} else {
|
||||||
|
m_vectorialDraw.SetThickness(2);
|
||||||
|
m_vectorialDraw.LineRel( etk::Vector3D<float>(0, fontHeigh, 0) );
|
||||||
|
m_vectorialDraw.SetThickness(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ewol::Text::ExtrapolateLastId(const etk::UString& text, const int32_t start, int32_t& stop, int32_t& space, int32_t& freeSpace)
|
bool ewol::Text::ExtrapolateLastId(const etk::UString& text, const int32_t start, int32_t& stop, int32_t& space, int32_t& freeSpace)
|
||||||
{
|
{
|
||||||
// store previous :
|
// store previous :
|
||||||
@ -794,4 +909,30 @@ bool ewol::Text::ExtrapolateLastId(const etk::UString& text, const int32_t start
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::Text::HtmlAddData(etk::UString data)
|
||||||
|
{
|
||||||
|
if( m_htmlCurrrentLine.Size()>0
|
||||||
|
&& m_htmlCurrrentLine[m_htmlCurrrentLine.Size()-1] != ' ') {
|
||||||
|
m_htmlCurrrentLine+=" ";
|
||||||
|
if(m_htmlDecoration.Size()>0) {
|
||||||
|
TextDecoration tmp = m_htmlDecoration[m_htmlDecoration.Size()-1];
|
||||||
|
m_htmlDecoration.PushBack(tmp);
|
||||||
|
} else {
|
||||||
|
m_htmlDecoration.PushBack(m_htmlDecoTmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_htmlCurrrentLine += data;
|
||||||
|
for(int32_t iii=0; iii<data.Size() ; iii++) {
|
||||||
|
m_htmlDecoration.PushBack(m_htmlDecoTmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ewol::Text::HtmlFlush(void)
|
||||||
|
{
|
||||||
|
if (m_htmlCurrrentLine.Size()>0) {
|
||||||
|
Print(m_htmlCurrrentLine, m_htmlDecoration);
|
||||||
|
}
|
||||||
|
m_htmlCurrrentLine = "";
|
||||||
|
m_htmlDecoration.Clear();
|
||||||
|
}
|
||||||
|
@ -185,6 +185,11 @@ namespace ewol
|
|||||||
* @param[in] mode The font mode requested
|
* @param[in] mode The font mode requested
|
||||||
*/
|
*/
|
||||||
void SetFontMode(ewol::font::mode_te mode);
|
void SetFontMode(ewol::font::mode_te mode);
|
||||||
|
/**
|
||||||
|
* @brief Get the current font mode
|
||||||
|
* @return The font mode applied
|
||||||
|
*/
|
||||||
|
ewol::font::mode_te GetFontMode(void);
|
||||||
/**
|
/**
|
||||||
* @brief Enable or disable the bold mode
|
* @brief Enable or disable the bold mode
|
||||||
* @param[in] status The new status for this display property
|
* @param[in] status The new status for this display property
|
||||||
@ -212,18 +217,37 @@ namespace ewol
|
|||||||
*/
|
*/
|
||||||
void Print(const etk::UString& text);
|
void Print(const etk::UString& text);
|
||||||
/**
|
/**
|
||||||
* @brief Display a compleat string in the current element with the generic decoration specification.
|
* @brief Display a compleat string in the current element with the generic decoration specification. (basic html data)
|
||||||
* \<b\> ... \</b\> For bold text.
|
* <pre>
|
||||||
* \<i\> ... \</i\> For italic text.
|
* <html>
|
||||||
* \<color="#54325165"\> ... \</color\> To specify a color.
|
* <body>
|
||||||
* \<left\> ... \</left\> To align left.
|
* <br/>
|
||||||
* \<right\> ... \</right\> To align right.
|
* <br/><br/><br/>
|
||||||
* \<center\> ... \</center\> To align center.
|
* <center>
|
||||||
* \<justify\> ... \</justify\> To align justify.
|
* text exemple <b>in bold</b> other text <b>bold part <i>boldItalic part</i></b> an other thext
|
||||||
|
* <font color=\"#FF0000\">colored text <b>bold color text</b> <i>bold italic text</i> normal color text</font> the end of the string<br/>
|
||||||
|
* an an other thext
|
||||||
|
* </center>
|
||||||
|
* <br/><br/><br/>
|
||||||
|
* <left>
|
||||||
|
* plop 1
|
||||||
|
* </left>
|
||||||
|
* <br/><br/><br/>
|
||||||
|
* <right>
|
||||||
|
* plop 2
|
||||||
|
* </right>
|
||||||
|
* <br/><br/><br/>
|
||||||
|
* <justify>
|
||||||
|
* Un exemple de text
|
||||||
|
* </justify>
|
||||||
|
* </body>
|
||||||
|
* </html>
|
||||||
|
* </pre>
|
||||||
|
* @note This is parsed with tiny xml, then be carfull that the XML is correct, and all balises are closed ... otherwite the display can not be done
|
||||||
* @param[in] text The string to display.
|
* @param[in] text The string to display.
|
||||||
* @TODO : implementation not done ....
|
* @TODO : implementation not done ....
|
||||||
*/
|
*/
|
||||||
void PrintDecorated(const etk::UString& text);
|
void PrintDecorated(etk::UString& text);
|
||||||
/**
|
/**
|
||||||
* @brief Display a compleat string in the current element whith specific decorations (advence mode).
|
* @brief Display a compleat string in the current element whith specific decorations (advence mode).
|
||||||
* @param[in] text The string to display.
|
* @param[in] text The string to display.
|
||||||
@ -239,6 +263,11 @@ namespace ewol
|
|||||||
* @brief This Generate the line return ==> it return to the alignement position start and at the correct line position ==> it might be use to not know the line height
|
* @brief This Generate the line return ==> it return to the alignement position start and at the correct line position ==> it might be use to not know the line height
|
||||||
*/
|
*/
|
||||||
void ForceLineReturn(void);
|
void ForceLineReturn(void);
|
||||||
|
/**
|
||||||
|
* @brief This parse a tinyXML node (void pointer to permit to hide tiny XML in include)
|
||||||
|
* @param[in] element the tynyXML element : TiXmlNode*
|
||||||
|
*/
|
||||||
|
void ParseHtmlNode( void* element);
|
||||||
/**
|
/**
|
||||||
* @brief This generate the possibility to generate the big text property
|
* @brief This generate the possibility to generate the big text property
|
||||||
* @param[in] startTextpos The x text start position of the display.
|
* @param[in] startTextpos The x text start position of the display.
|
||||||
@ -246,11 +275,16 @@ namespace ewol
|
|||||||
* @param[in] alignement mode of alignement for the Text.
|
* @param[in] alignement mode of alignement for the Text.
|
||||||
* @note The text align in center change of line every display done (even if it was just a char)
|
* @note The text align in center change of line every display done (even if it was just a char)
|
||||||
*/
|
*/
|
||||||
void SetTextAlignement(float startTextpos, float stopTextPos, aligneMode_te alignement);
|
void SetTextAlignement(float startTextpos, float stopTextPos, ewol::Text::aligneMode_te alignement);
|
||||||
/**
|
/**
|
||||||
* @brief Disable the alignement system
|
* @brief Disable the alignement system
|
||||||
*/
|
*/
|
||||||
void DisableAlignement(void);
|
void DisableAlignement(void);
|
||||||
|
/**
|
||||||
|
* @brief Get the current alignement property
|
||||||
|
* @return the curent alignement type
|
||||||
|
*/
|
||||||
|
ewol::Text::aligneMode_te GetAlignement(void);
|
||||||
/**
|
/**
|
||||||
* @brief Calculate a theoric text size
|
* @brief Calculate a theoric text size
|
||||||
* @param[in] text The string to calculate dimention.
|
* @param[in] text The string to calculate dimention.
|
||||||
@ -263,6 +297,11 @@ namespace ewol
|
|||||||
* @return The theoric size used.
|
* @return The theoric size used.
|
||||||
*/
|
*/
|
||||||
etk::Vector3D<float> CalculateSize(const uniChar_t charcode);
|
etk::Vector3D<float> CalculateSize(const uniChar_t charcode);
|
||||||
|
/**
|
||||||
|
* @brief Draw a cursor at the specify position
|
||||||
|
* @param[in] isInsertMode True if the insert mode is activated
|
||||||
|
*/
|
||||||
|
void PrintCursor(bool isInsertMode);
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* @brief Calculate the element number that is the first out the alignement range
|
* @brief Calculate the element number that is the first out the alignement range
|
||||||
@ -275,6 +314,20 @@ namespace ewol
|
|||||||
* @return true if the rifht has free space that can be use for jystify (return false if we find \n
|
* @return true if the rifht has free space that can be use for jystify (return false if we find \n
|
||||||
*/
|
*/
|
||||||
bool ExtrapolateLastId(const etk::UString& text, const int32_t start, int32_t& stop, int32_t& space, int32_t& freeSpace);
|
bool ExtrapolateLastId(const etk::UString& text, const int32_t start, int32_t& stop, int32_t& space, int32_t& freeSpace);
|
||||||
|
private:
|
||||||
|
// this section is reserved for HTML parsing and display:
|
||||||
|
etk::UString m_htmlCurrrentLine; //!< current line for HTML display
|
||||||
|
etk::Vector<TextDecoration> m_htmlDecoration; //!< current decoration for the HTML display
|
||||||
|
TextDecoration m_htmlDecoTmp; //!< current decoration
|
||||||
|
/**
|
||||||
|
* @brief add a line with the current m_htmlDecoTmp decoration
|
||||||
|
* @param[in] the cuurent data to add.
|
||||||
|
*/
|
||||||
|
void HtmlAddData(etk::UString data);
|
||||||
|
/**
|
||||||
|
* @brief Draw the current line
|
||||||
|
*/
|
||||||
|
void HtmlFlush(void);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user