provide colors Tools trough LatteCore

pull/18/head
Michail Vourlakos
parent b22a184337
commit dd79d5a0ed

@ -288,7 +288,6 @@ Item{
property: "drawEffects" property: "drawEffects"
when: latteView && latteView.effects when: latteView && latteView.effects
value: LatteCore.WindowSystem.compositingActive value: LatteCore.WindowSystem.compositingActive
&& !root.inConfigureAppletsMode
&& (((root.blurEnabled && root.useThemePanel) && (((root.blurEnabled && root.useThemePanel)
|| (root.blurEnabled && root.forceSolidPanel && LatteCore.WindowSystem.compositingActive)) || (root.blurEnabled && root.forceSolidPanel && LatteCore.WindowSystem.compositingActive))
&& (!root.inStartup || inForceHiding || inTempHiding)) && (!root.inStartup || inForceHiding || inTempHiding))

@ -5,6 +5,7 @@ set(lattecoreplugin_SRCS
environment.cpp environment.cpp
iconitem.cpp iconitem.cpp
quickwindowsystem.cpp quickwindowsystem.cpp
tools.cpp
types.h types.h
) )

@ -24,6 +24,7 @@
#include "environment.h" #include "environment.h"
#include "iconitem.h" #include "iconitem.h"
#include "quickwindowsystem.h" #include "quickwindowsystem.h"
#include "tools.h"
#include <types.h> #include <types.h>
@ -37,5 +38,6 @@ void LatteCorePlugin::registerTypes(const char *uri)
qmlRegisterUncreatableType<Latte::Types>(uri, 0, 2, "Types", "Latte Types uncreatable"); qmlRegisterUncreatableType<Latte::Types>(uri, 0, 2, "Types", "Latte Types uncreatable");
qmlRegisterType<Latte::IconItem>(uri, 0, 2, "IconItem"); qmlRegisterType<Latte::IconItem>(uri, 0, 2, "IconItem");
qmlRegisterSingletonType<Latte::Environment>(uri, 0, 2, "Environment", &Latte::environment_qobject_singletontype_provider); qmlRegisterSingletonType<Latte::Environment>(uri, 0, 2, "Environment", &Latte::environment_qobject_singletontype_provider);
qmlRegisterSingletonType<Latte::Tools>(uri, 0, 2, "Tools", &Latte::tools_qobject_singletontype_provider);
qmlRegisterSingletonType<Latte::QuickWindowSystem>(uri, 0, 2, "WindowSystem", &Latte::windowsystem_qobject_singletontype_provider); qmlRegisterSingletonType<Latte::QuickWindowSystem>(uri, 0, 2, "WindowSystem", &Latte::windowsystem_qobject_singletontype_provider);
} }

@ -0,0 +1,78 @@
/*
* Copyright 2020 Michail Vourlakos <mvourlakos@gmail.com>
*
* This file is part of Latte-Dock
*
* Latte-Dock 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 2 of
* the License, or (at your option) any later version.
*
* Latte-Dock 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 this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "tools.h"
// Qt
#include <QtMath>
namespace Latte{
Tools::Tools(QObject *parent)
: QObject(parent)
{
}
float Tools::colorBrightness(QColor color)
{
return colorBrightness(color.red(), color.green(), color.blue());
}
float Tools::colorBrightness(QRgb rgb)
{
return colorBrightness(qRed(rgb), qGreen(rgb), qBlue(rgb));
}
float Tools::colorBrightness(float r, float g, float b)
{
float brightness = (r * 299 + g * 587 + b * 114) / 1000;
return brightness;
}
float Tools::colorLumina(QRgb rgb)
{
float r = (float)(qRed(rgb)) / 255;
float g = (float)(qGreen(rgb)) / 255;
float b = (float)(qBlue(rgb)) / 255;
return colorLumina(r, g, b);
}
float Tools::colorLumina(QColor color)
{
return colorLumina(color.redF(), color.greenF(), color.blueF());
}
float Tools::colorLumina(float r, float g, float b)
{
// formula for luminance according to:
// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
float rS = (r <= 0.03928 ? r / 12.92 : qPow(((r + 0.055) / 1.055), 2.4));
float gS = (g <= 0.03928 ? g / 12.92 : qPow(((g + 0.055) / 1.055), 2.4));
float bS = (b <= 0.03928 ? b / 12.92 : qPow(((b + 0.055) / 1.055), 2.4));
float luminosity = 0.2126 * rS + 0.7152 * gS + 0.0722 * bS;
return luminosity;
}
}

@ -0,0 +1,63 @@
/*
* Copyright 2020 Michail Vourlakos <mvourlakos@gmail.com>
*
* This file is part of Latte-Dock
*
* Latte-Dock 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 2 of
* the License, or (at your option) any later version.
*
* Latte-Dock 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 this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef LATTECORETOOLS_H
#define LATTECORETOOLS_H
// Qt
#include <QObject>
#include <QColor>
#include <QQmlEngine>
#include <QJSEngine>
namespace Latte{
class Tools final: public QObject
{
Q_OBJECT
public:
explicit Tools(QObject *parent = nullptr);
public slots:
Q_INVOKABLE float colorBrightness(QColor color);
Q_INVOKABLE float colorLumina(QColor color);
private:
float colorBrightness(QRgb rgb);
float colorBrightness(float r, float g, float b);
float colorLumina(QRgb rgb);
float colorLumina(float r, float g, float b);
};
static QObject *tools_qobject_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine)
Q_UNUSED(scriptEngine)
// NOTE: QML engine is the owner of this resource
return new Tools;
}
}
#endif

@ -24,6 +24,8 @@ import QtQuick.Layouts 1.1
import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.latte.core 0.2 as LatteCore
import "controls" as SettingsControls import "controls" as SettingsControls
import "maxlength" as MaximumLength import "maxlength" as MaximumLength
@ -46,7 +48,7 @@ Item{
property string tooltip: "" property string tooltip: ""
readonly property real textColorBrightness: 150// ColorizerTools.colorBrightness(textColor) readonly property real textColorBrightness: LatteCore.Tools.colorBrightness(textColor)
readonly property bool textColorIsDark: textColorBrightness < 127.5 readonly property bool textColorIsDark: textColorBrightness < 127.5
readonly property color bestContrastedTextColor: { readonly property color bestContrastedTextColor: {

Loading…
Cancel
Save