.gitmodules                                            |    3 
 3d                                                     |    1 
 3d/CMakeLists.txt                                      |    5 
 3d/VERSION                                             |    1 
 3d/src/3d.cpp                                          |  615 
 3d/src/3d.h                                            |  156 
 3d/td.xml.in                                           |  111 
 AUTHORS                                                |   58 
 CMakeLists.txt                                         |   13 
 ChangeLog                                              |  711 
 NEWS                                                   |   13 
 VERSION                                                |    1 
 addhelper                                              |    1 
 addhelper/CMakeLists.txt                               |    5 
 addhelper/Makefile                                     |  533 
 addhelper/VERSION                                      |    1 
 addhelper/addhelper.xml.in                             |   63 
 addhelper/src/addhelper.cpp                            |  272 
 addhelper/src/addhelper.h                              |  125 
 animationaddon                                         |    1 
 animationaddon/CMakeLists.txt                          |    7 
 animationaddon/VERSION                                 |    1 
 animationaddon/animationaddon.xml.in                   |  529 
 animationaddon/compiz-animationaddon.pc.in             |   12 
 animationaddon/include/animationaddon/animationaddon.h |  341 
 animationaddon/src/airplane.cpp                        |  769 
 animationaddon/src/animation_tex.h                     |  222 
 animationaddon/src/animationaddon.cpp                  |  287 
 animationaddon/src/beamup.cpp                          |  235 
 animationaddon/src/burn.cpp                            |  424 
 animationaddon/src/dissolve.cpp                        |   66 
 animationaddon/src/domino.cpp                          |  281 
 animationaddon/src/explode.cpp                         |  113 
 animationaddon/src/fold.cpp                            |  253 
 animationaddon/src/glide3.cpp                          |   84 
 animationaddon/src/leafspread.cpp                      |  107 
 animationaddon/src/particle.cpp                        |  327 
 animationaddon/src/polygon.cpp                         | 1995 +
 animationaddon/src/private.h                           |  370 
 animationaddon/src/skewer.cpp                          |  228 
 bench                                                  |    1 
 bench/CMakeLists.txt                                   |    6 
 bench/VERSION                                          |    1 
 bench/bench.xml.in                                     |   83 
 bench/src/bench.cpp                                    |  455 
 bench/src/bench.h                                      |  117 
 bench/src/bench_tex.h                                  |21764 +++++++++++++++++
 bicubic                                                |    1 
 bicubic/CMakeLists.txt                                 |    5 
 bicubic/VERSION                                        |    1 
 bicubic/bicubic.xml.in                                 |   20 
 bicubic/src/bicubic.cpp                                |  316 
 bicubic/src/bicubic.h                                  |   94 
 crashhandler                                           |    1 
 crashhandler/CMakeLists.txt                            |    5 
 crashhandler/VERSION                                   |    1 
 crashhandler/crashhandler.xml.in                       |   35 
 crashhandler/src/crashhandler.cpp                      |  150 
 crashhandler/src/crashhandler.h                        |   48 
 cubeaddon                                              |    1 
 cubeaddon/CMakeLists.txt                               |    6 
 cubeaddon/VERSION                                      |    1 
 cubeaddon/cubeaddon.xml.in                             |  280 
 cubeaddon/images/compizcap.png                         |binary
 cubeaddon/images/cubecap_release.png                   |binary
 cubeaddon/images/fusioncap.png                         |binary
 cubeaddon/src/cubeaddon.cpp                            | 1476 +
 cubeaddon/src/cubeaddon.h                              |  187 
 debian/changelog                                       |    7 
 debian/control                                         |    4 
 debian/watch                                           |    2 
 extrawm                                                |    1 
 extrawm/CMakeLists.txt                                 |    5 
 extrawm/VERSION                                        |    1 
 extrawm/extrawm.xml.in                                 |   41 
 extrawm/src/extrawm.cpp                                |  327 
 extrawm/src/extrawm.h                                  |  116 
 fadedesktop                                            |    1 
 fadedesktop/CMakeLists.txt                             |    5 
 fadedesktop/VERSION                                    |    1 
 fadedesktop/fadedesktop.xml.in                         |   36 
 fadedesktop/src/fadedesktop.cpp                        |  265 
 fadedesktop/src/fadedesktop.h                          |  102 
 firepaint                                              |    1 
 firepaint/CMakeLists.txt                               |    5 
 firepaint/VERSION                                      |    1 
 firepaint/firepaint.xml.in                             |   96 
 firepaint/src/firepaint.cpp                            |  765 
 firepaint/src/firepaint.h                              |  254 
 firepaint/src/firepaint_tex.h                          |  223 
 gears                                                  |    1 
 gears/CMakeLists.txt                                   |    5 
 gears/VERSION                                          |    1 
 gears/gears.xml.in                                     |   19 
 gears/src/gears.cpp                                    |  393 
 gears/src/gears.h                                      |   98 
 grid                                                   |    1 
 group                                                  |    1 
 group/CMakeLists.txt                                   |    5 
 group/VERSION                                          |    1 
 group/group.xml.in                                     |  493 
 group/src/cairo.cpp                                    |  878 
 group/src/glow.cpp                                     |  485 
 group/src/glow.h                                       |   68 
 group/src/group.cpp                                    | 2378 +
 group/src/group.h                                      |  804 
 group/src/group_glow.h                                 |  402 
 group/src/init.cpp                                     |  711 
 group/src/layers.h                                     |  214 
 group/src/paint.cpp                                    | 1300 +
 group/src/queues.cpp                                   |  252 
 group/src/selection.cpp                                |  490 
 group/src/tab.cpp                                      | 3215 ++
 group/src/tabbar.h                                     |  233 
 loginout                                               |    1 
 loginout/CMakeLists.txt                                |    5 
 loginout/VERSION                                       |    1 
 loginout/loginout.xml.in                               |  101 
 loginout/src/loginout.cpp                              |  320 
 loginout/src/loginout.h                                |  115 
 maximumize                                             |    1 
 maximumize/CMakeLists.txt                              |    5 
 maximumize/VERSION                                     |    1 
 maximumize/maximumize.xml.in                           |  157 
 maximumize/src/maximumize.cpp                          |  580 
 maximumize/src/maximumize.h                            |  160 
 mblur                                                  |    1 
 mblur/CMakeLists.txt                                   |    5 
 mblur/VERSION                                          |    1 
 mblur/mblur.xml.in                                     |   68 
 mblur/src/mblur.cpp                                    |  313 
 mblur/src/mblur.h                                      |  100 
 notification                                           |    1 
 notification/CMakeLists.txt                            |    9 
 notification/images/compiz.png                         |binary
 notification/notification.xml.in                       |   50 
 notification/src/notification.cpp                      |   99 
 notification/src/notification.h                        |   57 
 reflex                                                 |    1 
 reflex/CMakeLists.txt                                  |    5 
 reflex/VERSION                                         |    1 
 reflex/images/reflection.png                           |binary
 reflex/reflex.xml.in                                   |   59 
 reflex/src/reflex.cpp                                  |  382 
 reflex/src/reflex.h                                    |  112 
 scalefilter                                            |    1 
 scalefilter/CMakeLists.txt                             |    5 
 scalefilter/VERSION                                    |    1 
 scalefilter/scalefilter.xml.in                         |   85 
 scalefilter/src/scalefilter.cpp                        |  604 
 scalefilter/src/scalefilter.h                          |  158 
 shelf                                                  |    1 
 shelf/CMakeLists.txt                                   |    5 
 shelf/VERSION                                          |    1 
 shelf/shelf.xml.in                                     |   63 
 shelf/src/shelf.cpp                                    |  833 
 shelf/src/shelf.h                                      |  232 
 showdesktop                                            |    1 
 showdesktop/CMakeLists.txt                             |    5 
 showdesktop/VERSION                                    |    1 
 showdesktop/showdesktop.xml.in                         |   99 
 showdesktop/src/showdesktop.cpp                        |  618 
 showdesktop/src/showdesktop.h                          |  195 
 showmouse                                              |    1 
 showmouse/CMakeLists.txt                               |    5 
 showmouse/VERSION                                      |    1 
 showmouse/images/Star.png                              |binary
 showmouse/showmouse.xml.in                             |  127 
 showmouse/src/showmouse.cpp                            |  719 
 showmouse/src/showmouse.h                              |  225 
 showmouse/src/showmouse_tex.h                          |  216 
 splash                                                 |    1 
 splash/CMakeLists.txt                                  |    5 
 splash/VERSION                                         |    1 
 splash/images/splash_background.png                    |binary
 splash/images/splash_logo.png                          |binary
 splash/splash.xml.in                                   |   86 
 splash/src/splash.cpp                                  |  514 
 splash/src/splash.h                                    |  123 
 trailfocus                                             |    1 
 trailfocus/CMakeLists.txt                              |    5 
 trailfocus/VERSION                                     |    1 
 trailfocus/src/trailfocus.cpp                          |  427 
 trailfocus/src/trailfocus.h                            |   97 
 trailfocus/trailfocus.xml.in                           |   97 
 wallpaper                                              |    1 
 wallpaper/CMakeLists.txt                               |    5 
 wallpaper/VERSION                                      |    1 
 wallpaper/src/wallpaper.cpp                            |  699 
 wallpaper/src/wallpaper.h                              |  158 
 wallpaper/wallpaper.xml.in                             |  113 
 widget                                                 |    1 
 widget/CMakeLists.txt                                  |    5 
 widget/VERSION                                         |    1 
 widget/plugin.info                                     |    1 
 widget/src/widget.cpp                                  |  741 
 widget/src/widget.h                                    |  179 
 widget/widget.xml.in                                   |   77 
 198 files changed, 59256 insertions(+), 99 deletions(-)

