]> git.sur5r.net Git - minitube/blobdiff - src/fontutils.cpp
Upload 3.9.3-2 to unstable
[minitube] / src / fontutils.cpp
index b3418d6d54d695781292d5929cedf1303d9466a4..505e8d91536792728f213ca3e960b47473b8099f 100644 (file)
@@ -1,68 +1,87 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini <flavio.tordini@gmail.com>
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube.  If not, see <http://www.gnu.org/licenses/>.
+
+$END_LICENSE */
+
 #include "fontutils.h"
+#ifdef APP_MAC
+#include "macutils.h"
+#endif
 
-static const int MIN_PIXEL_SIZE = 11;
+namespace {
 
-const QFont FontUtils::small() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*.85);
-      if (font.pixelSize() < MIN_PIXEL_SIZE) font.setPixelSize(MIN_PIXEL_SIZE);
-    }
+QFont createFont(bool isBold, double sizeScale) {
+    QFont font;
+    font.setPointSize(font.pointSize() * sizeScale);
+    font.setBold(isBold);
     return font;
 }
 
-const QFont FontUtils::smallBold() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*.85);
-      font.setBold(true);
-      if (font.pixelSize() < MIN_PIXEL_SIZE) font.setPixelSize(MIN_PIXEL_SIZE);
-    }
+QFont createFontWithMinSize(bool isBold, double sizeScale) {
+    const int minPixels = 11;
+    QFont font = createFont(isBold, sizeScale);
+    if (font.pixelSize() < minPixels) font.setPixelSize(minPixels);
     return font;
 }
 
-const QFont FontUtils::medium() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*1.1);
-    }
+} // namespace
+
+const QFont &FontUtils::small() {
+    static const QFont font = createFontWithMinSize(false, .9);
     return font;
 }
 
-const QFont FontUtils::mediumBold() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*0.9);
-      font.setBold(true);
-    }
+const QFont &FontUtils::smallBold() {
+    static const QFont font = createFontWithMinSize(true, .9);
     return font;
 }
 
-const QFont FontUtils::big() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*1.5);
-    }
+const QFont &FontUtils::medium() {
+    static const QFont font = createFont(false, 1.15);
     return font;
 }
 
-const QFont FontUtils::bigBold() {
-    static QFont font;
-    static bool initialized = false;
-    if (!initialized) {
-      initialized = true;
-      font.setPointSize(font.pointSize()*1.5);
-      font.setBold(true);
-    }
+const QFont &FontUtils::mediumBold() {
+    static const QFont font = createFont(true, 1.15);
     return font;
 }
+
+const QFont &FontUtils::big() {
+    static const QFont font = createFont(false, 1.5);
+    return font;
+}
+
+const QFont &FontUtils::bigBold() {
+    static const QFont font = createFont(true, 1.5);
+    return font;
+}
+
+QFont FontUtils::light(int pointSize) {
+#ifdef APP_MAC
+    QVariant v = mac::lightFont(pointSize);
+    if (!v.isNull()) return qvariant_cast<QFont>(v);
+#endif
+    QFont f;
+#ifdef APP_WIN
+    f.setFamily(QStringLiteral("Segoe UI Light"));
+#endif
+    f.setPointSize(pointSize);
+    f.setStyleName(QStringLiteral("Light"));
+    f.setWeight(QFont::Light);
+    return f;
+}