---
 wmifs/wmifs.1 |  3 +++
 wmifs/wmifs.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)

diff --git a/wmifs/wmifs.1 b/wmifs/wmifs.1
index d22b954..42f4b1b 100644
--- a/wmifs/wmifs.1
+++ b/wmifs/wmifs.1
@@ -54,6 +54,9 @@ Scrolling interval, in seconds (default: 5)
 .TP
 .B \-w
 Use the waveform graph instead of the classic one.
+.TP
+.B \-c <color>
+Set color.
 
 .SH FILES
 .TP
diff --git a/wmifs/wmifs.c b/wmifs/wmifs.c
index 5a080da..1344405 100644
--- a/wmifs/wmifs.c
+++ b/wmifs/wmifs.c
@@ -255,6 +255,8 @@ int         WaveForm = 0;
 int            LockMode = 0;
 int            SampleInt = DEFAULT_SAMPLE_INTERVAL;
 int            ScrollSpeed = CHECK_INTERFACE_INTERVAL;
+XpmIcon wmgen;
+char color[256];
 
   /*****************/
  /* PPP variables */
@@ -296,6 +298,7 @@ int main(int argc, char *argv[])
 
        int             i;
 
+       color[0] = 0;
 
        /* Parse Command Line */
 
@@ -304,6 +307,12 @@ int main(int argc, char *argv[])
 
                if (*arg == '-') {
                        switch (arg[1]) {
+                       case 'c' :
+                               if (argc > i+1) {
+                                       strcpy(color, argv[i+1]);
+                                       i++;
+                               }
+                               break;
                        case 'd':
                                if (strcmp(arg+1, "display")) {
                                        usage();
@@ -344,6 +353,21 @@ int main(int argc, char *argv[])
        return 0;
 }
 
+Pixel scale_pixel(Pixel pixel, float scale)
+{
+       int red, green, blue;
+
+       red = pixel / ( 1 << 16 );
+       green = pixel % (1 << 16) / (1 << 8);
+       blue = pixel % (1 << 8);
+
+       red *= scale;
+       green *= scale;
+       blue *= scale;
+
+       return red * (1 << 16) + green * (1 << 8) + blue;
+}
+
 
/*******************************************************************************\
 |* wmifs_routine                                                               
                                                           *|
 
\*******************************************************************************/
@@ -443,6 +467,54 @@ void wmifs_routine(int argc, char **argv)
 
        parse_rcfile("/etc/wmifsrc.fixed", wmifs_keys);
 
+       /* set user-defined colors */
+       if (color[0] != 0) {
+               Window  Root;
+               XColor col;
+               XWindowAttributes attributes;
+               int screen;
+               Pixel pixel;
+#define NUMSYMBOLS 4
+               XpmColorSymbol user_color[NUMSYMBOLS] = {
+                       {NULL, "#2081B2CAAEBA", 0}, /* + */
+                       {NULL, "#28A23CF338E3", 0}, /* O */
+                       {NULL, "#000049244103", 0}, /* @ */
+                       {NULL, "#18618A288617", 0}, /* # */
+                        };
+
+
+               /* code based on GetColor() from wmgeneral.c */
+               /* we need a temporary display to parse the color */
+               display = XOpenDisplay(NULL);
+               screen = DefaultScreen(display);
+               Root = RootWindow(display, screen);
+               XGetWindowAttributes(display, Root, &attributes);
+
+               col.pixel = 0;
+               if (!XParseColor(display, attributes.colormap, color, &col)) {
+                       fprintf(stderr, "wmtime: can't parse %s.\n", color);
+                       goto draw_window;
+               } else if (!XAllocColor(display, attributes.colormap, &col)) {
+                       fprintf(stderr, "wmtime: can't allocate %s.\n", color);
+                       goto draw_window;
+               }
+
+               pixel = col.pixel;
+
+               /* replace colors from wmtime-master.xpm */
+               user_color[0].pixel = pixel;
+               user_color[1].pixel = scale_pixel(pixel, .3);
+               user_color[2].pixel = scale_pixel(pixel, .4);
+               user_color[3].pixel = scale_pixel(pixel, .8);
+
+               wmgen.attributes.valuemask |= XpmColorSymbols;
+               wmgen.attributes.numsymbols = NUMSYMBOLS;
+               wmgen.attributes.colorsymbols = user_color;
+
+               XCloseDisplay(display);
+       }
+
+draw_window:
        openXwindow(argc, argv, wmifs_master_xpm, (char*)wmifs_mask_bits, 
wmifs_mask_width, wmifs_mask_height);
 
        /* > Button */
@@ -937,6 +1009,7 @@ void usage(void)
        fprintf(stderr, "\t-s <interval>\tscrolling interval, in seconds 
(default: 5)\n");
        fprintf(stderr, "\t-v\tprint the version number\n");
        fprintf(stderr, "\t-w\twaveform load\n");
+       fprintf(stderr, "\t-c <color>\tset color\n");
        fprintf(stderr, "\n");
 }
 
-- 
2.1.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to