New commits:
commit 9f91de86c2f12c08733c725ec6ae677fa4718d80
Author: Janos Guljas <ja...@resenje.org>
Date:   Wed Aug 3 23:11:33 2011 +0200

    Prepare changelog and bump Standards-Version.

diff --git a/debian/changelog b/debian/changelog
index 759f12d..fb43935 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+compiz-fusion-plugins-extra (0.9.5.0-0.1) experimental; urgency=low
+
+  * Non-maintainer upload.
+  * New upstream release.
+
+ -- Janos Guljas <ja...@resenje.org>  Tue, 02 Aug 2011 21:31:36 +0200
+
 compiz-fusion-plugins-extra (0.9.2.1+git20110224.e621355c-2) experimental; 
urgency=low
 
   * Fix an FTBFS by adding a Build-Dep on libglibmm-2.4-dev
diff --git a/debian/control b/debian/control
index d43ef41..be72144 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Build-Depends: debhelper (>= 7.0.50~), cmake, pkg-config, 
xsltproc,
  libglibmm-2.4-dev,
  librsvg2-dev, libcairo2-dev, libsm-dev, libdbus-1-dev, libjpeg62-dev,
  libxslt1-dev, libglu1-mesa-dev, libnotify-dev,
- libboost1.42-dev, libboost-serialization1.42-dev
-Standards-Version: 3.9.1
+ libboost-dev, libboost-serialization-dev
+Standards-Version: 3.9.2
 Section: x11
 Vcs-Git: 
