Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h config.c desktops.c iclass.c main.c settings.c 


Log Message:
Added global theme transparency feature (not finished).
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.205
retrieving revision 1.206
diff -u -3 -r1.205 -r1.206
--- E.h 11 Feb 2004 15:39:12 -0000      1.205
+++ E.h 12 Feb 2004 01:17:20 -0000      1.206
@@ -53,6 +53,9 @@
 
 #define IC_RenderDepth() DefaultDepth(disp, root.scr)
 
+#define ENABLE_TRANSPARENCY 1
+#define ENABLE_THEME_TRANSPARENCY 1
+
 #else
 
 #include <Imlib.h>
@@ -1207,6 +1210,11 @@
    } snap;
    struct
    {
+      char               *name;
+      int                 transparency;
+   } theme;
+   struct
+   {
       char                enable;
       char                showroottooltip;
       float               delay;
@@ -1244,7 +1252,6 @@
    int                 edge_flip_resistance;
    GroupConfig         group_config;
    char                group_swapmove;
-   int                 theme_transparency;
 
    /* Not used */
    char                primaryicondir;
@@ -2216,6 +2223,7 @@
 void                ICCCM_GetMainEInfo(void);
 
 /* iclass.c */
+void                TransparencySet(int transparency);
 ImageClass         *CreateIclass(void);
 void                FreeImageClass(ImageClass * i);
 ImageState         *CreateImageState(void);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/config.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -3 -r1.87 -r1.88
--- config.c    11 Feb 2004 15:39:12 -0000      1.87
+++ config.c    12 Feb 2004 01:17:21 -0000      1.88
@@ -811,7 +811,7 @@
             conf.backgrounds.user = i2;
             break;
          case CONTROL_THEME_TRANSPARENCY:
-            conf.theme_transparency = i2;
+            conf.theme.transparency = i2;
             break;
          case CONTROL_DOCKSTARTPOS:
             sscanf(s, "%*s %d %d ", &conf.dock.startx, &conf.dock.starty);
@@ -2404,7 +2404,7 @@
             ICToRead->pixmapfillstyle = atoi(s2);
             break;
          case ICLASS_TRANSPARENT:
-            ICToRead->transparent = atoi(s2);
+            ICToRead->transparent = strtoul(s2, NULL, 0);
             break;
          case CONFIG_INHERIT:
             {
@@ -3919,7 +3919,7 @@
        fprintf(autosavefile, "1368 %i\n", (int)conf.tooltips.showroottooltip);
        fprintf(autosavefile, "1369 %i %i %i\n", (int)conf.pagers.sel_button,
                (int)conf.pagers.win_button, (int)conf.pagers.menu_button);
-       fprintf(autosavefile, "1373 %i\n", (int)conf.theme_transparency);
+       fprintf(autosavefile, "1373 %i\n", (int)conf.theme.transparency);
 #ifdef  HAS_XINERAMA
        fprintf(autosavefile, "2013 %i\n", (int)conf.extra_head);
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -3 -r1.62 -r1.63
--- desktops.c  11 Feb 2004 15:39:12 -0000      1.62
+++ desktops.c  12 Feb 2004 01:17:21 -0000      1.63
@@ -644,7 +644,7 @@
             /* Put image 1:1 onto the current root window */
             dpmap = pmap;
          }
-       else if (hasbg && !hasfg && dsk->bg_tile && !conf.theme_transparency)
+       else if (hasbg && !hasfg && dsk->bg_tile && !conf.theme.transparency)
          {
             /* BG only, tiled */
             dpmap = ECreatePixmap(disp, win, w, h, depth);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/iclass.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- iclass.c    19 Jan 2004 22:30:31 -0000      1.24
+++ iclass.c    12 Feb 2004 01:17:21 -0000      1.25
@@ -22,7 +22,57 @@
  */
 #include "E.h"
 
-#define ENABLE_TRANSPARENCY USE_IMLIB2
+#ifdef ENABLE_THEME_TRANSPARENCY
+
+static Imlib_Color_Modifier *icm = NULL;
+static DATA8        gray[256];
+static DATA8        alpha[256];
+
+static void
+TransparencyMakeColorModifier(void)
+{
+   int                 i;
+
+   for (i = 0; i < 256; i++)
+     {
+       gray[i] = i;
+       alpha[i] = 255 - conf.theme.transparency;
+     }
+
+   if (icm == NULL)
+      icm = imlib_create_color_modifier();
+   imlib_context_set_color_modifier(icm);
+#if 0
+   imlib_modify_color_modifier_gamma(0.5);
+   imlib_modify_color_modifier_brightness(0.5);
+   imlib_modify_color_modifier_contrast(0.5);
+#endif
+   imlib_set_color_modifier_tables(gray, gray, gray, alpha);
+   imlib_context_set_color_modifier(NULL);
+}
+
+void
+TransparencySet(int transparency)
+{
+   if (transparency < 0)
+      transparency = 0;
+   else if (transparency > 255)
+      transparency = 255;
+
+   conf.theme.transparency = transparency;
+
+   /* Generate the color modifier tables */
+   TransparencyMakeColorModifier();
+}
+
+#else
+
+void
+TransparencySet(int transparency)
+{
+}
+
+#endif /* ENABLE_THEME_TRANSPARENCY */
 
 ImageClass         *
 CreateIclass()
@@ -540,7 +590,7 @@
    PmapMask            pmml;
    Pixmap              mask = 0;
 
-#if ENABLE_TRANSPARENCY
+#ifdef ENABLE_TRANSPARENCY
    Pixmap              pmap = 0;
    Imlib_Image        *ii = NULL;
 
@@ -568,9 +618,10 @@
    pmm->type = 1;
    pmm->pmap = pmm->mask = 0;
 
-#if ENABLE_TRANSPARENCY
-   if (is->transparent && is->pixmapfillstyle == FILL_STRETCH &&
-       imlib_image_has_alpha())
+#ifdef ENABLE_TRANSPARENCY
+   if (conf.theme.transparency ||
+       (is->transparent && is->pixmapfillstyle == FILL_STRETCH &&
+       imlib_image_has_alpha()))
      {
        Window              cr;
        Pixmap              bg;
@@ -591,20 +642,29 @@
 
    if (is->pixmapfillstyle == FILL_STRETCH)
      {
-#if ENABLE_TRANSPARENCY
+#ifdef ENABLE_TRANSPARENCY
        if (ii)
          {
             imlib_context_set_blend(1);
+#ifdef ENABLE_THEME_TRANSPARENCY
+            imlib_context_set_color_modifier(icm);
+#endif
             imlib_context_set_operation(IMLIB_OP_COPY);
             imlib_blend_image_onto_image(is->im, 0, 0, 0, ww, hh, 0, 0, w, h);
             imlib_context_set_blend(0);
+#ifdef ENABLE_THEME_TRANSPARENCY
+            imlib_context_set_color_modifier(NULL);
+#if 0
+            imlib_free_color_modifier();
+#endif
+#endif
          }
 #endif
        pmm->type = 1;
        imlib_render_pixmaps_for_whole_image_at_size(&pmm->pmap, &pmm->mask,
                                                     w, h);
        mask = pmm->mask;
-#if ENABLE_TRANSPARENCY
+#ifdef ENABLE_TRANSPARENCY
        if (ii && make_mask && (is->transparent & 0x04) == 0)
          {
             /* Make the scaled clip mask to be used (is this really the way?) */
@@ -713,7 +773,7 @@
          }
      }
 
-#if ENABLE_TRANSPARENCY
+#ifdef ENABLE_TRANSPARENCY
    if (pmap)
       imlib_free_pixmap_and_mask(pmap);
    if (ii)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/main.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -3 -r1.72 -r1.73
--- main.c      11 Feb 2004 15:27:53 -0000      1.72
+++ main.c      12 Feb 2004 01:17:21 -0000      1.73
@@ -250,6 +250,7 @@
    /* now we're going to load the configuration/theme */
    LoadEConfig(themepath);
    SetAreaSize(conf.areas.nx, conf.areas.ny);
+   TransparencySet(conf.theme.transparency);
 
    desks.desk[0].viewable = 1;
    RefreshDesktop(0);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/settings.c,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -3 -r1.92 -r1.93
--- settings.c  11 Feb 2004 15:39:12 -0000      1.92
+++ settings.c  12 Feb 2004 01:17:21 -0000      1.93
@@ -30,7 +30,6 @@
 }
 RememberWinList;
 
-static void         CB_SettingsEscape(int val, void *data);
 static void
 CB_SettingsEscape(int val, void *data)
 {
@@ -52,7 +51,6 @@
 static DItem       *pager_scan_speed_label = NULL;
 static Dialog      *pager_settings_dialog = NULL;
 
-static void         CB_ConfigurePager(int val, void *data);
 static void
 CB_ConfigurePager(int val, void *data)
 {
@@ -86,7 +84,6 @@
    data = NULL;
 }
 
-static void         CB_PagerScanSlide(int val, void *data);
 static void
 CB_PagerScanSlide(int val, void *data)
 {
@@ -361,7 +358,6 @@
 #endif
 static char         tmp_clickalways;
 
-static void         CB_ConfigureFocus(int val, void *data);
 static void
 CB_ConfigureFocus(int val, void *data)
 {
@@ -632,7 +628,6 @@
 int                 je_prevmode = -1;
 */
 
-static void         CB_ConfigureMoveResize(int val, void *data);
 static void
 CB_ConfigureMoveResize(int val, void *data)
 {
@@ -1022,7 +1017,6 @@
 static Dialog      *tmp_desk_dialog;
 static char         tmp_desktop_wraparound;
 
-static void         CB_ConfigureDesktops(int val, void *data);
 static void
 CB_ConfigureDesktops(int val, void *data)
 {
@@ -1035,7 +1029,6 @@
    data = NULL;
 }
 
-static void         CB_DesktopDisplayRedraw(int val, void *data);
 static void
 CB_DesktopDisplayRedraw(int val, void *data)
 {
@@ -1224,7 +1217,6 @@
 static Dialog      *tmp_area_dialog;
 static char         tmp_area_wraparound;
 
-static void         CB_ConfigureAreas(int val, void *data);
 static void
 CB_ConfigureAreas(int val, void *data)
 {
@@ -1246,7 +1238,6 @@
    data = NULL;
 }
 
-static void         CB_AreaDisplayRedraw(int val, void *data);
 static void
 CB_AreaDisplayRedraw(int val, void *data)
 {
@@ -1461,7 +1452,6 @@
 static char         tmp_extra_head;
 #endif
 
-static void         CB_ConfigurePlacement(int val, void *data);
 static void
 CB_ConfigurePlacement(int val, void *data)
 {
@@ -1603,7 +1593,6 @@
 static char         tmp_autoraise;
 static int          tmp_autoraisetime;
 
-static void         CB_ConfigureAutoraise(int val, void *data);
 static void
 CB_ConfigureAutoraise(int val, void *data)
 {
@@ -1702,7 +1691,6 @@
 static int          tmp_tooltiptime;
 static char         tmp_roottip;
 
-static void         CB_ConfigureTooltips(int val, void *data);
 static void
 CB_ConfigureTooltips(int val, void *data)
 {
@@ -1807,7 +1795,6 @@
 }
 
 static char         tmp_dialog_headers;
-static void         CB_ConfigureMiscellaneous(int val, void *data);
 static void
 CB_ConfigureMiscellaneous(int val, void *data)
 {
@@ -1888,7 +1875,6 @@
 
 static char         tmp_audio;
 
-static void         CB_ConfigureAudio(int val, void *data);
 static void
 CB_ConfigureAudio(int val, void *data)
 {
@@ -1996,7 +1982,6 @@
 static char         tmp_effect_ripples;
 static char         tmp_effect_waves;
 
-static void         CB_ConfigureFX(int val, void *data);
 static void
 CB_ConfigureFX(int val, void *data)
 {
@@ -2455,10 +2440,10 @@
 static char         tmp_hiq;
 static char         tmp_userbg;
 static int          tmp_bg_timeout;
+static int          tmp_theme_transparency;
 
 static void         BG_RedrawView(char nuke_old);
 
-static void         CB_ConfigureBG(int val, void *data);
 static void
 CB_ConfigureBG(int val, void *data)
 {
@@ -2469,6 +2454,9 @@
        conf.backgrounds.timeout = tmp_bg_timeout;
        conf.backgrounds.hiquality = tmp_hiq;
        conf.backgrounds.user = tmp_userbg;
+#ifdef ENABLE_THEME_TRANSPARENCY
+       TransparencySet(tmp_theme_transparency);
+#endif
        ESetColor(&(tmp_bg->bg_solid), tmp_bg_r, tmp_bg_g, tmp_bg_b);
        tmp_bg->bg_tile = tmp_bg_tile;
        tmp_bg->bg.keep_aspect = tmp_bg_keep_aspect;
@@ -2534,7 +2522,6 @@
    data = NULL;
 }
 
-static void         CB_DesktopMiniDisplayRedraw(int val, void *data);
 static void
 CB_DesktopMiniDisplayRedraw(int val, void *data)
 {
@@ -2657,7 +2644,6 @@
    CB_DesktopMiniDisplayRedraw(0, bg_mini_disp);
 }
 
-static void         CB_ConfigureNewBG(int val, void *data);
 static void
 CB_ConfigureNewBG(int val, void *data)
 {
@@ -2691,7 +2677,6 @@
    data = NULL;
 }
 
-static void         CB_ConfigureRemBG(int val, void *data);
 static void
 CB_ConfigureRemBG(int val, void *data)
 {
@@ -2742,7 +2727,6 @@
    data = NULL;
 }
 
-static void         CB_ConfigureDelBG(int val, void *data);
 static void
 CB_ConfigureDelBG(int val, void *data)
 {
@@ -2817,7 +2801,6 @@
    data = NULL;
 }
 
-static void         CB_ConfigureFrontBG(int val, void *data);
 static void
 CB_ConfigureFrontBG(int val, void *data)
 {
@@ -2954,7 +2937,6 @@
    XClearWindow(disp, win);
 }
 
-static void         CB_BGAreaSlide(int val, void *data);
 static void
 CB_BGAreaSlide(int val, void *data)
 {
@@ -2963,7 +2945,6 @@
    data = NULL;
 }
 
-static void         CB_BGScan(int val, void *data);
 static void
 CB_BGScan(int val, void *data)
 {
@@ -2983,7 +2964,6 @@
    data = NULL;
 }
 
-static void         CB_BGAreaEvent(int val, void *data);
 static void
 CB_BGAreaEvent(int val, void *data)
 {
@@ -3030,7 +3010,6 @@
    val = 0;
 }
 
-static void         CB_DesktopTimeout(int val, void *data);
 static void
 CB_DesktopTimeout(int val, void *data)
 {
@@ -3086,7 +3065,6 @@
      }
 }
 
-static void         CB_BGPrev(int val, void *data);
 static void
 CB_BGPrev(int val, void *data)
 {
@@ -3115,7 +3093,6 @@
    data = NULL;
 }
 
-static void         CB_BGNext(int val, void *data);
 static void
 CB_BGNext(int val, void *data)
 {
@@ -3144,7 +3121,6 @@
    data = NULL;
 }
 
-static int          BG_SortFileCompare(Background * bg1, Background * bg2);
 static int
 BG_SortFileCompare(Background * bg1, Background * bg2)
 {
@@ -3158,7 +3134,6 @@
    return 0;
 }
 
-static void         CB_BGSortFile(int val, void *data);
 static void
 CB_BGSortFile(int val, void *data)
 {
@@ -3189,7 +3164,6 @@
    data = NULL;
 }
 
-static void         CB_BGSortAttrib(int val, void *data);
 static void
 CB_BGSortAttrib(int val, void *data)
 {
@@ -3234,7 +3208,6 @@
    data = NULL;
 }
 
-static void         CB_BGSortContent(int val, void *data);
 static void
 CB_BGSortContent(int val, void *data)
 {
@@ -3262,6 +3235,21 @@
    data = NULL;
 }
 
+#ifdef ENABLE_THEME_TRANSPARENCY
+static void
+CB_ThemeTransparency(int val, void *data)
+{
+   DItem              *di;
+   char                s[256];
+
+   di = (DItem *) data;
+   Esnprintf(s, sizeof(s), _("Theme transparency: %2d"),
+            tmp_theme_transparency);
+   DialogItemTextSetText(di, s);
+   DialogDrawItems(bg_sel_dialog, di, 0, 0, 99999, 99999);
+}
+#endif
+
 void
 SettingsBackground(Background * bg)
 {
@@ -3308,6 +3296,7 @@
    tmp_hiq = conf.backgrounds.hiquality;
    tmp_userbg = conf.backgrounds.user;
    tmp_bg_timeout = conf.backgrounds.timeout;
+   tmp_theme_transparency = conf.theme.transparency;
 
    d = bg_sel_dialog = DialogCreate("CONFIGURE_BG");
    DialogSetTitle(d, _("Desktop Background Settings"));
@@ -3678,6 +3667,36 @@
    DialogSetExitFunction(d, CB_ConfigureBG, 2, d);
    DialogBindKey(d, "Escape", CB_SettingsEscape, 0, d);
    DialogBindKey(d, "Return", CB_ConfigureBG, 0, d);
+
+#ifdef ENABLE_THEME_TRANSPARENCY
+   di = DialogAddItem(table, DITEM_SEPARATOR);
+   DialogItemSetColSpan(di, 3);
+   DialogItemSetPadding(di, 2, 2, 2, 2);
+   DialogItemSetFill(di, 1, 0);
+   DialogItemSeparatorSetOrientation(di, 0);
+
+   di = label = DialogAddItem(table, DITEM_TEXT);
+   DialogItemSetColSpan(di, 3);
+   DialogItemSetPadding(di, 2, 2, 2, 2);
+   DialogItemSetFill(di, 1, 0);
+   DialogItemSetAlign(di, 512, 512);
+   Esnprintf(s, sizeof(s), _("Theme transparency: %2d"),
+            tmp_theme_transparency);
+   DialogItemTextSetText(di, s);
+
+   di = DialogAddItem(table, DITEM_SLIDER);
+   DialogItemSetColSpan(di, 3);
+   DialogItemSliderSetMinLength(di, 10);
+   DialogItemSetPadding(di, 2, 2, 2, 2);
+   DialogItemSetFill(di, 1, 0);
+   DialogItemSliderSetBounds(di, 0, 255);
+   DialogItemSliderSetUnits(di, 1);
+   DialogItemSliderSetJump(di, 16);
+   DialogItemSliderSetVal(di, tmp_theme_transparency);
+   DialogItemSliderSetValPtr(di, &tmp_theme_transparency);
+   DialogItemSetCallback(di, CB_ThemeTransparency, 0, (void *)label);
+#endif /* ENABLE_THEME_TRANSPARENCY */
+
    ShowDialog(d);
 
    CB_DesktopMiniDisplayRedraw(1, area);
@@ -3707,7 +3726,6 @@
 static int          tmp_ib_autoresize_anchor;
 static char         tmp_ib_animate;
 
-static void         CB_ConfigureIconbox(int val, void *data);
 static void
 CB_ConfigureIconbox(int val, void *data)
 {
@@ -4053,7 +4071,6 @@
 static DItem       *di_shade;
 static DItem       *di_mirror;
 
-static void         CB_ConfigureGroupEscape(int val, void *data);
 static void
 CB_ConfigureGroupEscape(int val, void *data)
 {
@@ -4067,7 +4084,6 @@
    val = 0;
 }
 
-static void         CB_ConfigureGroup(int val, void *data);
 static void
 CB_ConfigureGroup(int val, void *data)
 {
@@ -4347,7 +4363,6 @@
 
 static GroupConfig  tmp_group_cfg;
 static char         tmp_group_swap;
-static void         CB_ConfigureDefaultGroupSettings(int val, void *data);
 static void
 CB_ConfigureDefaultGroupSettings(int val, void *data)
 {




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to