[PATCH] Added a wrapabble paintInside function to allow plugins to render something inside of the transparent cube.

Dennis Kasprzyk onestone at opencompositing.org
Tue Jun 12 10:19:47 PDT 2007


---
 include/cube.h |    7 +++++++
 plugins/cube.c |   20 ++++++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/include/cube.h b/include/cube.h
index 74cb360..0a87626 100644
--- a/include/cube.h
+++ b/include/cube.h
@@ -81,6 +81,12 @@ typedef void (*CubePaintBottomProc) (CompScreen			*s,
 				     CompOutput			*output,
 				     int			size);
 
+typedef void (*CubePaintInsideProc) (CompScreen			*s,
+				     const ScreenPaintAttrib 	*sAttrib,
+				     const CompTransform	*transform,
+				     CompOutput			*output,
+				     int			size);
+
 typedef Bool (*CubeCheckFTBProc) (CompScreen              *s,
 				  const ScreenPaintAttrib *sAttrib,
 				  const CompTransform     *transform,
@@ -121,6 +127,7 @@ typedef struct _CubeScreen {
     CubeClearTargetOutputProc clearTargetOutput;
     CubePaintTopProc          paintTop;
     CubePaintBottomProc       paintBottom;
+    CubePaintInsideProc       paintInside;
     CubeCheckFTBProc          checkFTB;
     CubeCapDirectionProc      capDirection;
 
diff --git a/plugins/cube.c b/plugins/cube.c
index 5e3e8c5..dda6ea8 100644
--- a/plugins/cube.c
+++ b/plugins/cube.c
@@ -1367,6 +1367,13 @@ cubePaintBottom (CompScreen		 *s,
 }
 
 static void
+cubePaintInside (CompScreen		 *s,
+		 const ScreenPaintAttrib *sAttrib,
+		 const CompTransform	 *transform,
+		 CompOutput		 *output,
+		 int			 size) {}
+
+static void
 cubePaintTransformedOutput (CompScreen		    *s,
 			    const ScreenPaintAttrib *sAttrib,
 			    const CompTransform	    *transform,
@@ -1508,14 +1515,24 @@ cubePaintTransformedOutput (CompScreen		    *s,
 	{
 	    glNormal3f (0.0f, -1.0f, 0.0f);
 	    if (cs->desktopOpacity != OPAQUE)
+	    {
 	    	(*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
+		glNormal3f (0.0f, 0.0f, -1.0f);
+		(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
+		glNormal3f (0.0f, -1.0f, 0.0f);
+	    }
 	    (*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
 	}
 	else if (!topDir && !bottomDir)
 	{
 	    glNormal3f (0.0f, 1.0f, 0.0f);
 	    if (cs->desktopOpacity != OPAQUE)
+	    {
 	    	(*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
+		glNormal3f (0.0f, 0.0f, -1.0f);
+		(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
+		glNormal3f (0.0f, 1.0f, 0.0f);
+	    }
 	    (*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
 	}
 	else if (cs->desktopOpacity != OPAQUE)
@@ -1524,6 +1541,8 @@ cubePaintTransformedOutput (CompScreen		    *s,
 	    (*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
 	    glNormal3f (0.0f, -1.0f, 0.0f);
 	    (*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
+	    glNormal3f (0.0f, 0.0f, -1.0f);
+	    (*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
 	}
 	glNormal3f (0.0f, 0.0f, -1.0f);
     }
@@ -2108,6 +2127,7 @@ cubeInitScreen (CompPlugin *p,
     cs->clearTargetOutput = cubeClearTargetOutput;
     cs->paintTop          = cubePaintTop;
     cs->paintBottom       = cubePaintBottom;
+    cs->paintInside       = cubePaintInside;
     cs->checkFTB          = cubeCheckFTB;
     cs->capDirection      = cubeCapDirection;
 
-- 
1.5.0.5-dirty


--Boundary_(ID_Nqj58tVM3+zjT3js1Mf8TQ)
Content-type: text/x-diff; charset=windows-1252;
 name=0006-Made-checkFTB-wrapable-needed-by-cubereflex-plugin.patch
Content-transfer-encoding: 7BIT
Content-disposition: attachment;
 filename=0006-Made-checkFTB-wrapable-needed-by-cubereflex-plugin.patch



More information about the compiz mailing list