Use font's height.
--HG-- branch : feature
This commit is contained in:
parent
8d526d2ebc
commit
97d76957e3
|
@ -571,14 +571,16 @@ void VLayoutDetail::CreateTextItems()
|
||||||
fnt.setPixelSize(d->m_tmDetail.GetFont().pixelSize() + tl.m_iFontSize);
|
fnt.setPixelSize(d->m_tmDetail.GetFont().pixelSize() + tl.m_iFontSize);
|
||||||
fnt.setWeight(tl.m_eFontWeight);
|
fnt.setWeight(tl.m_eFontWeight);
|
||||||
fnt.setStyle(tl.m_eStyle);
|
fnt.setStyle(tl.m_eStyle);
|
||||||
dY += tl.m_iHeight;
|
|
||||||
|
QFontMetrics fm(fnt);
|
||||||
|
|
||||||
|
dY += fm.height();
|
||||||
// check if the next line will go out of bounds
|
// check if the next line will go out of bounds
|
||||||
if (dY > dH)
|
if (dY > dH)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFontMetrics fm(fnt);
|
|
||||||
QString qsText = tl.m_qsText;
|
QString qsText = tl.m_qsText;
|
||||||
if (fm.width(qsText) > dW)
|
if (fm.width(qsText) > dW)
|
||||||
{
|
{
|
||||||
|
@ -626,13 +628,15 @@ void VLayoutDetail::CreateTextItems()
|
||||||
fnt.setPixelSize(d->m_tmPattern.GetFont().pixelSize() + tl.m_iFontSize);
|
fnt.setPixelSize(d->m_tmPattern.GetFont().pixelSize() + tl.m_iFontSize);
|
||||||
fnt.setWeight(tl.m_eFontWeight);
|
fnt.setWeight(tl.m_eFontWeight);
|
||||||
fnt.setStyle(tl.m_eStyle);
|
fnt.setStyle(tl.m_eStyle);
|
||||||
dY += tl.m_iHeight;
|
|
||||||
|
QFontMetrics fm(fnt);
|
||||||
|
|
||||||
|
dY += fm.height();
|
||||||
if (dY > dH)
|
if (dY > dH)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFontMetrics fm(fnt);
|
|
||||||
QString qsText = tl.m_qsText;
|
QString qsText = tl.m_qsText;
|
||||||
if (fm.width(qsText) > dW)
|
if (fm.width(qsText) > dW)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,8 +44,11 @@
|
||||||
* @brief TextLine::TextLine default constructor
|
* @brief TextLine::TextLine default constructor
|
||||||
*/
|
*/
|
||||||
TextLine::TextLine()
|
TextLine::TextLine()
|
||||||
:m_qsText(), m_iFontSize(MIN_FONT_SIZE), m_eFontWeight(QFont::Normal), m_eStyle(QFont::StyleNormal),
|
: m_qsText(),
|
||||||
m_eAlign(Qt::AlignCenter), m_iHeight(0)
|
m_iFontSize(MIN_FONT_SIZE),
|
||||||
|
m_eFontWeight(QFont::Normal),
|
||||||
|
m_eStyle(QFont::StyleNormal),
|
||||||
|
m_eAlign(Qt::AlignCenter)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -53,7 +56,7 @@ TextLine::TextLine()
|
||||||
* @brief VTextManager::VTextManager constructor
|
* @brief VTextManager::VTextManager constructor
|
||||||
*/
|
*/
|
||||||
VTextManager::VTextManager()
|
VTextManager::VTextManager()
|
||||||
:m_font(), m_liLines()
|
: m_font(), m_liLines()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -205,13 +208,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH)
|
||||||
{
|
{
|
||||||
iFS = qFloor(iFS*fW/iMaxLen);
|
iFS = qFloor(iFS*fW/iMaxLen);
|
||||||
}
|
}
|
||||||
iFS = qMax(MIN_FONT_SIZE, iFS);
|
|
||||||
int iH = 4*iFS/3;
|
|
||||||
SetFontSize(iFS);
|
SetFontSize(iFS);
|
||||||
for (int i = 0; i < GetSourceLinesCount(); ++i)
|
|
||||||
{
|
|
||||||
m_liLines[i].m_iHeight = iH;
|
|
||||||
}
|
|
||||||
qDebug() << "Font size" << GetSourceLinesCount() << iFS;
|
qDebug() << "Font size" << GetSourceLinesCount() << iFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,6 @@ struct TextLine
|
||||||
QFont::Weight m_eFontWeight;
|
QFont::Weight m_eFontWeight;
|
||||||
QFont::Style m_eStyle;
|
QFont::Style m_eStyle;
|
||||||
Qt::Alignment m_eAlign;
|
Qt::Alignment m_eAlign;
|
||||||
int m_iHeight;
|
|
||||||
|
|
||||||
TextLine();
|
TextLine();
|
||||||
};
|
};
|
||||||
|
|
|
@ -112,25 +112,28 @@ void VTextGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
|
||||||
for (int i = 0; i < m_tm.GetSourceLinesCount(); ++i)
|
for (int i = 0; i < m_tm.GetSourceLinesCount(); ++i)
|
||||||
{
|
{
|
||||||
const TextLine& tl = m_tm.GetSourceLine(i);
|
const TextLine& tl = m_tm.GetSourceLine(i);
|
||||||
// check if the next line will go out of bounds
|
|
||||||
if (iY + tl.m_iHeight > boundingRect().height())
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fnt.setPixelSize(m_tm.GetFont().pixelSize() + tl.m_iFontSize);
|
fnt.setPixelSize(m_tm.GetFont().pixelSize() + tl.m_iFontSize);
|
||||||
fnt.setWeight(tl.m_eFontWeight);
|
fnt.setWeight(tl.m_eFontWeight);
|
||||||
fnt.setStyle(tl.m_eStyle);
|
fnt.setStyle(tl.m_eStyle);
|
||||||
|
|
||||||
QString qsText = tl.m_qsText;
|
QString qsText = tl.m_qsText;
|
||||||
QFontMetrics fm(fnt);
|
QFontMetrics fm(fnt);
|
||||||
|
|
||||||
|
// check if the next line will go out of bounds
|
||||||
|
if (iY + fm.height() > boundingRect().height())
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (fm.width(qsText) > iW)
|
if (fm.width(qsText) > iW)
|
||||||
{
|
{
|
||||||
qsText = fm.elidedText(qsText, Qt::ElideMiddle, iW);
|
qsText = fm.elidedText(qsText, Qt::ElideMiddle, iW);
|
||||||
}
|
}
|
||||||
|
|
||||||
painter->setFont(fnt);
|
painter->setFont(fnt);
|
||||||
painter->drawText(0, iY, iW, tl.m_iHeight, tl.m_eAlign, qsText);
|
painter->drawText(0, iY, iW, fm.height(), tl.m_eAlign, qsText);
|
||||||
iY += tl.m_iHeight + m_tm.GetSpacing();
|
iY += fm.height() + m_tm.GetSpacing();
|
||||||
}
|
}
|
||||||
|
|
||||||
// now draw the features specific to non-normal modes
|
// now draw the features specific to non-normal modes
|
||||||
|
|
Loading…
Reference in New Issue
Block a user