git://git.debian.org/git/pkg-xorg/bling/compiz-fusion-plugins-extra.git
 Vcs-Browser: 
http://git.debian.org/?p=pkg-xorg/bling/compiz-fusion-plugins-extra.git

commit f8c8a183d0e2aa005650816bea09e6ba407ce593
Author: Janos Guljas <ja...@resenje.org>
Date:   Tue Aug 2 21:31:35 2011 +0200

    Imported Upstream version 0.9.5.0

diff --git a/.gitmodules b/.gitmodules
index 5d9e8d4..5b3d7f3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -31,9 +31,6 @@
 [submodule "gears"]
        path = gears
        url = git://git.compiz.org/compiz/plugins/gears
-[submodule "grid"]
-       path = grid
-       url = git://git.compiz.org/compiz/plugins/grid
 [submodule "group"]
        path = group
        url = git://git.compiz.org/compiz/plugins/group
diff --git a/3d b/3d
deleted file mode 160000
index f7d0ff9..0000000
--- a/3d
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f7d0ff9195ff276491e45972c0af1c58eed163c6
diff --git a/3d/CMakeLists.txt b/3d/CMakeLists.txt
new file mode 100644
index 0000000..9740db0
--- /dev/null
+++ b/3d/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin (td PLUGINDEPS composite opengl cube)
diff --git a/3d/VERSION b/3d/VERSION
new file mode 100644
index 0000000..719a233
--- /dev/null
+++ b/3d/VERSION
@@ -0,0 +1 @@
+0.9.5.0
diff --git a/3d/src/3d.cpp b/3d/src/3d.cpp
new file mode 100644
index 0000000..6a3f7ee
--- /dev/null
+++ b/3d/src/3d.cpp
@@ -0,0 +1,615 @@
+#include "3d.h"
+
+COMPIZ_PLUGIN_20090315 (td, TdPluginVTable);
+
+void
+setFunctions (bool enabled)
+{
+    TD_SCREEN (screen);
+
+    tds->gScreen->glPaintOutputSetEnabled (tds, enabled);
+    tds->gScreen->glApplyTransformSetEnabled (tds, enabled);
+    tds->cScreen->donePaintSetEnabled (tds, enabled);
+    tds->cubeScreen->cubePaintViewportSetEnabled (tds, enabled);
+    tds->cubeScreen->cubeShouldPaintViewportSetEnabled (tds, enabled);
+    tds->cubeScreen->cubeShouldPaintAllViewportsSetEnabled (tds, enabled);
+
+    foreach (CompWindow *w, screen->windows ())
+    {
+       TD_WINDOW (w);
+
+       tdw->gWindow->glPaintSetEnabled (tdw, enabled);
+    }
+}
+
+bool
+TdWindow::is3D ()
+{
+    if (window->overrideRedirect ())
+       return false;
+
+    if (!window->isViewable () || window->shaded ())
+       return false;
+
+    if (window->state () & (CompWindowStateSkipPagerMask |
+                   CompWindowStateSkipTaskbarMask))
+       return false;
+
+    if (!TdScreen::get (screen)->optionGetWindowMatch ().evaluate (window))
+       return false;
+
+    return true;
+}
+
+void
+TdScreen::preparePaint (int msSinceLastPaint)
+{
+    bool       active;
+
+    CUBE_SCREEN (screen);
+
+    active = (cs->rotationState () != CubeScreen::RotationNone) && 
screen->vpSize ().width () > 2 &&
+            !(optionGetManualOnly () && (cs->rotationState () != 
CubeScreen::RotationManual));
+
+    if (active || mBasicScale != 1.0)
+    {
+       float maxDiv = (float) optionGetMaxWindowSpace () / 100;
+       float minScale = (float) optionGetMinCubeSize () / 100;
+       float x, progress;
+
+       cs->cubeGetRotation (x, x, progress);
+
+       mMaxDepth = 0;
+       foreach (CompWindow *w, screen->windows ())
+       {
+           TD_WINDOW (w);
+           tdw->mIs3D = false;
+           tdw->mDepth = 0;
+
+           if (!tdw->is3D ())
+               continue;
+
+           tdw->mIs3D = true;
+           mMaxDepth++;
+           tdw->mDepth = mMaxDepth;
+
+       }
+
+       minScale =  MAX (minScale, 1.0 - (mMaxDepth * maxDiv));
+       mBasicScale = 1.0 - ((1.0 - minScale) * progress);
+       mDamage = (progress != 0.0 && progress != 1.0);
+    }
+    else
+    {
+       mBasicScale = 1.0;
+    }
+
+    /* comparing float values with != is error prone, so better cache
+       the comparison and allow a small difference */
+    mActive       = (fabs (mBasicScale - 1.0f) > 1e-4);
+    mCurrentScale = mBasicScale;
+
+    cScreen->preparePaint (msSinceLastPaint);
+
+    setFunctions (mActive);
+}
+
+#define DOBEVEL(corner) (tds->optionGetBevel##corner () ? bevel : 0)
+
+#define SET_V                                                                 \
+    for (int i = 0; i < 4; i++)                                                
       \
