As part of the process, some #defines were turned into enums.  Also, the *_COL
1 << *_COL is used when needed.  This brings the code for colors in line with
the code for textures, and allows us to use them as array indices to improve
readability, e.g., colorOptions[MTITLE_COL] instead of colorOptions[3].
---
 WPrefs.app/Appearance.c | 277 ++++++++++++++++++++++++++++++------------------
 1 file changed, 171 insertions(+), 106 deletions(-)

diff --git a/WPrefs.app/Appearance.c b/WPrefs.app/Appearance.c
index 1db0fb0..b04909b 100644
--- a/WPrefs.app/Appearance.c
+++ b/WPrefs.app/Appearance.c
@@ -306,28 +306,38 @@ static const struct {
        { "WorkspaceBack", "(solid, black)", N_("[Background]") }
 };
 
-#define RESIZEBAR_BEVEL        -1
-#define MENU_BEVEL     -2
-
-#define TEXPREV_WIDTH  40
-#define TEXPREV_HEIGHT 24
-
-#define MSTYLE_NORMAL  0
-#define MSTYLE_SINGLE  1
-#define MSTYLE_FLAT    2
-
-#define FTITLE_COL     (1<<0)
-#define UTITLE_COL     (1<<1)
-#define OTITLE_COL     (1<<2)
-#define MTITLE_COL     (1<<3)
-#define MITEM_COL      (1<<4)
-#define MDISAB_COL     (1<<5)
-#define MHIGH_COL      (1<<6)
-#define MHIGHT_COL     (1<<7)
-#define ICONT_COL      (1<<8)
-#define ICONB_COL      (1<<9)
-#define CLIP_COL       (1<<10)
-#define CCLIP_COL      (1<<11)
+enum {
+       RESIZEBAR_BEVEL = -1,
+       MENU_BEVEL = -2
+};
+
+enum {
+       TEXPREV_WIDTH = 40,
+       TEXPREV_HEIGHT = 24
+};
+
+enum {
+       MSTYLE_NORMAL,
+       MSTYLE_SINGLE,
+       MSTYLE_FLAT
+};
+
+enum {
+       FTITLE_COL,
+       UTITLE_COL,
+       OTITLE_COL,
+       MTITLE_COL,
+       MITEM_COL,
+       MDISAB_COL,
+       MHIGH_COL,
+       MHIGHT_COL,
+       FBORDER_COL,
+       FSBORDER_COL,
+       ICONT_COL,
+       ICONB_COL,
+       CLIP_COL,
+       CCLIP_COL
+};
 
 static const struct {
        const char *key;
@@ -341,10 +351,12 @@ static const struct {
        { "MenuDisabledColor", "#616161" },
        { "HighlightColor", "white" },
        { "HighlightTextColor", "black" },
-       { "IconTitleColor", "white" },
-       { "IconTitleBack", "black" },
-       { "ClipTitleColor", "black" },
-       { "CClipTitleColor", "#454045" }
+       { "FrameBorderColor", "black" },
+       { "FrameSelectedBorderColor", "white" }/* , */
+       /* { "IconTitleColor", "white" }, */
+       /* { "IconTitleBack", "black" }, */
+       /* { "ClipTitleColor", "black" }, */
+       /* { "CClipTitleColor", "#454045" } */
 };
 
 static WMRect previewPositions[] = {
@@ -376,6 +388,8 @@ static WMRect previewColorPositions[] = {
        {{30, 160}, {90, 20}},
        {{30, 180}, {90, 20}},
        {{30, 200}, {90, 20}},
+       {{30, 40}, {190, 20}},
+       {{30, 10}, {190, 20}},
        {{155, 130}, {64, 64}},
        {{155, 130}, {64, 64}},
        {{155, 130}, {64, 64}},
@@ -433,14 +447,10 @@ static void drawResizebarBevel(RImage * img)
 {
        RColor light;
        RColor dark;
-       RColor black;
        int width = img->width;
        int height = img->height;
        int cwidth = 28;
 
-       black.alpha = 255;
-       black.red = black.green = black.blue = 0;
-
        light.alpha = 0;
        light.red = light.green = light.blue = 80;
 
@@ -456,9 +466,6 @@ static void drawResizebarBevel(RImage * img)
        ROperateLine(img, RSubtractOperation, width - cwidth - 2, 2, width - 
cwidth - 2, height - 1, &dark);
        ROperateLine(img, RAddOperation, width - cwidth - 1, 2, width - cwidth 
- 1, height - 1, &light);
 
-       RDrawLine(img, 0, height - 1, width - 1, height - 1, &black);
-       RDrawLine(img, 0, 0, 0, height - 1, &black);
-       RDrawLine(img, width - 1, 0, width - 1, height - 1, &black);
 }
 
 static void drawMenuBevel(RImage * img)
@@ -743,7 +750,6 @@ static void updatePreviewBox(_Panel * panel, int elements)
        Pixmap pix;
        GC gc;
        int colorUpdate = 0;
-       WMColor *black = WMBlackColor(scr);
 
        gc = XCreateGC(dpy, WMWidgetXID(panel->parent), 0, NULL);
 
@@ -778,46 +784,23 @@ static void updatePreviewBox(_Panel * panel, int elements)
 
        if (elements & (1 << PFOCUSED)) {
                renderPreview(panel, gc, PFOCUSED, RBEV_RAISED2);
-               XDrawRectangle(dpy, panel->preview, WMColorGC(black),
-                              previewPositions[PFOCUSED].pos.x - 1,
-                              previewPositions[PFOCUSED].pos.y - 1,
-                              previewPositions[PFOCUSED].size.width, 
previewPositions[PFOCUSED].size.height);
-               XDrawRectangle(dpy, panel->previewNoText, WMColorGC(black),
-                              previewPositions[PFOCUSED].pos.x - 1,
-                              previewPositions[PFOCUSED].pos.y - 1,
-                              previewPositions[PFOCUSED].size.width, 
previewPositions[PFOCUSED].size.height);
-               colorUpdate |= FTITLE_COL;
+               colorUpdate |= 1 << FTITLE_COL | 1 << FSBORDER_COL;
        }
        if (elements & (1 << PUNFOCUSED)) {
                renderPreview(panel, gc, PUNFOCUSED, RBEV_RAISED2);
-               XDrawRectangle(dpy, panel->preview, WMColorGC(black),
-                              previewPositions[PUNFOCUSED].pos.x - 1,
-                              previewPositions[PUNFOCUSED].pos.y - 1,
-                              previewPositions[PUNFOCUSED].size.width, 
previewPositions[PUNFOCUSED].size.height);
-               XDrawRectangle(dpy, panel->previewNoText, WMColorGC(black),
-                              previewPositions[PUNFOCUSED].pos.x - 1,
-                              previewPositions[PUNFOCUSED].pos.y - 1,
-                              previewPositions[PUNFOCUSED].size.width, 
previewPositions[PUNFOCUSED].size.height);
-               colorUpdate |= UTITLE_COL;
+               colorUpdate |= 1 << UTITLE_COL | 1 << FBORDER_COL;
        }
        if (elements & (1 << POWNER)) {
                renderPreview(panel, gc, POWNER, RBEV_RAISED2);
-               XDrawRectangle(dpy, panel->preview, WMColorGC(black),
-                              previewPositions[POWNER].pos.x - 1,
-                              previewPositions[POWNER].pos.y - 1,
-                              previewPositions[POWNER].size.width, 
previewPositions[POWNER].size.height);
-               XDrawRectangle(dpy, panel->previewNoText, WMColorGC(black),
-                              previewPositions[POWNER].pos.x - 1,
-                              previewPositions[POWNER].pos.y - 1,
-                              previewPositions[POWNER].size.width, 
previewPositions[POWNER].size.height);
-               colorUpdate |= OTITLE_COL;
+               colorUpdate |= 1 << OTITLE_COL | 1 << FBORDER_COL;
        }
        if (elements & (1 << PRESIZEBAR)) {
                renderPreview(panel, gc, PRESIZEBAR, RESIZEBAR_BEVEL);
+               colorUpdate |= 1 << FBORDER_COL;
        }
        if (elements & (1 << PMTITLE)) {
                renderPreview(panel, gc, PMTITLE, RBEV_RAISED2);
-               colorUpdate |= MTITLE_COL;
+               colorUpdate |= 1 << MTITLE_COL | 1 << FBORDER_COL;
        }
        if (elements & (1 << PMITEM)) {
                WMListItem *item;
@@ -841,14 +824,9 @@ static void updatePreviewBox(_Panel * panel, int elements)
 
                XFreePixmap(dpy, pix);
 
-               colorUpdate |= MITEM_COL | MDISAB_COL | MHIGH_COL | MHIGHT_COL;
-       }
-       if (elements & (1 << PMITEM | 1 << PMTITLE)) {
-               XDrawLine(dpy, panel->preview, gc, 29, 120, 29, 120 + 20 * 4 + 
20);
-               XDrawLine(dpy, panel->preview, gc, 29, 119, 119, 119);
-
-               XDrawLine(dpy, panel->previewNoText, gc, 29, 120, 29, 120 + 20 
* 4 + 20);
-               XDrawLine(dpy, panel->previewNoText, gc, 29, 119, 119, 119);
+               colorUpdate |= 1 << MITEM_COL | 1 << MDISAB_COL |
+                       1 << MHIGH_COL | 1 << MHIGHT_COL |
+                       1 << FBORDER_COL;
        }
        if (elements & (1 << PICON)) {
                WMListItem *item;
@@ -859,7 +837,8 @@ static void updatePreviewBox(_Panel * panel, int elements)
 
                renderPreview(panel, gc, PICON, titem->ispixmap ? 0 : 
RBEV_RAISED3);
 
-               colorUpdate |= ICONT_COL | ICONB_COL | CLIP_COL | CCLIP_COL;
+               colorUpdate |= 1 << ICONT_COL | 1 << ICONB_COL |
+                       1 << CLIP_COL | 1 << CCLIP_COL;
        }
 
        if (colorUpdate)
@@ -868,7 +847,6 @@ static void updatePreviewBox(_Panel * panel, int elements)
                WMRedisplayWidget(panel->prevL);
 
        XFreeGC(dpy, gc);
-       WMReleaseColor(black);
 }
 
 static void cancelNewTexture(void *data)
@@ -1386,6 +1364,8 @@ static void changeColorPage(WMWidget * w, void *data)
                {5, 160},
                {5, 180},
                {5, 180},
+               {5, 40},
+               {5, 10},
                {130, 140},
                {130, 140},
                {130, 140},
@@ -1446,62 +1426,145 @@ static void updateColorPreviewBox(_Panel * panel, int 
elements)
 
        d = panel->preview;
        pnot = panel->previewNoText;
-       gc = WMColorGC(panel->colors[0]);
+       gc = WMColorGC(panel->colors[FTITLE_COL]);
 
-       if (elements & FTITLE_COL) {
+       if (elements & (1 << FTITLE_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 10, 190, 20, 30, 10);
-               paintText(scr, d, panel->colors[0], panel->boldFont, 30, 10, 
190, 20,
+               paintText(scr, d, panel->colors[FTITLE_COL],
+                         panel->boldFont, 30, 10, 190, 20,
                          panel->titleAlignment, _("Focused Window"));
        }
-       if (elements & UTITLE_COL) {
+       if (elements & (1 << UTITLE_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 40, 190, 20, 30, 40);
-               paintText(scr, d, panel->colors[1], panel->boldFont, 30, 40, 
190, 20,
-                         panel->titleAlignment, _("Unfocused Window"));
+               paintText(scr, d, panel->colors[UTITLE_COL],
+                         panel->boldFont, 30, 40, 190, 20,
+                         panel->titleAlignment,
+                         _("Unfocused Window"));
        }
-       if (elements & OTITLE_COL) {
+       if (elements & (1 << OTITLE_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 70, 190, 20, 30, 70);
-               paintText(scr, d, panel->colors[2], panel->boldFont, 30, 70, 
190, 20,
-                         panel->titleAlignment, _("Owner of Focused Window"));
+               paintText(scr, d, panel->colors[OTITLE_COL],
+                         panel->boldFont, 30, 70, 190, 20,
+                         panel->titleAlignment,
+                         _("Owner of Focused Window"));
        }
-       if (elements & MTITLE_COL) {
+       if (elements & (1 << MTITLE_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 120, 90, 20, 30, 120);
-               paintText(scr, d, panel->colors[3], panel->boldFont, 30, 120, 
90, 20, WALeft, _("Menu Title"));
+               paintText(scr, d, panel->colors[MTITLE_COL],
+                         panel->boldFont, 30, 120, 90, 20, WALeft,
+                         _("Menu Title"));
        }
-       if (elements & MITEM_COL) {
+       if (elements & (1 << MITEM_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 140, 90, 20, 30, 140);
-               paintText(scr, d, panel->colors[4], panel->normalFont, 30, 140, 
90, 20, WALeft, _("Normal Item"));
+               paintText(scr, d, panel->colors[MITEM_COL],
+                         panel->normalFont, 30, 140, 90, 20, WALeft,
+                         _("Normal Item"));
                XCopyArea(dpy, pnot, d, gc, 30, 200, 90, 20, 30, 200);
-               paintText(scr, d, panel->colors[4], panel->normalFont, 30, 200, 
90, 20, WALeft, _("Normal Item"));
+               paintText(scr, d, panel->colors[MITEM_COL],
+                         panel->normalFont, 30, 200, 90, 20, WALeft,
+                         _("Normal Item"));
        }
-       if (elements & MDISAB_COL) {
+       if (elements & (1 << MDISAB_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 160, 90, 20, 30, 160);
-               paintText(scr, d, panel->colors[5], panel->normalFont, 30, 160, 
90, 20,
-                         WALeft, _("Disabled Item"));
-       }
-       if (elements & MHIGH_COL) {
-               XFillRectangle(WMScreenDisplay(scr), d, 
WMColorGC(panel->colors[6]), 31, 181, 87, 17);
-               XFillRectangle(WMScreenDisplay(scr), pnot, 
WMColorGC(panel->colors[6]), 31, 181, 87, 17);
-               elements |= MHIGHT_COL;
-       }
-       if (elements & MHIGHT_COL) {
+               paintText(scr, d, panel->colors[MDISAB_COL],
+                         panel->normalFont, 30, 160, 90, 20, WALeft,
+                         _("Disabled Item"));
+       }
+       if (elements & (1 << MHIGH_COL)) {
+               XFillRectangle(WMScreenDisplay(scr), d,
+                              WMColorGC(panel->colors[MHIGH_COL]),
+                              31, 181, 87, 17);
+               XFillRectangle(WMScreenDisplay(scr), pnot,
+                              WMColorGC(panel->colors[MHIGH_COL]),
+                              31, 181, 87, 17);
+               elements |= 1 << MHIGHT_COL;
+       }
+       if (elements & (1 << MHIGHT_COL)) {
                XCopyArea(dpy, pnot, d, gc, 30, 180, 90, 20, 30, 180);
-               paintText(scr, d, panel->colors[7], panel->normalFont, 30, 180, 
90, 20, WALeft, _("Highlighted"));
+               paintText(scr, d, panel->colors[MHIGHT_COL],
+                         panel->normalFont, 30, 180, 90, 20, WALeft,
+                         _("Highlighted"));
+       }
+       if (elements & (1 << FBORDER_COL)) {
+               XDrawRectangle(dpy, pnot,
+                              WMColorGC(panel->colors[FBORDER_COL]),
+                              29, 39, 190, 20);
+               XDrawRectangle(dpy, d,
+                              WMColorGC(panel->colors[FBORDER_COL]),
+                              29, 39, 190, 20);
+               XDrawRectangle(dpy, pnot,
+                              WMColorGC(panel->colors[FBORDER_COL]),
+                              29, 69, 190, 20);
+               XDrawRectangle(dpy, d,
+                              WMColorGC(panel->colors[FBORDER_COL]),
+                              29, 69, 190, 20);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         30, 100, 30, 109);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         30, 100, 30, 109);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         31, 109, 219, 109);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         31, 109, 219, 109);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         220, 100, 220, 109);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         220, 100, 220, 109);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         29, 120, 29, 220);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         29, 120, 29, 220);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         29, 119, 119, 119);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         29, 119, 119, 119);
+               XDrawLine(dpy, pnot,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         119, 120, 119, 220);
+               XDrawLine(dpy, d,
+                         WMColorGC(panel->colors[FBORDER_COL]),
+                         119, 120, 119, 220);
+       }
+       if (elements & (1 << FSBORDER_COL)) {
+               XDrawRectangle(dpy, pnot,
+                              WMColorGC(panel->
+                                        colors[FSBORDER_COL]),
+                              29, 9, 190, 20);
+               XDrawRectangle(dpy, d,
+                              WMColorGC(panel->
+                                        colors[FSBORDER_COL]),
+                              29, 9, 190, 20);
        }
