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