+       v[i] = tPoint[i];
+
+#define ADDQUAD(x1,y1,x2,y2)                                      \
+       point[GLVector::x] = x1; point[GLVector::y] = y1;                       
        \
+       tPoint = transform * point;       \
+       SET_V \
+       glVertex4fv (v);                                  \
+       point[GLVector::x] = x2; point[GLVector::y] = y2;                       
        \
+       tPoint = transform * point;        \
+       SET_V \
+       glVertex4fv (v);                                   \
+       tPoint = tds->mBTransform * point; \
+       SET_V \
+       glVertex4fv (v);                                \
+       point[GLVector::x] = x1; point[GLVector::y] = y1;                       
        \
+       tPoint = tds->mBTransform * point; \
+       SET_V \
+       glVertex4fv (v);                                   \
+
+#define ADDBEVELQUAD(x1,y1,x2,y2,m1,m2)             \
+       point[GLVector::x] = x1; point[GLVector::y] = y1;                 \
+       tPoint = m1 * point; \
+       SET_V \
+       glVertex4fv (v);                     \
+       tPoint = m2 * point; \
+       SET_V \
+       glVertex4fv (v);                     \
+       point[GLVector::x] = x2; point[GLVector::y] = y2;                 \
+       tPoint = m2 * point; \
+       SET_V \
+       glVertex4fv (v);                     \
+       tPoint = m1 * point; \
+       SET_V \
+       glVertex4fv (v);                     \
+
+bool
+TdWindow::glPaintWithDepth (const GLWindowPaintAttrib &attrib,
+                           const GLMatrix            &transform,
+                           const CompRegion          &region,
+                           unsigned int              mask)
+{
+    bool status;
+    int            wx, wy, ww, wh;
+    int            bevel, cull, cullInv;
+    GLVector       point, tPoint;
+    unsigned short *c;
+
+    TD_SCREEN (screen);
+    CUBE_SCREEN (screen);
+
+    glIsEnabled (GL_CULL_FACE);
+
+    wx = window->x () - window->input ().left;
+    wy = window->y () - window->input ().top;
+
+    ww = window->width () + window->input ().left + window->input ().right;
+    wh = window->height () + window->input ().top + window->input ().bottom;
+
+    bevel = tds->optionGetBevel ();
+
+    glGetIntegerv (GL_CULL_FACE_MODE, &cull);
+    cullInv = (cull == GL_BACK)? GL_FRONT : GL_BACK;
+
+    if (ww && wh && !(mask & PAINT_WINDOW_OCCLUSION_DETECTION_MASK) &&
+       ((cs->paintOrder () == FTB && mFtb) ||
+       (cs->paintOrder () == BTF && !mFtb)))
+    {
+        float v[4];
+       int   temp;
+
+       /* Paint window depth. */
+       glPushMatrix ();
+       glLoadIdentity ();
+
+       if (cs->paintOrder () == BTF)
+           glCullFace (cullInv);
+
+       glEnable (GL_BLEND);
+       glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+       if (window->id () == screen->activeWindow ())
+           c = tds->optionGetWidthColor ();
+       else
+           c = tds->optionGetWidthColorInactive ();
+
+       temp = c[3] * gWindow->paintAttrib ().opacity;
+       temp /= 0xffff;
+       glColor4us (c[0], c[1], c[2], temp);
+
+       point[GLVector::z] = 0.0f;
+       point[GLVector::w] = 1.0f;
+
+       glBegin (GL_QUADS);
+
+       /* Top */
+       ADDQUAD (wx + ww - DOBEVEL (Topleft), wy + 0.01,
+                wx + DOBEVEL (Topright), wy + 0.01);
+
+       /* Bottom */
+       ADDQUAD (wx + DOBEVEL (Bottomleft), wy + wh - 0.01,
+                wx + ww - DOBEVEL (Bottomright), wy + wh - 0.01);
+
+       /* Left */
+       ADDQUAD (wx + 0.01, wy + DOBEVEL (Topleft),
+                wx + 0.01, wy + wh - DOBEVEL (Bottomleft));
+
+       /* Right */
+       ADDQUAD (wx + ww - 0.01, wy + wh - DOBEVEL (Topright),
+                wx + ww - 0.01, wy + DOBEVEL (Bottomright));
+
+       /* Top left bevel */
+       if (tds->optionGetBevelTopleft ())
+       {
+           ADDBEVELQUAD (wx + bevel / 2.0f,
+                         wy + bevel - bevel / 1.2f,
+                         wx, wy + bevel,
+                         tds->mBTransform, transform);
+
+           ADDBEVELQUAD (wx + bevel / 2.0f,
+                         wy + bevel - bevel / 1.2f,
+                         wx + bevel, wy,
+                         transform, tds->mBTransform);
+
+       }
+
+       /* Bottom left bevel */
+       if (tds->optionGetBevelBottomleft ())
+       {
+           ADDBEVELQUAD (wx + bevel / 2.0f,
+                         wy + wh - bevel + bevel / 1.2f,
+                         wx, wy + wh - bevel,
+                         transform, tds->mBTransform);
+
+           ADDBEVELQUAD (wx + bevel / 2.0f,
+                         wy + wh - bevel + bevel / 1.2f,
+                         wx + bevel, wy + wh,
+                         tds->mBTransform, transform);
+       }
+
+       /* Bottom right bevel */
+       if (tds->optionGetBevelBottomright ())
+       {
+           ADDBEVELQUAD (wx + ww - bevel / 2.0f,
+                         wy + wh - bevel + bevel / 1.2f,
+                         wx + ww - bevel, wy + wh,
+                         transform, tds->mBTransform);
+
+           ADDBEVELQUAD (wx + ww - bevel / 2.0f,
+                         wy + wh - bevel + bevel / 1.2f,
+                         wx + ww, wy + wh - bevel,
+                         tds->mBTransform, transform);
+
+
+       }
+
+       /* Top right bevel */
+       if (tds->optionGetBevelTopright ())
+       {
+           ADDBEVELQUAD (wx + ww - bevel, wy,
+                         wx + ww - bevel / 2.0f,
+                         wy + bevel - bevel / 1.2f,
+                         transform, tds->mBTransform);
+
+           ADDBEVELQUAD (wx + ww, wy + bevel,
+                         wx + ww - bevel / 2.0f,
+                         wy + bevel - bevel / 1.2f,
+                         tds->mBTransform, transform);
+       }
+       glEnd ();
+
+       glColor4usv (defaultColor);
+       glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+       glPopMatrix ();
+
+       if (cs->paintOrder () == BTF)
+           glCullFace (cull);
+    }
+
+    if (cs->paintOrder () == BTF)
+       status = gWindow->glPaint (attrib, transform, region, mask);
+    else
+       status = gWindow->glPaint (attrib, tds->mBTransform, region,
+                                  mask | PAINT_WINDOW_TRANSFORMED_MASK);
+
+    return status;
+}
+
+bool
+TdWindow::glPaint (const GLWindowPaintAttrib &attrib,
+                  const GLMatrix            &transform,
+                  const CompRegion          &region,
+                  unsigned int              mask)
+{
+    bool           status;
+
+    TD_SCREEN (screen);
+
+    if (mDepth != 0.0f && !tds->mPainting3D && tds->mActive)
+       mask |= PAINT_WINDOW_NO_CORE_INSTANCE_MASK;
+
+    if (tds->mPainting3D && tds->optionGetWidth () && (mDepth != 0.0f) &&
+       tds->mWithDepth)
+    {
+       status = glPaintWithDepth (attrib, transform, region, mask);
+    }
+    else
+    {
+       status = gWindow->glPaint (attrib, transform, region, mask);
+    }
+
+    return status;
+}
+
+void
+TdScreen::glApplyTransform (const GLScreenPaintAttrib &attrib,
+                           CompOutput *output,
+                           GLMatrix *transform)
+{
+
+    gScreen->glApplyTransform (attrib, output, transform);
+
+    transform->scale (mCurrentScale, mCurrentScale, mCurrentScale);
+}
+
+
+void
+TdScreen::cubePaintViewport (const GLScreenPaintAttrib &attrib,
+                            const GLMatrix            &transform,
+                            const CompRegion          &region,
+                            CompOutput                *output,
+                            unsigned int              mask)
+{
+    CUBE_SCREEN (screen);
+
+    if (cs->paintOrder () == BTF)
+    {
+        cs->cubePaintViewport (attrib, transform,region, output, mask);
+    }
+
+    if (mActive)
+    {
+       GLMatrix      mTransform; // NOT a member variable
+       GLMatrix      screenSpace;
+       GLMatrix      screenSpaceOffset;
+       TdWindow      *tdw;
+       CompWindowList                   pl;
+       CompWindowList::iterator it;
+       float         wDepth = 0.0;
+       float         pointZ = cs->invert () * cs->distance ();
+       unsigned int  newMask;
+
+       std::vector<GLVector> vPoints;
+       vPoints.push_back (GLVector (-0.5, 0.0, pointZ, 1.0));
+       vPoints.push_back (GLVector (0.0, 0.5, pointZ, 1.0));
+       vPoints.push_back (GLVector (0.0, 0.0, pointZ, 1.0));
+
+       if (mWithDepth)
+           wDepth = -MIN((optionGetWidth ()) / 30, (1.0 - mBasicScale) /
+                         mMaxDepth);
+
+       if (wDepth != 0.0)
+       {
+           /* all BTF windows in normal order */
+           foreach (CompWindow *w, screen->windows ())
+           {
+               tdw = TdWindow::get (w);
+
+               if (!tdw->mIs3D)
+                   continue;
+
+               mCurrentScale = mBasicScale +
+                                   (tdw->mDepth * ((1.0 - mBasicScale) /
+                                   mMaxDepth));
+
+               tdw->mFtb = cs->cubeCheckOrientation (attrib, transform, output,
+                                                 vPoints);
+           }
+       }
+
+       mCurrentScale = mBasicScale;
+       mPainting3D   = true;
+
+       gScreen->setLighting (true);
+
+       screenSpace.reset ();
+       screenSpace.toScreenSpace (output, -attrib.zTranslate);
+
+       glPushMatrix ();
+
+       pl = cScreen->getWindowPaintList ();
+
+       /* paint all windows from bottom to top */
+       for (it = pl.begin (); it != pl.end (); it++)
+       {
+           CompWindow *w = (*it);
+           tdw = TdWindow::get (w);
+
+           if (w->destroyed ())
+               continue;
+
+           if (!w->shaded () || !w->isViewable ())
+           {
+               if (!tdw->cWindow->damaged ())
+                   continue;
+           }
+
+           mTransform = transform;
+           newMask = PAINT_WINDOW_ON_TRANSFORMED_SCREEN_MASK;
+
+           if (tdw->mDepth != 0.0f)
+           {
+               mCurrentScale = mBasicScale +
+                                   (tdw->mDepth * ((1.0 - mBasicScale) /
+                                                  mMaxDepth));
+
+               if (wDepth != 0.0)
+               {
+                   mCurrentScale += wDepth;
+                   mBTransform   = transform;
+                   gScreen->glApplyTransform (attrib, output, &mBTransform);
+                   mCurrentScale -= wDepth;
+               }
+
+               gScreen->glApplyTransform (attrib, output, &mTransform);
+
+               gScreen->glEnableOutputClipping (mTransform, region, output);
+
+               if ((cScreen->windowPaintOffset ().x () != 0 ||
+                    cScreen->windowPaintOffset ().y () != 0) &&
+                   !w->onAllViewports ())
+               {
+                   CompPoint moveOffset;
+                   moveOffset = w->getMovementForOffset (
+                                       cScreen->windowPaintOffset ());
+
+                   screenSpaceOffset = screenSpace;
+                   screenSpaceOffset.translate (moveOffset.x (),
+                                                moveOffset.y (), 0);
+
+                   if (wDepth != 0.0)
+                       mBTransform = mBTransform * screenSpaceOffset;
+                   mTransform = mTransform * screenSpaceOffset;
+
+                   newMask |= PAINT_WINDOW_WITH_OFFSET_MASK;
+               }
+               else
+               {
+                   if (wDepth != 0.0)
+                       mBTransform = mBTransform * screenSpace;
+                   mTransform = mTransform * screenSpace;
+               }
+
+               glLoadMatrixf (mTransform.getMatrix ());
+
+               tdw->gWindow->glPaint (tdw->gWindow->paintAttrib (), mTransform,
+                                 infiniteRegion, newMask);
+
+               gScreen->glDisableOutputClipping ();
+
+           }
+       }
+
+       glPopMatrix ();
+
+       mPainting3D   = false;
+       mCurrentScale = mBasicScale;
+
+    }
+
+
+    if (cs->paintOrder () == FTB)
+    {
+        cs->cubePaintViewport (attrib, transform, region, output, mask);
+    }
+}
+
+bool
+TdScreen::cubeShouldPaintAllViewports ()
+{
+    return true;
+}
+
+bool
+TdScreen::cubeShouldPaintViewport (const GLScreenPaintAttrib &attrib,
+                                  const GLMatrix            &transform,
+                                  CompOutput                *outputPtr,
+                                  PaintOrder                order)
+{
+    bool rv = false;
+
+    CUBE_SCREEN (screen);
+
+    rv = cs->cubeShouldPaintViewport (attrib, transform, outputPtr, order);
+
+    if (mActive)
+    {
+       float pointZ = cs->invert () * cs->distance ();
+       bool  ftb1, ftb2;
+
+       std::vector<GLVector> vPoints;
+
+       vPoints.push_back (GLVector (-0.5, 0.0, pointZ, 1.0));
+       vPoints.push_back (GLVector (0.0, 0.5, pointZ, 1.0));
+       vPoints.push_back (GLVector (0.0, 0.0, pointZ, 1.0));
+
+       mCurrentScale = 1.0;
+
+       ftb1 = cs->cubeCheckOrientation (attrib, transform, outputPtr, vPoints);
+
+       mCurrentScale = mBasicScale;
+
+       ftb2 = cs->cubeCheckOrientation (attrib, transform, outputPtr, vPoints);
+
+       return (order == FTB && (ftb1 || ftb2)) ||
+              (order == BTF && (!ftb1 || !ftb2)) || rv;
+    }
+
+    return true;
+}
+
+bool
+TdScreen::glPaintOutput (const GLScreenPaintAttrib &attrib,
+                        const GLMatrix            &transform,
+                        const CompRegion          &region,
+                        CompOutput                *output,
+                        unsigned int              mask)
+{
+    bool status;
+
+    if (mActive)
+    {
+       CompPlugin *p;
+
+       mask |= PAINT_SCREEN_TRANSFORMED_MASK |
+               PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK |
+               PAINT_SCREEN_NO_OCCLUSION_DETECTION_MASK;
+
+       mWithDepth = true;
+
+       p = CompPlugin::find ("cubeaddon");
+       if (p)
+       {
+           CompOption::Vector &options = p->vTable->getOptions ();
+           CompOption option;
+
+           mWithDepth = (CompOption::getIntOptionNamed
+                                             (options, "deformation", 0) == 0);
+       }
+    }
+
+
+    status = gScreen->glPaintOutput (attrib, transform, region, output, mask);
+
+    return status;
+}
+
+void
+TdScreen::donePaint ()
+{
+    if (mActive && mDamage)
+    {
+       mDamage = false;
+       cScreen->damageScreen ();
+    }
+
+    cScreen->donePaint ();
+}
+
+TdScreen::TdScreen (CompScreen *screen) :
+    PluginClassHandler <TdScreen, CompScreen> (screen),
+    cScreen (CompositeScreen::get (screen)),
+    gScreen (GLScreen::get (screen)),
+    cubeScreen (CubeScreen::get (screen)),
+    mActive (false),
+    mPainting3D (false),
+    mCurrentScale (1.0f),
+    mBasicScale (1.0f)
+{
+    CompositeScreenInterface::setHandler (cScreen, false);
+    GLScreenInterface::setHandler (gScreen, false);
+    CubeScreenInterface::setHandler (cubeScreen, false);
+
+    cScreen->preparePaintSetEnabled (this, true);
+}
+
+TdScreen::~TdScreen ()
+{
+}
+
+TdWindow::TdWindow (CompWindow *window) :
+    PluginClassHandler <TdWindow, CompWindow> (window),
+    window (window),
+    cWindow (CompositeWindow::get (window)),
+    gWindow (GLWindow::get (window)),
+    mIs3D (false),
+    mDepth (0.0f)
+{
+    GLWindowInterface::setHandler (gWindow, false);
+}
+
+TdWindow::~TdWindow ()
+{
+}
+
+bool
+TdPluginVTable::init ()
+{
+    if (!CompPlugin::checkPluginABI ("core", CORE_ABIVERSION) ||
+       !CompPlugin::checkPluginABI ("cube", COMPIZ_CUBE_ABI) ||
+        !CompPlugin::checkPluginABI ("composite", COMPIZ_COMPOSITE_ABI) ||
+        !CompPlugin::checkPluginABI ("opengl", COMPIZ_OPENGL_ABI))
+        return false;
+
+    return true;
+}
diff --git a/3d/src/3d.h b/3d/src/3d.h
new file mode 100644
index 0000000..a0614c5
--- /dev/null
+++ b/3d/src/3d.h
@@ -0,0 +1,156 @@
+/*
+ *
+ * Compiz 3d plugin
+ *
+ * 3d.c
+ *
+ * Copyright : (C) 2006 by Roi Cohen
+ * E-mail    : roic...@gmail.com
+ *
+ * Modified by : Dennis Kasprzyk <onest...@opencompositing.org>
+ *               Danny Baumann <man...@opencompositing.org>
+ *               Robert Carr <rac...@beryl-project.org>
+ *               Diogo Ferreira <di...@underdev.org>
+ *              Kevin Lange <kla...@ogunderground.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/** TODO:
+  1. Add 3d shadows / projections.
+  2. Add an option to select z-order of windows not only by viewports,
+     but also by screens.
+*/
+
+#include <core/core.h>
+#include <core/pluginclasshandler.h>
+
+#include <composite/composite.h>
+#include <opengl/opengl.h>
+
+#include <cube/cube.h>
+
+#include <cmath>
+
+#include "td_options.h"
+
+#define PI 3.14159265359f
+
+class TdScreen :
+    public PluginClassHandler <TdScreen, CompScreen>,
+    public CompositeScreenInterface,
+    public GLScreenInterface,
+    public CubeScreenInterface,
+    public TdOptions
+{
+    public:
+    
+       TdScreen (CompScreen *);
+       ~TdScreen ();
+       
+       CompositeScreen *cScreen;
+       GLScreen        *gScreen;
+       CubeScreen      *cubeScreen;
+       
+       void
+       preparePaint (int);
+       
+       bool
+       glPaintOutput (const GLScreenPaintAttrib &,
+                      const GLMatrix            &,
+                      const CompRegion          &,
+                      CompOutput                *,
+                      unsigned int                );
+       
+       void
+       donePaint ();
+       
+       void
+       glApplyTransform (const GLScreenPaintAttrib &,
+                         CompOutput                *,
+                         GLMatrix                  *);
+       
+       void
+       cubePaintViewport (const GLScreenPaintAttrib &,
+                          const GLMatrix            &,
+                          const CompRegion          &,
+                          CompOutput                *,
+                          unsigned int                 );
+                          
+       bool
+       cubeShouldPaintViewport (const GLScreenPaintAttrib &,


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1qoijc-0004ni...@vasks.debian.org

Reply via email to