+
        /*
-          if (elements & ICONT_COL) {
-          WRITE(_("Focused Window"), panel->colors[8], panel->boldFont,
+          if (elements & (1 << ICONT_COL)) {
+          WRITE(_("Focused Window"), panel->colors[ICONT_COL],
+          panel->boldFont,
           155, 130, 64);
           }
-          if (elements & ICONB_COL) {
-          WRITE(_("Focused Window"), panel->colors[9], panel->boldFont,
+          if (elements & (1 << ICONB_COL)) {
+          WRITE(_("Focused Window"), panel->colors[ICONB_COL],
+          panel->boldFont,
           0, 0, 30);
           }
-          if (elements & CLIP_COL) {
-          WRITE(_("Focused Window"), panel->colors[10], panel->boldFont,
+          if (elements & (1 << CLIP_COL)) {
+          WRITE(_("Focused Window"), panel->colors[CLIP_COL],
+          panel->boldFont,
           0, 0, 30);
           }
-          if (elements & CCLIP_COL) {
-          WRITE(_("Focused Window"), panel->colors[11], panel->boldFont,
+          if (elements & (1 << CCLIP_COL)) {
+          WRITE(_("Focused Window"), panel->colors[CCLIP_COL],
+          panel->boldFont,
           0, 0, 30);
           }
         */
@@ -1774,6 +1837,8 @@ static void createPanel(Panel * p)
        WMAddPopUpButtonItem(panel->colP, _("Disabled Menu Item Text"));
        WMAddPopUpButtonItem(panel->colP, _("Menu Highlight Color"));
        WMAddPopUpButtonItem(panel->colP, _("Highlighted Menu Text Color"));
+       WMAddPopUpButtonItem(panel->colP, _("Frame Border Color"));
+       WMAddPopUpButtonItem(panel->colP, _("Selected Frame Border Color"));
        /*
           WMAddPopUpButtonItem(panel->colP, _("Miniwindow Title"));
           WMAddPopUpButtonItem(panel->colP, _("Miniwindow Title Back"));
@@ -1986,7 +2051,7 @@ static void storeData(_Panel * panel)
                SetObjectForKey(titem->prop, textureOptions[i].key);
        }
 
-       for (i = 0; i < 8; i++) {
+       for (i = 0; i < wlengthof(colorOptions); i++) {
                char *str;
 
                str = WMGetColorRGBDescription(panel->colors[i]);
-- 
1.9.1


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

Reply via email to