File indexing completed on 2024-06-16 04:16:05

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "KisAnimTimelineColors.h"
0008 
0009 #include <QApplication>
0010 #include <QColor>
0011 #include <QBrush>
0012 #include <QPalette>
0013 #include <QFont>
0014 #include <QFontMetrics>
0015 
0016 #include "kis_debug.h"
0017 #include "krita_utils.h"
0018 
0019 #include <QGlobalStatic>
0020 Q_GLOBAL_STATIC(KisAnimTimelineColors, s_instance)
0021 
0022 
0023 KisAnimTimelineColors::KisAnimTimelineColors()
0024 {
0025 }
0026 
0027 KisAnimTimelineColors::~KisAnimTimelineColors()
0028 {
0029 }
0030 
0031 KisAnimTimelineColors* KisAnimTimelineColors::instance()
0032 {
0033     return s_instance;
0034 }
0035 
0036 QColor KisAnimTimelineColors::selectorColor() const
0037 {
0038     return QColor(223, 148, 51);
0039 }
0040 
0041 QColor KisAnimTimelineColors::selectionColor() const
0042 {
0043     //return qApp->palette().color(QPalette::Highlight);
0044     return selectorColor();
0045 }
0046 
0047 QColor KisAnimTimelineColors::activeLayerBackground() const
0048 {
0049     QColor color =  qApp->palette().color(QPalette::Highlight);
0050     return color;
0051 }
0052 
0053 QBrush KisAnimTimelineColors::headerEmpty() const
0054 {
0055     return qApp->palette().brush(QPalette::Button);
0056 }
0057 
0058 QBrush KisAnimTimelineColors::headerCachedFrame() const
0059 {
0060     QColor bgColor = qApp->palette().color(QPalette::Base);
0061     int darkenCoeff = bgColor.value() > 128 ? 150 : 50;
0062     return headerEmpty().color().darker(darkenCoeff);
0063 }
0064 
0065 QBrush KisAnimTimelineColors::headerActive() const
0066 {
0067     return selectorColor();
0068 }
0069 
0070 QColor KisAnimTimelineColors::onionSkinsSliderEnabledColor() const
0071 {
0072     return qApp->palette().color(QPalette::Highlight);
0073 }
0074 
0075 QColor KisAnimTimelineColors::onionSkinsSliderDisabledColor() const
0076 {
0077     return qApp->palette().color(QPalette::Disabled, QPalette::HighlightedText);
0078 }
0079 
0080 QColor KisAnimTimelineColors::onionSkinsButtonColor() const
0081 {
0082     QColor bgColor = qApp->palette().color(QPalette::Base);
0083     const int lighterCoeff = bgColor.value() > 128 ? 120 : 80;
0084     return qApp->palette().color(QPalette::Highlight).lighter(lighterCoeff);
0085 }
0086 
0087 QFont KisAnimTimelineColors::getOnionSkinsFont(const QString &maxString, const QSize &availableSize) const
0088 {
0089     QFont font = qApp->font();
0090 
0091     while(font.pointSize() > 8) {
0092         QFontMetrics fm(font);
0093 
0094         QRect rc = fm.boundingRect(maxString);
0095 
0096         if (rc.width() > availableSize.width() ||
0097             rc.height() > availableSize.height()) {
0098 
0099             font.setPointSize(font.pointSize() - 1);
0100         } else {
0101             break;
0102         }
0103     }
0104 
0105     return font;
0106 }