GTK+ CSS 阴影脚本函数

GTK+ CSS shade script function

shade 函数的目的是什么?不幸的是,该功能没有记录。它会影响颜色 属性 的饱和度、灰度、不透明度或色调吗?

shade(hex:string, value:double)

示例

body {
  background: shade(#000, 0.15);
}

h1 {
  color: shade(#ddd, 22.6875);
}

它似乎将十六进制的 RGB luminance 乘以具有一些自定义权重的给定值。

gtk-widgets.css

button {
    background-color: shade(rgb(160,120,100), 0.5);
}

cssshade.cpp

#include <gtkmm.h>

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    auto app = Gtk::Application::create();;

    std::string gladeFile = argv[1];
    auto gladeBuilder = Gtk::Builder::create();
    gladeBuilder->add_from_file(gladeFile);
    app->signal_startup().connect([&]
    {
         for(auto& object: gladeBuilder->get_objects())
         {
            auto widget = Glib::RefPtr<Gtk::Widget>::cast_dynamic(object);
            if(!widget)
                continue;
            auto style = widget->get_style_context();
            auto color = style->get_background_color();
            std::cout<<widget->get_name()<<" "<<color.to_string()<<std::endl;
        }
    });
    app->run();
  return 0;
}

输出:

gtkmm__GtkButton rgb(73,62,57)

这就是为什么所有通道都更改为不同值的原因。