From 104a491a6767af0562d9619b7f661273adb264e1 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 28 Oct 2017 13:02:51 +0300 Subject: [PATCH] Fixing font problem on Windows. Calc start label scale based on start font size and minimal visible font size. --HG-- branch : develop --- src/libs/vwidgets/global.cpp | 1 + src/libs/vwidgets/global.h | 1 + src/libs/vwidgets/vgraphicssimpletextitem.cpp | 45 +++++++++++-------- src/libs/vwidgets/vgraphicssimpletextitem.h | 2 + src/libs/vwidgets/vscenepoint.cpp | 2 +- 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/libs/vwidgets/global.cpp b/src/libs/vwidgets/global.cpp index 71fe0e689..cf41b9a9f 100644 --- a/src/libs/vwidgets/global.cpp +++ b/src/libs/vwidgets/global.cpp @@ -36,6 +36,7 @@ static const qreal defPointRadiusPixel = (2./*mm*/ / 25.4) * PrintDPI; const qreal widthMainLine = (1.2/*mm*/ / 25.4) * PrintDPI; const qreal widthHairLine = widthMainLine/3.0; +const qreal minVisibleFontSize = 5; qreal SceneScale(QGraphicsScene *scene) { diff --git a/src/libs/vwidgets/global.h b/src/libs/vwidgets/global.h index 9afec52ce..905b0be82 100644 --- a/src/libs/vwidgets/global.h +++ b/src/libs/vwidgets/global.h @@ -33,6 +33,7 @@ extern const qreal widthMainLine; extern const qreal widthHairLine; +extern const qreal minVisibleFontSize; class QGraphicsScene; class QGraphicsItem; diff --git a/src/libs/vwidgets/vgraphicssimpletextitem.cpp b/src/libs/vwidgets/vgraphicssimpletextitem.cpp index 0fd7db601..da049ec3c 100644 --- a/src/libs/vwidgets/vgraphicssimpletextitem.cpp +++ b/src/libs/vwidgets/vgraphicssimpletextitem.cpp @@ -54,19 +54,12 @@ * @param parent parent object. */ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent) - :QGraphicsSimpleTextItem(parent), m_fontSize(0), selectionType(SelectionType::ByMouseRelease), - m_oldScale(VMainGraphicsView::MinScale()) + : QGraphicsSimpleTextItem(parent), + m_fontSize(0), + selectionType(SelectionType::ByMouseRelease), + m_oldScale(1) { - this->setFlag(QGraphicsItem::ItemIsMovable, true); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - this->setAcceptHoverEvents(true); - QFont font = this->font(); - font.setPointSize(font.pointSize()+20); - m_fontSize = font.pointSize(); - this->setFont(font); - setScale(m_oldScale); + Init(); } //--------------------------------------------------------------------------------------------------------------------- @@ -76,14 +69,12 @@ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent) * @param parent parent object. */ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem( const QString & text, QGraphicsItem * parent ) - :QGraphicsSimpleTextItem(text, parent), m_fontSize(0), selectionType(SelectionType::ByMouseRelease), - m_oldScale(VMainGraphicsView::MinScale()) + : QGraphicsSimpleTextItem(text, parent), + m_fontSize(0), + selectionType(SelectionType::ByMouseRelease), + m_oldScale(1) { - this->setFlag(QGraphicsItem::ItemIsMovable, true); - this->setFlag(QGraphicsItem::ItemIsSelectable, true); - this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - this->setAcceptHoverEvents(true); - setScale(m_oldScale); + Init(); } //--------------------------------------------------------------------------------------------------------------------- @@ -319,3 +310,19 @@ void VGraphicsSimpleTextItem::keyReleaseEvent(QKeyEvent *event) } QGraphicsSimpleTextItem::keyReleaseEvent ( event ); } + +//--------------------------------------------------------------------------------------------------------------------- +void VGraphicsSimpleTextItem::Init() +{ + this->setFlag(QGraphicsItem::ItemIsMovable, true); + this->setFlag(QGraphicsItem::ItemIsSelectable, true); + this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus + this->setAcceptHoverEvents(true); + QFont font = this->font(); + font.setPointSize(font.pointSize()+20); + m_fontSize = font.pointSize(); + this->setFont(font); + m_oldScale = minVisibleFontSize / m_fontSize; + setScale(m_oldScale); +} diff --git a/src/libs/vwidgets/vgraphicssimpletextitem.h b/src/libs/vwidgets/vgraphicssimpletextitem.h index 34a739448..72a24dc8c 100644 --- a/src/libs/vwidgets/vgraphicssimpletextitem.h +++ b/src/libs/vwidgets/vgraphicssimpletextitem.h @@ -88,6 +88,8 @@ private: qint32 m_fontSize; SelectionType selectionType; qreal m_oldScale; + + void Init(); }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/vscenepoint.cpp b/src/libs/vwidgets/vscenepoint.cpp index ffb381f23..4eccd33cd 100644 --- a/src/libs/vwidgets/vscenepoint.cpp +++ b/src/libs/vwidgets/vscenepoint.cpp @@ -63,7 +63,7 @@ void VScenePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio { const qreal scale = SceneScale(scene()); - if (m_namePoint->BaseFontSize()*scale < 5) + if (m_namePoint->BaseFontSize()*scale < minVisibleFontSize) { m_namePoint->setVisible(false); m_lineName->setVisible(false);