0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-23 16:22:58 +03:00

Font adaptation has been optimized

This commit is contained in:
Arin Alexander 2020-12-18 00:32:09 +03:00
parent c4ff4c5bae
commit 694800cf3c
2 changed files with 14 additions and 5 deletions

View File

@ -59,7 +59,7 @@ namespace LimeReport{
TextItem::TextItem(QObject *owner, QGraphicsItem *parent) TextItem::TextItem(QObject *owner, QGraphicsItem *parent)
: ContentItemDesignIntf(xmlTag,owner,parent), m_angle(Angle0), m_trimValue(true), m_allowHTML(false), : ContentItemDesignIntf(xmlTag,owner,parent), m_angle(Angle0), m_trimValue(true), m_allowHTML(false),
m_allowHTMLInFields(false), m_replaceCarriageReturns(false), m_followTo(""), m_follower(0), m_textIndent(0), m_allowHTMLInFields(false), m_replaceCarriageReturns(false), m_followTo(""), m_follower(0), m_textIndent(0),
m_textLayoutDirection(Qt::LayoutDirectionAuto), m_hideIfEmpty(false), m_fontLetterSpacing(0) m_textLayoutDirection(Qt::LayoutDirectionAuto), m_hideIfEmpty(false), m_fontLetterSpacing(0), m_adaptedFont(0)
{ {
PageItemDesignIntf* pageItem = dynamic_cast<PageItemDesignIntf*>(parent); PageItemDesignIntf* pageItem = dynamic_cast<PageItemDesignIntf*>(parent);
BaseDesignIntf* parentItem = dynamic_cast<BaseDesignIntf*>(parent); BaseDesignIntf* parentItem = dynamic_cast<BaseDesignIntf*>(parent);
@ -75,7 +75,7 @@ TextItem::TextItem(QObject *owner, QGraphicsItem *parent)
Init(); Init();
} }
TextItem::~TextItem(){} TextItem::~TextItem(){if (m_adaptedFont) delete m_adaptedFont;}
int TextItem::fakeMarginSize() const{ int TextItem::fakeMarginSize() const{
return marginSize()+5; return marginSize()+5;
@ -385,7 +385,7 @@ void TextItem::setTextFont(TextPtr text, const QFont& value) const {
} }
} }
void TextItem::adaptFontSize(TextPtr text) const{ QFont TextItem::adaptFontSize(TextPtr text) const{
QFont _font = transformToSceneFont(font()); QFont _font = transformToSceneFont(font());
do{ do{
setTextFont(text,_font); setTextFont(text,_font);
@ -393,6 +393,7 @@ void TextItem::adaptFontSize(TextPtr text) const{
_font.setPixelSize(_font.pixelSize()-1); _font.setPixelSize(_font.pixelSize()-1);
else break; else break;
} while(text->size().height()>this->height() || text->size().width()>(this->width()) - fakeMarginSize() * 2); } while(text->size().height()>this->height() || text->size().width()>(this->width()) - fakeMarginSize() * 2);
return _font;
} }
int TextItem::underlineLineSize() const int TextItem::underlineLineSize() const
@ -522,7 +523,14 @@ TextItem::TextPtr TextItem::textDocument() const
QFont _font = transformToSceneFont(font()); QFont _font = transformToSceneFont(font());
if (m_adaptFontToSize && (!(m_autoHeight || m_autoWidth))){ if (m_adaptFontToSize && (!(m_autoHeight || m_autoWidth))){
adaptFontSize(text); if (!m_adaptedFont){
m_adaptedFont = new QFont(adaptFontSize(text));
} else {
setTextFont(text,*m_adaptedFont);
if (text->size().height()>this->height() || text->size().width()>(this->width())){
m_adaptedFont = new QFont(adaptFontSize(text));
}
}
} else { } else {
setTextFont(text,_font); setTextFont(text,_font);
} }

View File

@ -200,7 +200,7 @@ protected:
private: private:
void initTextSizes() const; void initTextSizes() const;
void setTextFont(TextPtr text, const QFont &value) const; void setTextFont(TextPtr text, const QFont &value) const;
void adaptFontSize(TextPtr text) const; QFont adaptFontSize(TextPtr text) const;
QString formatDateTime(const QDateTime &value); QString formatDateTime(const QDateTime &value);
QString formatNumber(const double value); QString formatNumber(const double value);
QString formatFieldValue(); QString formatFieldValue();
@ -232,6 +232,7 @@ private:
Qt::LayoutDirection m_textLayoutDirection; Qt::LayoutDirection m_textLayoutDirection;
bool m_hideIfEmpty; bool m_hideIfEmpty;
int m_fontLetterSpacing; int m_fontLetterSpacing;
mutable QFont* m_adaptedFont;
}; };
} }