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