mirror of
				https://github.com/fralx/LimeReport.git
				synced 2025-10-31 05:11:56 +03:00 
			
		
		
		
	Font adaptation has been optimized
This commit is contained in:
		| @@ -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); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -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; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user