Greetings everybody!
I was asked by someone (from the beryl-forum) if/how one could alter
the values for the two color-stops used by the fallback-gradient of the
skydome (for the case the supplied image could not be found). Up to now
they were hardcoded, but with this patch they can be set via...
/apps/compiz/plugins/cube/screen0/options/skydome_gradient_start_color
/apps/compiz/plugins/cube/screen0/options/skydome_gradient_end_color
I apologize for not including the needed patch for compiz.schemas.in.
To help avoiding more divergence between compiz and beryl than
necessary (although a patch like this is tiny compared to other things)
I supply two patches... one for compiz and one for beryl.
David, don't feel urged to include this patch. I mainly wrote it as a
small favour for some beryl-folks asking for it. It was hardly any work
and I myself regard it as superfluous.
Best regards...
MacSlow
--
email - [EMAIL PROTECTED]
www - http://macslow.thepimp.net
lowfat - http://macslow.thepimp.net/sponsor-it
--- /tmp/beryl/trunk/beryl-plugins/src/cube.c 2006-10-14 16:00:08.000000000 +0200
+++ /home/mirco/src/beryl/trunk/beryl-plugins/src/cube.c 2006-10-14 15:56:57.000000000 +0200
@@ -72,6 +72,14 @@
#define CUBE_SKYDOME_ANIMATE_DEFAULT FALSE
+#define CUBE_SKYDOME_GRAD_START_RED_DEFAULT 0x0d0d
+#define CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT 0xb1b1
+#define CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT 0xfdfd
+
+#define CUBE_SKYDOME_GRAD_END_RED_DEFAULT 0xfefe
+#define CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT 0xffff
+#define CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT 0xc7c7
+
#define CUBE_UNFOLD_KEY_DEFAULT "Next"
#define CUBE_UNFOLD_MODIFIERS_DEFAULT (ControlMask | CompAltMask)
@@ -111,25 +119,27 @@
CompOption opt[CUBE_DISPLAY_OPTION_NUM];
} CubeDisplay;
-#define CUBE_SCREEN_OPTION_COLOR 0
-#define CUBE_SCREEN_OPTION_IN 1
-#define CUBE_SCREEN_OPTION_SCALE_IMAGE_TOP 2
-#define CUBE_SCREEN_OPTION_IMAGES_TOP 3
-#define CUBE_SCREEN_OPTION_SKYDOME 4
-#define CUBE_SCREEN_OPTION_SKYDOME_IMG 5
-#define CUBE_SCREEN_OPTION_SKYDOME_ANIM 6
-#define CUBE_SCREEN_OPTION_ACCELERATION 7
-#define CUBE_SCREEN_OPTION_SPEED 8
-#define CUBE_SCREEN_OPTION_TIMESTEP 9
-#define CUBE_SCREEN_OPTION_MIPMAP 10
-#define CUBE_SCREEN_OPTION_SCALE_IMAGE_BOTTOM 11
-#define CUBE_SCREEN_OPTION_IMAGES_BOTTOM 12
-#define CUBE_SCREEN_OPTION_ROTATE_IMAGES 13
-#define CUBE_SCREEN_OPTION_VIEWPORT_SLIDE 14
-#define CUBE_SCREEN_OPTION_VIEWPORT_SLIDE_NO3D 15
-#define CUBE_SCREEN_OPTION_DRAW_CAPS 16
-#define CUBE_SCREEN_OPTION_TRANSPARENT 17
-#define CUBE_SCREEN_OPTION_NUM 18
+#define CUBE_SCREEN_OPTION_COLOR 0
+#define CUBE_SCREEN_OPTION_IN 1
+#define CUBE_SCREEN_OPTION_SCALE_IMAGE_TOP 2
+#define CUBE_SCREEN_OPTION_IMAGES_TOP 3
+#define CUBE_SCREEN_OPTION_SKYDOME 4
+#define CUBE_SCREEN_OPTION_SKYDOME_IMG 5
+#define CUBE_SCREEN_OPTION_SKYDOME_ANIM 6
+#define CUBE_SCREEN_OPTION_SKYDOME_GRAD_START 7
+#define CUBE_SCREEN_OPTION_SKYDOME_GRAD_END 8
+#define CUBE_SCREEN_OPTION_ACCELERATION 9
+#define CUBE_SCREEN_OPTION_SPEED 10
+#define CUBE_SCREEN_OPTION_TIMESTEP 11
+#define CUBE_SCREEN_OPTION_MIPMAP 12
+#define CUBE_SCREEN_OPTION_SCALE_IMAGE_BOTTOM 13
+#define CUBE_SCREEN_OPTION_IMAGES_BOTTOM 14
+#define CUBE_SCREEN_OPTION_ROTATE_IMAGES 15
+#define CUBE_SCREEN_OPTION_VIEWPORT_SLIDE 16
+#define CUBE_SCREEN_OPTION_VIEWPORT_SLIDE_NO3D 17
+#define CUBE_SCREEN_OPTION_DRAW_CAPS 18
+#define CUBE_SCREEN_OPTION_TRANSPARENT 19
+#define CUBE_SCREEN_OPTION_NUM 20
typedef struct _CubeScreen
{
@@ -164,6 +174,8 @@
GLuint skyListId;
Bool animateSkyDome;
+ GLushort skyGradStartColor[3];
+ GLushort skyGradEndColor[3];
Pixmap pixmap_top, pixmap_bottom;
int pw_top, ph_top, pw_bottom, ph_bottom;
@@ -722,12 +734,12 @@
{
GLfloat aaafTextureData[128][128][3];
- GLfloat fRStart = 13.0f / 255.0f;
- GLfloat fGStart = 177.0f / 255.0f;
- GLfloat fBStart = 253.0f / 255.0f;
- GLfloat fREnd = 254.0f / 255.0f;
- GLfloat fGEnd = 255.0f / 255.0f;
- GLfloat fBEnd = 199.0f / 255.0f;
+ GLfloat fRStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[0] / 0xffff;
+ GLfloat fGStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[1] / 0xffff;
+ GLfloat fBStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[2] / 0xffff;
+ GLfloat fREnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[0] / 0xffff;
+ GLfloat fGEnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[1] / 0xffff;
+ GLfloat fBEnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[2] / 0xffff;
GLfloat fRStep = (fREnd - fRStart) / 128.0f;
GLfloat fGStep = (fGEnd - fGStart) / 128.0f;
@@ -1058,6 +1070,26 @@
return TRUE;
}
break;
+ case CUBE_SCREEN_OPTION_SKYDOME_GRAD_START:
+ if (compSetColorOption (o, value))
+ {
+ memcpy (cs->skyGradStartColor, o->value.c, sizeof (cs->skyGradStartColor));
+ cubeUpdateSkyDomeTexture (screen);
+ cubeUpdateSkyDomeList (screen, 1.0f);
+ damageScreen (screen);
+ return TRUE;
+ }
+ break;
+ case CUBE_SCREEN_OPTION_SKYDOME_GRAD_END:
+ if (compSetColorOption (o, value))
+ {
+ memcpy (cs->skyGradEndColor, o->value.c, sizeof (cs->skyGradEndColor));
+ cubeUpdateSkyDomeTexture (screen);
+ cubeUpdateSkyDomeList (screen, 1.0f);
+ damageScreen (screen);
+ return TRUE;
+ }
+ break;
case CUBE_SCREEN_OPTION_ACCELERATION:
if (compSetFloatOption (o, value))
{
@@ -1191,6 +1223,26 @@
o->type = CompOptionTypeBool;
o->value.b = CUBE_SKYDOME_ANIMATE_DEFAULT;
+ o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START];
+ o->name = "skydome_gradient_start_color";
+ o->shortDesc = N_("Skydome Gradient Start Color");
+ o->longDesc = N_("Color to use for the top color-stop of the skydome-fallback gradient");
+ o->type = CompOptionTypeColor;
+ o->value.c[0] = CUBE_SKYDOME_GRAD_START_RED_DEFAULT;
+ o->value.c[1] = CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT;
+ o->value.c[2] = CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT;
+ o->value.c[3] = 0xffff;
+
+ o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END];
+ o->name = "skydome_gradient_end_color";
+ o->shortDesc = N_("Skydome Gradient End Color");
+ o->longDesc = N_("Color to use for the bottom color-stop of the skydome-fallback gradient");
+ o->type = CompOptionTypeColor;
+ o->value.c[0] = CUBE_SKYDOME_GRAD_END_RED_DEFAULT;
+ o->value.c[1] = CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT;
+ o->value.c[2] = CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT;
+ o->value.c[3] = 0xffff;
+
o = &cs->opt[CUBE_SCREEN_OPTION_ACCELERATION];
o->name = "acceleration";
o->shortDesc = N_("Acceleration");
@@ -2145,6 +2197,13 @@
cs->skyListId = 0;
cs->animateSkyDome = CUBE_SKYDOME_ANIMATE_DEFAULT;
+ cs->skyGradStartColor[0] = CUBE_SKYDOME_GRAD_START_RED_DEFAULT;
+ cs->skyGradStartColor[1] = CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT;
+ cs->skyGradStartColor[2] = CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT;
+ cs->skyGradEndColor[0] = CUBE_SKYDOME_GRAD_END_RED_DEFAULT;
+ cs->skyGradEndColor[1] = CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT;
+ cs->skyGradEndColor[2] = CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT;
+
cs->rotateImages = CUBE_ROTATE_IMAGES_DEFAULT;
s->privates[cd->screenPrivateIndex].ptr = cs;
--- /tmp/compiz/plugins/cube.c 2006-10-14 15:20:47.000000000 +0200
+++ /home/mirco/src/compiz/plugins/cube.c 2006-10-14 15:07:32.000000000 +0200
@@ -69,6 +69,14 @@
#define CUBE_SKYDOME_ANIMATE_DEFAULT FALSE
+#define CUBE_SKYDOME_GRAD_START_RED_DEFAULT 0x0d0d
+#define CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT 0xb1b1
+#define CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT 0xfdfd
+
+#define CUBE_SKYDOME_GRAD_END_RED_DEFAULT 0xfefe
+#define CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT 0xffff
+#define CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT 0xc7c7
+
#define CUBE_UNFOLD_KEY_DEFAULT "Down"
#define CUBE_UNFOLD_MODIFIERS_DEFAULT (ControlMask | CompAltMask)
@@ -102,18 +110,20 @@
CompOption opt[CUBE_DISPLAY_OPTION_NUM];
} CubeDisplay;
-#define CUBE_SCREEN_OPTION_COLOR 0
-#define CUBE_SCREEN_OPTION_IN 1
-#define CUBE_SCREEN_OPTION_SCALE_IMAGE 2
-#define CUBE_SCREEN_OPTION_IMAGES 3
-#define CUBE_SCREEN_OPTION_SKYDOME 4
-#define CUBE_SCREEN_OPTION_SKYDOME_IMG 5
-#define CUBE_SCREEN_OPTION_SKYDOME_ANIM 6
-#define CUBE_SCREEN_OPTION_ACCELERATION 7
-#define CUBE_SCREEN_OPTION_SPEED 8
-#define CUBE_SCREEN_OPTION_TIMESTEP 9
-#define CUBE_SCREEN_OPTION_MIPMAP 10
-#define CUBE_SCREEN_OPTION_NUM 11
+#define CUBE_SCREEN_OPTION_COLOR 0
+#define CUBE_SCREEN_OPTION_IN 1
+#define CUBE_SCREEN_OPTION_SCALE_IMAGE 2
+#define CUBE_SCREEN_OPTION_IMAGES 3
+#define CUBE_SCREEN_OPTION_SKYDOME 4
+#define CUBE_SCREEN_OPTION_SKYDOME_IMG 5
+#define CUBE_SCREEN_OPTION_SKYDOME_ANIM 6
+#define CUBE_SCREEN_OPTION_SKYDOME_GRAD_START 7
+#define CUBE_SCREEN_OPTION_SKYDOME_GRAD_END 8
+#define CUBE_SCREEN_OPTION_ACCELERATION 9
+#define CUBE_SCREEN_OPTION_SPEED 10
+#define CUBE_SCREEN_OPTION_TIMESTEP 11
+#define CUBE_SCREEN_OPTION_MIPMAP 12
+#define CUBE_SCREEN_OPTION_NUM 13
typedef struct _CubeScreen {
PreparePaintScreenProc preparePaintScreen;
@@ -146,6 +156,8 @@
GLuint skyListId;
Bool animateSkyDome;
+ GLushort skyGradStartColor[3];
+ GLushort skyGradEndColor[3];
Pixmap pixmap;
int pw, ph;
@@ -487,12 +499,12 @@
{
GLfloat aaafTextureData[128][128][3];
- GLfloat fRStart = 13.0f / 255.0f;
- GLfloat fGStart = 177.0f / 255.0f;
- GLfloat fBStart = 253.0f / 255.0f;
- GLfloat fREnd = 254.0f / 255.0f;
- GLfloat fGEnd = 255.0f / 255.0f;
- GLfloat fBEnd = 199.0f / 255.0f;
+ GLfloat fRStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[0] / 0xffff;
+ GLfloat fGStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[1] / 0xffff;
+ GLfloat fBStart = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START].value.c[2] / 0xffff;
+ GLfloat fREnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[0] / 0xffff;
+ GLfloat fGEnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[1] / 0xffff;
+ GLfloat fBEnd = (GLfloat) cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END].value.c[2] / 0xffff;
GLfloat fRStep = (fREnd - fRStart) / 128.0f;
GLfloat fGStep = (fGEnd - fGStart) / 128.0f;
@@ -800,6 +812,26 @@
return TRUE;
}
break;
+ case CUBE_SCREEN_OPTION_SKYDOME_GRAD_START:
+ if (compSetColorOption (o, value))
+ {
+ memcpy (cs->skyGradStartColor, o->value.c, sizeof (cs->skyGradStartColor));
+ cubeUpdateSkyDomeTexture (screen);
+ cubeUpdateSkyDomeList (screen, 1.0f);
+ damageScreen (screen);
+ return TRUE;
+ }
+ break;
+ case CUBE_SCREEN_OPTION_SKYDOME_GRAD_END:
+ if (compSetColorOption (o, value))
+ {
+ memcpy (cs->skyGradEndColor, o->value.c, sizeof (cs->skyGradEndColor));
+ cubeUpdateSkyDomeTexture (screen);
+ cubeUpdateSkyDomeList (screen, 1.0f);
+ damageScreen (screen);
+ return TRUE;
+ }
+ break;
case CUBE_SCREEN_OPTION_ACCELERATION:
if (compSetFloatOption (o, value))
{
@@ -899,6 +931,26 @@
o->type = CompOptionTypeBool;
o->value.b = CUBE_SKYDOME_ANIMATE_DEFAULT;
+ o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_START];
+ o->name = "skydome_gradient_start_color";
+ o->shortDesc = N_("Skydome Gradient Start Color");
+ o->longDesc = N_("Color to use for the top color-stop of the skydome-fallback gradient");
+ o->type = CompOptionTypeColor;
+ o->value.c[0] = CUBE_SKYDOME_GRAD_START_RED_DEFAULT;
+ o->value.c[1] = CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT;
+ o->value.c[2] = CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT;
+ o->value.c[3] = 0xffff;
+
+ o = &cs->opt[CUBE_SCREEN_OPTION_SKYDOME_GRAD_END];
+ o->name = "skydome_gradient_end_color";
+ o->shortDesc = N_("Skydome Gradient End Color");
+ o->longDesc = N_("Color to use for the bottom color-stop of the skydome-fallback gradient");
+ o->type = CompOptionTypeColor;
+ o->value.c[0] = CUBE_SKYDOME_GRAD_END_RED_DEFAULT;
+ o->value.c[1] = CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT;
+ o->value.c[2] = CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT;
+ o->value.c[3] = 0xffff;
+
o = &cs->opt[CUBE_SCREEN_OPTION_ACCELERATION];
o->name = "acceleration";
o->shortDesc = N_("Acceleration");
@@ -1639,6 +1691,13 @@
cs->skyListId = 0;
cs->animateSkyDome = CUBE_SKYDOME_ANIMATE_DEFAULT;
+ cs->skyGradStartColor[0] = CUBE_SKYDOME_GRAD_START_RED_DEFAULT;
+ cs->skyGradStartColor[1] = CUBE_SKYDOME_GRAD_START_GREEN_DEFAULT;
+ cs->skyGradStartColor[2] = CUBE_SKYDOME_GRAD_START_BLUE_DEFAULT;
+ cs->skyGradEndColor[0] = CUBE_SKYDOME_GRAD_END_RED_DEFAULT;
+ cs->skyGradEndColor[1] = CUBE_SKYDOME_GRAD_END_GREEN_DEFAULT;
+ cs->skyGradEndColor[2] = CUBE_SKYDOME_GRAD_END_BLUE_DEFAULT;
+
s->privates[cd->screenPrivateIndex].ptr = cs;
cs->paintTopBottom = FALSE;
_______________________________________________
compiz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/compiz