1 #include <QtGlobal>
2
3 #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
4 #include <QtWidgets>
5 #else
6 #include <QtGui>
7 #endif
8
9 #include "paint-utils.h"
10
fitTextToWidth(const QString & text,const QFont & font,int width)11 QString fitTextToWidth(const QString& text, const QFont& font, int width)
12 {
13 static QString ELLIPSISES = "...";
14
15 QFontMetrics qfm(font);
16 QSize size = qfm.size(0, text);
17 if (size.width() <= width)
18 return text; // it fits, so just display it
19
20 // doesn't fit, so we need to truncate and add ellipses
21 QSize sizeElippses = qfm.size(0, ELLIPSISES); // we need to cut short enough to add these
22 QString s = text;
23 while (s.length() > 0) // never cut shorter than this...
24 {
25 int len = s.length();
26 s = text.left(len-1);
27 size = qfm.size(0, s);
28 if (size.width() <= (width - sizeElippses.width()))
29 break; // we are finally short enough
30 }
31
32 return (s + ELLIPSISES);
33 }
34
zoomFont(const QFont & font_in,double ratio)35 QFont zoomFont(const QFont& font_in, double ratio)
36 {
37 QFont font(font_in);
38
39 if (font.pointSize() > 0) {
40 font.setPointSize((int)(font.pointSize() * ratio));
41 } else {
42 font.setPixelSize((int)(font.pixelSize() * ratio));
43 }
44
45 return font;
46 }
47
changeFontSize(const QFont & font_in,int size)48 QFont changeFontSize(const QFont& font_in, int size)
49 {
50 QFont font(font_in);
51
52 font.setPixelSize(size);
53
54 // if (font.pointSize() > 0) {
55 // font.setPointSize(size);
56 // } else {
57 // font.setPixelSize(size);
58 // }
59
60 return font;
61 }
62
textWidthInFont(const QString text,const QFont & font)63 int textWidthInFont(const QString text, const QFont& font)
64 {
65 QFontMetrics qfm(font);
66 QSize size = qfm.size(0, text);
67
68 return size.width();
69 }
70
textHeightInFont(const QString text,const QFont & font)71 int textHeightInFont(const QString text, const QFont& font)
72 {
73 QFontMetrics qfm(font);
74 QSize size = qfm.size(Qt::TextSingleLine, text);
75
76 return size.height();
77 }
78
79 // it might change when screen moves
80 // QIcon::addFile will add a "@2x" file if it exists.
globalDevicePixelRatio()81 double globalDevicePixelRatio()
82 {
83 #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
84 return qApp->devicePixelRatio();
85 #else
86 return 1.0;
87 #endif
88 }
89