diff --git a/app/config/config.cpp b/app/config/config.cpp index 6870ad296..a5d031c47 100644 --- a/app/config/config.cpp +++ b/app/config/config.cpp @@ -83,6 +83,16 @@ void Config::SetDefaults() config_map_["DropWithoutSequenceBehavior"] = TimelineWidget::kDWSAsk; config_map_["Loop"] = false; + config_map_["NodeCatColor0"] = QVariant::fromValue(Color(0.25, 0.25, 0.65)); + config_map_["NodeCatColor1"] = QVariant::fromValue(Color(0.6, 0.6, 0.85)); + config_map_["NodeCatColor2"] = QVariant::fromValue(Color(0.75, 0.75, 0.45)); + config_map_["NodeCatColor3"] = QVariant::fromValue(Color(0.25, 0.5, 0.25)); + config_map_["NodeCatColor4"] = QVariant::fromValue(Color(0.25, 0.65, 0.25)); + config_map_["NodeCatColor5"] = QVariant::fromValue(Color(0.35, 0.35, 0.35)); + config_map_["NodeCatColor6"] = QVariant::fromValue(Color(0.45, 0.45, 0.45)); + config_map_["NodeCatColor7"] = QVariant::fromValue(Color(0.7, 0.3, 0.7)); + config_map_["NodeCatColor8"] = QVariant::fromValue(Color(0.85, 0.65, 0.4)); + config_map_["AudioOutput"] = QString(); config_map_["AudioInput"] = QString(); diff --git a/app/render/color.cpp b/app/render/color.cpp index 14f7e62e1..1a520b175 100644 --- a/app/render/color.cpp +++ b/app/render/color.cpp @@ -207,6 +207,11 @@ QColor Color::toQColor() const return c; } +float Color::GetRoughLuminance() const +{ + return (2*red()+blue()+3*green())/6.0f; +} + const Color &Color::operator+=(const Color &rhs) { for (int i=0;i 0.66) { + if (GetSelectedColor().GetRoughLuminance() > 0.66) { return Qt::black; } else { return Qt::white; diff --git a/app/widget/nodeview/nodeviewitem.cpp b/app/widget/nodeview/nodeviewitem.cpp index 45eafa7e2..763b10281 100644 --- a/app/widget/nodeview/nodeviewitem.cpp +++ b/app/widget/nodeview/nodeviewitem.cpp @@ -28,6 +28,7 @@ #include "common/flipmodifiers.h" #include "common/qtutils.h" +#include "config/config.h" #include "core.h" #include "nodeview.h" #include "nodeviewscene.h" @@ -260,8 +261,11 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti // Draw the titlebar if (!hide_titlebar_ && node_) { + Color node_color = Config::Current()[QStringLiteral("NodeCatColor%1") + .arg(node_->Category().first())].value(); + painter->setPen(Qt::black); - painter->setBrush(css_proxy_.TitleBarColor()); + painter->setBrush(node_color.toQColor()); painter->drawRect(title_bar_rect_); @@ -293,6 +297,12 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti } } + if (node_color.GetRoughLuminance() > 0.66) { + painter->setPen(Qt::black); + } else { + painter->setPen(Qt::white); + } + // Draw the text in a rect (the rect is sized around text already in the constructor) painter->drawText(title_bar_rect_, Qt::AlignCenter, @@ -307,7 +317,7 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti if (option->state & QStyle::State_Selected) { border_pen.setColor(app_pal.color(QPalette::Highlight)); } else { - border_pen.setColor(css_proxy_.BorderColor()); + border_pen.setColor(Qt::black); } painter->setPen(border_pen); diff --git a/app/widget/nodeview/nodeviewitem.h b/app/widget/nodeview/nodeviewitem.h index 0a02b7e3e..226929872 100644 --- a/app/widget/nodeview/nodeviewitem.h +++ b/app/widget/nodeview/nodeviewitem.h @@ -130,13 +130,6 @@ private: */ QList node_inputs_; - /** - * @brief A QWidget that can receive CSS properties that NodeViewItem can use - * - * \see NodeViewItemWidget - */ - NodeViewItemWidget css_proxy_; - /** * @brief Rectangle of the Node's title bar (equal to rect() when collapsed) */