在 fuzzyflakes 屏幕保护程序中更改实际的薄片颜色

标签 c linux x11 screensaver

我一直在尝试破解 fuzzyflakes 屏幕保护程序,以便在选择特定颜色(颜色 #A9D691)时将薄片的颜色更改为白色。我似乎无法弄清楚该怎么做(我对这些东西有点菜鸟)。

我看过 code看起来薄片的颜色设置在 FuzzyFlakesInit() 函数的末尾附近,就在这里:

Flake.ForeColor = FuzzyFlakesColorResource(Flake.Colors.Fore);
Flake.BackColor = FuzzyFlakesColorResource(Flake.Colors.Back);
Flake.BordColor = FuzzyFlakesColorResource(Flake.Colors.Bord);

Flake.GCValues.foreground = Flake.ForeColor;
Flake.GCValues.background = Flake.BackColor;

我要做的是首先检查是否设置了特定颜色,如果设置了,则将 Flake.Colors.Fore 变量设置为白色。我试过使用这样的代码:

if (flake->Colors.Fore == (char) "#A9D691") {
         flake->ForeColor = FuzzyFlakesColorResource(flake, "white");
          } else {
        flake->ForeColor = FuzzyFlakesColorResource(flake, flake->Colors.Fore);
       } 
flake->BackColor = FuzzyFlakesColorResource(flake, flake->Colors.Back);
flake->BordColor = FuzzyFlakesColorResource(flake, flake->Colors.Bord);

遗憾的是,像这样的简单 hack 不起作用。所以我不知道我是否必须将“#A9D691”转换为其他内容或其他内容,因为 FuzzyFlakesColorHelper() 函数似乎已经设置了这些变量。

最佳答案

if (flake->Colors.Fore == (char) "#A9D691")

将颜色字符串与指向字符串文字 "#A9D691" 的指针进行比较,转换为 char,它从不返回 true。你想比较字符串的值,所以使用 strcmp

if (strcmp(flake->Colors.Fore, "#A9D691") == 0)

关于在 fuzzyflakes 屏幕保护程序中更改实际的薄片颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532004/

相关文章:

linux - 一个输出文件的更多命令?

linux - 为什么 X11 Composite 扩展与 Stereo 视觉效果不兼容?

c++ - X11 应用程序的最佳实践 - 每个应用程序或每个窗口一个 XOpenDisplay?

c - 为什么这些括号在C语言中给出不同的答案?

java.lang.UnsatisfiedLinkError : TestJni. print(LA;)V 错误在 Ubuntu 上

linux - 使用 grep 覆盖其当前文件

同时读取单个文件

x11 - 如何设置在 xmonad 中的 key 发布时发生的操作?

C - 如何创建一个函数,只需提供文件名即可找到它必须使用的文件的位置? ( Windows )

c - 为什么那些函数调用没有优化?