X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Ffontutils.cpp;h=505e8d91536792728f213ca3e960b47473b8099f;hb=434d88418722fd7717038e44bd74271ca1d92771;hp=05384b8712530c656100863d7457f50ea04ade75;hpb=7b529d6a918efe39ca6d63201fcdb954a3c881b4;p=minitube diff --git a/src/fontutils.cpp b/src/fontutils.cpp index 05384b8..505e8d9 100644 --- a/src/fontutils.cpp +++ b/src/fontutils.cpp @@ -1,43 +1,87 @@ +/* $BEGIN_LICENSE + +This file is part of Minitube. +Copyright 2009, Flavio Tordini + +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 . + +$END_LICENSE */ + #include "fontutils.h" +#ifdef APP_MAC +#include "macutils.h" +#endif + +namespace { + +QFont createFont(bool isBold, double sizeScale) { + QFont font; + font.setPointSize(font.pointSize() * sizeScale); + font.setBold(isBold); + return font; +} + +QFont createFontWithMinSize(bool isBold, double sizeScale) { + const int minPixels = 11; + QFont font = createFont(isBold, sizeScale); + if (font.pixelSize() < minPixels) font.setPixelSize(minPixels); + return font; +} + +} // namespace + +const QFont &FontUtils::small() { + static const QFont font = createFontWithMinSize(false, .9); + return font; +} -const QFont FontUtils::small() { - static QFont font; - static bool initialized = false; - if (!initialized) { - initialized = true; - font.setPointSize(font.pointSize()*.85); - } +const QFont &FontUtils::smallBold() { + static const QFont font = createFontWithMinSize(true, .9); 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); - } +const QFont &FontUtils::medium() { + static const QFont font = createFont(false, 1.15); 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::mediumBold() { + static const QFont font = createFont(true, 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::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(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; +}