X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Ffontutils.cpp;h=505e8d91536792728f213ca3e960b47473b8099f;hb=ccc918169d49d046c29001c21c492dfbbde063aa;hp=b3418d6d54d695781292d5929cedf1303d9466a4;hpb=2c530dd73ae4db20945c152334ab9897ec9b91af;p=minitube diff --git a/src/fontutils.cpp b/src/fontutils.cpp index b3418d6..505e8d9 100644 --- a/src/fontutils.cpp +++ b/src/fontutils.cpp @@ -1,68 +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 -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(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; +}