mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 16:31:11 +02:00
CTextBox: set the correct H/V border
Signed-off-by: Thilo Graf <dbt@novatux.de>
This commit is contained in:
@@ -102,7 +102,7 @@ CTextBox::CTextBox(const char * text, Font* font_text, const int pmode,
|
|||||||
|
|
||||||
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
||||||
//TRACE(" CTextBox::m_nFontTextHeight: %d\t\r\n",m_nFontTextHeight);
|
//TRACE(" CTextBox::m_nFontTextHeight: %d\t\r\n",m_nFontTextHeight);
|
||||||
|
|
||||||
//Initialise the window frames first and than refresh text line array
|
//Initialise the window frames first and than refresh text line array
|
||||||
initFramesAndTextArray();
|
initFramesAndTextArray();
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ CTextBox::CTextBox(const char * text)
|
|||||||
|
|
||||||
if(text != NULL)
|
if(text != NULL)
|
||||||
m_cText = *text;
|
m_cText = *text;
|
||||||
|
|
||||||
//TRACE_1("[CTextBox] %s Line %d text: %s\r\n", __FUNCTION__, __LINE__, text);
|
//TRACE_1("[CTextBox] %s Line %d text: %s\r\n", __FUNCTION__, __LINE__, text);
|
||||||
|
|
||||||
//Initialise the window frames first and than refresh text line array
|
//Initialise the window frames first and than refresh text line array
|
||||||
@@ -125,7 +125,7 @@ CTextBox::CTextBox()
|
|||||||
{
|
{
|
||||||
//TRACE("[CTextBox] new\r\n");
|
//TRACE("[CTextBox] new\r\n");
|
||||||
initVar();
|
initVar();
|
||||||
|
|
||||||
//Initialise the window frames first and than refresh text line array
|
//Initialise the window frames first and than refresh text line array
|
||||||
initFramesAndTextArray();
|
initFramesAndTextArray();
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ void CTextBox::initVar(void)
|
|||||||
{
|
{
|
||||||
//TRACE("[CTextBox]->InitVar\r\n");
|
//TRACE("[CTextBox]->InitVar\r\n");
|
||||||
frameBuffer = NULL;
|
frameBuffer = NULL;
|
||||||
|
|
||||||
m_showTextFrame = 0;
|
m_showTextFrame = 0;
|
||||||
m_nNrOfNewLine = 0;
|
m_nNrOfNewLine = 0;
|
||||||
m_nMaxLineWidth = 0;
|
m_nMaxLineWidth = 0;
|
||||||
@@ -178,7 +178,7 @@ void CTextBox::initVar(void)
|
|||||||
m_nPaintBackground = true;
|
m_nPaintBackground = true;
|
||||||
m_nBgRadius = 0;
|
m_nBgRadius = 0;
|
||||||
m_nBgRadiusType = CORNER_ALL;
|
m_nBgRadiusType = CORNER_ALL;
|
||||||
|
|
||||||
m_cLineArray.clear();
|
m_cLineArray.clear();
|
||||||
|
|
||||||
// max_width = 0;
|
// max_width = 0;
|
||||||
@@ -246,11 +246,10 @@ void CTextBox::reSizeMainFrameWidth(int textWidth)
|
|||||||
int iNewWindowWidth = textWidth + m_cFrameScrollRel.iWidth + 2*text_Hborder_width;
|
int iNewWindowWidth = textWidth + m_cFrameScrollRel.iWidth + 2*text_Hborder_width;
|
||||||
|
|
||||||
if( iNewWindowWidth > m_nMaxWidth)
|
if( iNewWindowWidth > m_nMaxWidth)
|
||||||
iNewWindowWidth = m_nMaxWidth;
|
iNewWindowWidth = m_nMaxWidth;
|
||||||
|
|
||||||
if( iNewWindowWidth < m_nMinWidth)
|
if( iNewWindowWidth < m_nMinWidth)
|
||||||
iNewWindowWidth = m_nMinWidth;
|
iNewWindowWidth = m_nMinWidth;
|
||||||
|
|
||||||
|
|
||||||
m_cFrame.iWidth = iNewWindowWidth;
|
m_cFrame.iWidth = iNewWindowWidth;
|
||||||
|
|
||||||
@@ -266,7 +265,7 @@ void CTextBox::reSizeMainFrameHeight(int textHeight)
|
|||||||
|
|
||||||
if( iNewWindowHeight > m_nMaxHeight)
|
if( iNewWindowHeight > m_nMaxHeight)
|
||||||
iNewWindowHeight = m_nMaxHeight;
|
iNewWindowHeight = m_nMaxHeight;
|
||||||
|
|
||||||
if( iNewWindowHeight < m_nMinHeight)
|
if( iNewWindowHeight < m_nMinHeight)
|
||||||
iNewWindowHeight = m_nMinHeight;
|
iNewWindowHeight = m_nMinHeight;
|
||||||
|
|
||||||
@@ -351,7 +350,7 @@ void CTextBox::refreshTextLineArray(void)
|
|||||||
/* If not autowidth, we just take the actuall textframe width */
|
/* If not autowidth, we just take the actuall textframe width */
|
||||||
lineBreakWidth = std::max(m_nMaxWidth, m_cFrameTextRel.iWidth - 2*text_Hborder_width);
|
lineBreakWidth = std::max(m_nMaxWidth, m_cFrameTextRel.iWidth - 2*text_Hborder_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_nMaxTextWidth)
|
if(m_nMaxTextWidth)
|
||||||
lineBreakWidth = m_nMaxTextWidth - 2*text_Hborder_width;
|
lineBreakWidth = m_nMaxTextWidth - 2*text_Hborder_width;
|
||||||
|
|
||||||
@@ -416,11 +415,11 @@ void CTextBox::refreshTextLineArray(void)
|
|||||||
aktLine += aktWord;
|
aktLine += aktWord;
|
||||||
//set current line width
|
//set current line width
|
||||||
aktWidth += aktWordWidth;
|
aktWidth += aktWordWidth;
|
||||||
|
|
||||||
//set max text width, if required
|
//set max text width, if required
|
||||||
if (aktWidth > m_nMaxTextWidth)
|
if (aktWidth > m_nMaxTextWidth)
|
||||||
m_nMaxTextWidth = aktWidth;
|
m_nMaxTextWidth = aktWidth;
|
||||||
|
|
||||||
//TRACE_1(" aktLine : %s\r\n",aktLine.c_str());
|
//TRACE_1(" aktLine : %s\r\n",aktLine.c_str());
|
||||||
//TRACE_1(" aktWidth: %d aktWordWidth:%d\r\n",aktWidth,aktWordWidth);
|
//TRACE_1(" aktWidth: %d aktWordWidth:%d\r\n",aktWidth,aktWordWidth);
|
||||||
|
|
||||||
@@ -445,7 +444,7 @@ void CTextBox::refreshTextLineArray(void)
|
|||||||
/* check if we have to recalculate the window frame size, due to auto width and auto height */
|
/* check if we have to recalculate the window frame size, due to auto width and auto height */
|
||||||
if( m_nMode & AUTO_WIDTH)
|
if( m_nMode & AUTO_WIDTH)
|
||||||
{
|
{
|
||||||
reSizeMainFrameWidth(m_nMaxTextWidth);
|
reSizeMainFrameWidth(m_nMaxTextWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_nMode & AUTO_HIGH)
|
if(m_nMode & AUTO_HIGH)
|
||||||
@@ -479,7 +478,7 @@ void CTextBox::refreshScroll(void)
|
|||||||
{
|
{
|
||||||
if(!(m_nMode & SCROLL))
|
if(!(m_nMode & SCROLL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( frameBuffer == NULL)
|
if( frameBuffer == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -515,40 +514,38 @@ void CTextBox::refreshText(void)
|
|||||||
if (m_nPaintBackground)
|
if (m_nPaintBackground)
|
||||||
frameBuffer->paintBoxRel(m_cFrameTextRel.iX+m_cFrame.iX, /*m_cFrameTextRel.iY+*/m_cFrame.iY,
|
frameBuffer->paintBoxRel(m_cFrameTextRel.iX+m_cFrame.iX, /*m_cFrameTextRel.iY+*/m_cFrame.iY,
|
||||||
m_cFrameTextRel.iWidth, m_cFrameTextRel.iHeight, m_textBackgroundColor, m_nBgRadius, m_nBgRadiusType);
|
m_cFrameTextRel.iWidth, m_cFrameTextRel.iHeight, m_textBackgroundColor, m_nBgRadius, m_nBgRadiusType);
|
||||||
|
|
||||||
if( m_nNrOfLines <= 0)
|
if( m_nNrOfLines <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
int y = m_cFrameTextRel.iY;
|
||||||
int y = m_cFrameTextRel.iY + text_Vborder_width;
|
|
||||||
int i;
|
int i;
|
||||||
int x_center = 0;
|
int x_center = 0;
|
||||||
|
|
||||||
// set text y position
|
// set text y position
|
||||||
if (m_nMode & TOP)
|
if (m_nMode & TOP)
|
||||||
// move to top of frame
|
// move to top of frame
|
||||||
y += m_nFontTextHeight + ((m_cFrameTextRel.iHeight - m_nFontTextHeight * m_nLinesPerPage) >> 1) - text_Vborder_width;
|
y += m_nFontTextHeight + ((m_cFrameTextRel.iHeight - m_nFontTextHeight * m_nLinesPerPage) >> 1);
|
||||||
else if (m_nMode & BOTTOM)
|
else if (m_nMode & BOTTOM)
|
||||||
// move to bottom of frame
|
// move to bottom of frame
|
||||||
y += m_cFrameTextRel.iHeight - text_Vborder_width - (m_nNrOfLines > 1 ? (m_nNrOfLines-1)*m_nFontTextHeight : 0) ;
|
y += m_cFrameTextRel.iHeight - (m_nNrOfLines > 1 ? (m_nNrOfLines-1)*m_nFontTextHeight : 0) - text_Vborder_width;
|
||||||
//m_nFontTextHeight + text_Vborder_width /*- ((m_cFrameTextRel.iHeight + m_nFontTextHeight*/ * m_nLinesPerPage/*) >> 1)*/;
|
//m_nFontTextHeight + text_Vborder_width /*- ((m_cFrameTextRel.iHeight + m_nFontTextHeight*/ * m_nLinesPerPage/*) >> 1)*/;
|
||||||
else
|
else
|
||||||
// fit into mid of frame space
|
// fit into mid of frame space
|
||||||
y += m_nFontTextHeight + ((m_cFrameTextRel.iHeight - m_nFontTextHeight * std::min(m_nLinesPerPage, m_nNrOfLines)) >> 1) - text_Vborder_width;
|
y += m_nFontTextHeight + ((m_cFrameTextRel.iHeight - m_nFontTextHeight * std::min(m_nLinesPerPage, m_nNrOfLines)) >> 1);
|
||||||
|
|
||||||
for(i = m_nCurrentLine; i < m_nNrOfLines && i < m_nCurrentLine + m_nLinesPerPage; i++)
|
for(i = m_nCurrentLine; i < m_nNrOfLines && i < m_nCurrentLine + m_nLinesPerPage; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
//calculate centered xpos
|
//calculate centered xpos
|
||||||
if( m_nMode & CENTER ){
|
if( m_nMode & CENTER ){
|
||||||
x_center = (m_cFrameTextRel.iWidth - m_pcFontText->getRenderWidth(m_cLineArray[i], true))>>1;
|
x_center = ((m_cFrameTextRel.iWidth - m_pcFontText->getRenderWidth(m_cLineArray[i], true))>>1) - text_Hborder_width;
|
||||||
}
|
}
|
||||||
else if ( m_nMode & RIGHT ){
|
else if ( m_nMode & RIGHT ){
|
||||||
x_center = (m_cFrameTextRel.iWidth - m_pcFontText->getRenderWidth(m_cLineArray[i], true));
|
x_center = ((m_cFrameTextRel.iWidth - m_pcFontText->getRenderWidth(m_cLineArray[i], true)) - text_Hborder_width*2);
|
||||||
if ( m_nMode & SCROLL )
|
if ( m_nMode & SCROLL )
|
||||||
x_center -= SCROLL_FRAME_WIDTH;
|
x_center -= SCROLL_FRAME_WIDTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TRACE("[CTextBox] %s Line %d m_cFrame.iX %d m_cFrameTextRel.iX %d\r\n", __FUNCTION__, __LINE__, m_cFrame.iX, m_cFrameTextRel.iX);
|
//TRACE("[CTextBox] %s Line %d m_cFrame.iX %d m_cFrameTextRel.iX %d\r\n", __FUNCTION__, __LINE__, m_cFrame.iX, m_cFrameTextRel.iX);
|
||||||
m_pcFontText->RenderString(m_cFrame.iX + m_cFrameTextRel.iX + text_Hborder_width + x_center,
|
m_pcFontText->RenderString(m_cFrame.iX + m_cFrameTextRel.iX + text_Hborder_width + x_center,
|
||||||
y+m_cFrame.iY, m_cFrameTextRel.iWidth, m_cLineArray[i].c_str(),
|
y+m_cFrame.iY, m_cFrameTextRel.iWidth, m_cLineArray[i].c_str(),
|
||||||
@@ -562,7 +559,7 @@ void CTextBox::scrollPageDown(const int pages)
|
|||||||
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
||||||
if( !(m_nMode & SCROLL))
|
if( !(m_nMode & SCROLL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( m_nNrOfLines <= 0)
|
if( m_nNrOfLines <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -585,7 +582,7 @@ void CTextBox::scrollPageUp(const int pages)
|
|||||||
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
||||||
if( !(m_nMode & SCROLL))
|
if( !(m_nMode & SCROLL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( m_nNrOfLines <= 0)
|
if( m_nNrOfLines <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -663,9 +660,9 @@ void CTextBox::hide (void)
|
|||||||
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
//TRACE("[CTextBox] %s Line %d\r\n", __FUNCTION__, __LINE__);
|
||||||
if(frameBuffer == NULL)
|
if(frameBuffer == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_nPaintBackground)
|
if (m_nPaintBackground)
|
||||||
frameBuffer->paintBackgroundBoxRel(m_cFrame.iX, m_cFrame.iY, m_cFrame.iWidth, m_cFrame.iHeight);
|
frameBuffer->paintBackgroundBoxRel(m_cFrame.iX, m_cFrame.iY, m_cFrame.iWidth, m_cFrame.iHeight);
|
||||||
|
|
||||||
frameBuffer = NULL;
|
frameBuffer = NULL;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user