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

Reply via email to