summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorDennis Kasprzyk <onestone@compiz-fusion.org>2009-03-15 06:09:18 +0100
committerDennis kasprzyk <onestone@compiz-fusion.org>2009-03-15 06:09:18 +0100
commit163f6b6f3c3b7764987cbdf8e03cc355edeaa499 (patch)
tree4278afde195343dcb8277b0bb0b6efc926ce8907 /plugins
parent28e45c55c11e20206d3bc9056aea8fc7f1b7a0e7 (diff)
downloadcompiz-with-glib-mainloop-163f6b6f3c3b7764987cbdf8e03cc355edeaa499.tar.gz
compiz-with-glib-mainloop-163f6b6f3c3b7764987cbdf8e03cc355edeaa499.tar.bz2
New generalized build system.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CMakeLists.txt125
-rw-r--r--plugins/blur/CMakeLists.txt8
-rw-r--r--plugins/blur/blur.xml.in111
-rw-r--r--plugins/blur/src/blur.cpp (renamed from plugins/blur.cpp)0
-rw-r--r--plugins/blur/src/blur.h (renamed from plugins/blur.h)0
-rw-r--r--plugins/commands/CMakeLists.txt5
-rw-r--r--plugins/commands/commands.xml.in225
-rw-r--r--plugins/commands/src/commands.cpp (renamed from plugins/commands.cpp)0
-rw-r--r--plugins/commands/src/commands.h (renamed from plugins/commands.h)0
-rw-r--r--plugins/composite/CMakeLists.txt30
-rw-r--r--plugins/composite/compiz-composite.pc.in12
-rw-r--r--plugins/composite/composite.xml.in34
-rw-r--r--plugins/composite/include/composite/composite.h264
-rw-r--r--plugins/composite/src/composite.cpp (renamed from plugins/composite/composite.cpp)0
-rw-r--r--plugins/composite/src/privates.h (renamed from plugins/composite/privates.h)0
-rw-r--r--plugins/composite/src/screen.cpp (renamed from plugins/composite/screen.cpp)0
-rw-r--r--plugins/composite/src/window.cpp (renamed from plugins/composite/window.cpp)0
-rw-r--r--plugins/copytex/CMakeLists.txt5
-rw-r--r--plugins/copytex/copytex.xml.in11
-rw-r--r--plugins/copytex/src/copytex.cpp (renamed from plugins/copytex.cpp)0
-rw-r--r--plugins/copytex/src/copytex.h (renamed from plugins/copytex.h)0
-rw-r--r--plugins/decor/CMakeLists.txt5
-rw-r--r--plugins/decor/decor.xml.in74
-rw-r--r--plugins/decor/src/decor.cpp (renamed from plugins/decor.cpp)0
-rw-r--r--plugins/decor/src/decor.h (renamed from plugins/decor.h)0
-rw-r--r--plugins/fade/CMakeLists.txt5
-rw-r--r--plugins/fade/fade.xml.in81
-rw-r--r--plugins/fade/src/fade.cpp (renamed from plugins/fade.cpp)0
-rw-r--r--plugins/fade/src/fade.h (renamed from plugins/fade.h)0
-rw-r--r--plugins/gnomecompat/CMakeLists.txt5
-rw-r--r--plugins/gnomecompat/gnomecompat.xml.in52
-rw-r--r--plugins/gnomecompat/src/gnomecompat.cpp (renamed from plugins/gnomecompat.cpp)0
-rw-r--r--plugins/gnomecompat/src/gnomecompat.h (renamed from plugins/gnomecompat.h)0
-rw-r--r--plugins/imgpng/CMakeLists.txt5
-rw-r--r--plugins/imgpng/imgpng.xml.in8
-rw-r--r--plugins/imgpng/src/imgpng.cpp (renamed from plugins/imgpng.cpp)0
-rw-r--r--plugins/imgpng/src/imgpng.h (renamed from plugins/imgpng.h)0
-rw-r--r--plugins/imgsvg/CMakeLists.txt5
-rw-r--r--plugins/imgsvg/imgsvg.xml.in8
-rw-r--r--plugins/imgsvg/src/imgsvg.cpp (renamed from plugins/imgsvg.cpp)0
-rw-r--r--plugins/imgsvg/src/imgsvg.h (renamed from plugins/imgsvg.h)0
-rw-r--r--plugins/ini/CMakeLists.txt5
-rw-r--r--plugins/ini/ini.xml.in6
-rw-r--r--plugins/ini/src/ini.cpp (renamed from plugins/ini.cpp)0
-rw-r--r--plugins/ini/src/ini.h (renamed from plugins/ini.h)0
-rw-r--r--plugins/inotify/CMakeLists.txt10
-rw-r--r--plugins/inotify/inotify.xml.in6
-rw-r--r--plugins/inotify/src/inotify.cpp (renamed from plugins/inotify.cpp)0
-rw-r--r--plugins/inotify/src/inotify.h (renamed from plugins/inotify.h)0
-rw-r--r--plugins/move/CMakeLists.txt5
-rw-r--r--plugins/move/move.xml.in46
-rw-r--r--plugins/move/src/move.cpp (renamed from plugins/move.cpp)0
-rw-r--r--plugins/move/src/move.h (renamed from plugins/move.h)0
-rw-r--r--plugins/obs/CMakeLists.txt5
-rw-r--r--plugins/obs/obs.xml.in161
-rw-r--r--plugins/obs/src/obs.cpp (renamed from plugins/obs.cpp)0
-rw-r--r--plugins/obs/src/obs.h (renamed from plugins/obs.h)0
-rw-r--r--plugins/opengl/CMakeLists.txt43
-rw-r--r--plugins/opengl/compiz-opengl.pc.in12
-rw-r--r--plugins/opengl/include/opengl/fragment.h114
-rw-r--r--plugins/opengl/include/opengl/matrix.h66
-rw-r--r--plugins/opengl/include/opengl/opengl.h418
-rw-r--r--plugins/opengl/include/opengl/texture.h130
-rw-r--r--plugins/opengl/include/opengl/vector.h76
-rw-r--r--plugins/opengl/opengl.xml.in47
-rw-r--r--plugins/opengl/src/fragment.cpp (renamed from plugins/opengl/fragment.cpp)0
-rw-r--r--plugins/opengl/src/matrix.cpp (renamed from plugins/opengl/matrix.cpp)0
-rw-r--r--plugins/opengl/src/opengl.cpp (renamed from plugins/opengl/opengl.cpp)0
-rw-r--r--plugins/opengl/src/paint.cpp (renamed from plugins/opengl/paint.cpp)0
-rw-r--r--plugins/opengl/src/privatefragment.h (renamed from plugins/opengl/privatefragment.h)0
-rw-r--r--plugins/opengl/src/privates.h (renamed from plugins/opengl/privates.h)0
-rw-r--r--plugins/opengl/src/privatetexture.h (renamed from plugins/opengl/privatetexture.h)0
-rw-r--r--plugins/opengl/src/screen.cpp (renamed from plugins/opengl/screen.cpp)0
-rw-r--r--plugins/opengl/src/texture.cpp (renamed from plugins/opengl/texture.cpp)0
-rw-r--r--plugins/opengl/src/vector.cpp (renamed from plugins/opengl/vector.cpp)0
-rw-r--r--plugins/opengl/src/window.cpp (renamed from plugins/opengl/window.cpp)0
-rw-r--r--plugins/place/CMakeLists.txt5
-rw-r--r--plugins/place/place.xml.in116
-rw-r--r--plugins/place/src/place.cpp (renamed from plugins/place.cpp)0
-rw-r--r--plugins/place/src/place.h (renamed from plugins/place.h)0
-rw-r--r--plugins/regex/CMakeLists.txt5
-rw-r--r--plugins/regex/regex.xml.in6
-rw-r--r--plugins/regex/src/regex.cpp (renamed from plugins/regex.cpp)0
-rw-r--r--plugins/regex/src/regexplugin.h (renamed from plugins/regexplugin.h)0
-rw-r--r--plugins/resize/CMakeLists.txt5
-rw-r--r--plugins/resize/resize.xml.in107
-rw-r--r--plugins/resize/src/resize.cpp (renamed from plugins/resize.cpp)0
-rw-r--r--plugins/resize/src/resize.h (renamed from plugins/resize.h)0
-rw-r--r--plugins/scale/CMakeLists.txt31
-rw-r--r--plugins/scale/compiz-scale.pc.in12
-rw-r--r--plugins/scale/include/scale/scale.h130
-rw-r--r--plugins/scale/scale.xml.in158
-rw-r--r--plugins/scale/src/privates.h (renamed from plugins/scale/privates.h)0
-rw-r--r--plugins/scale/src/scale.cpp (renamed from plugins/scale/scale.cpp)0
-rw-r--r--plugins/switcher/CMakeLists.txt5
-rw-r--r--plugins/switcher/src/switcher.cpp (renamed from plugins/switcher.cpp)0
-rw-r--r--plugins/switcher/src/switcher.h (renamed from plugins/switcher.h)0
-rw-r--r--plugins/switcher/switcher.xml.in156
-rw-r--r--plugins/water/CMakeLists.txt5
-rw-r--r--plugins/water/src/water.cpp (renamed from plugins/water.cpp)0
-rw-r--r--plugins/water/src/water.h (renamed from plugins/water.h)0
-rw-r--r--plugins/water/water.xml.in60
-rw-r--r--plugins/zoom/CMakeLists.txt5
-rw-r--r--plugins/zoom/src/zoom.cpp (renamed from plugins/zoom.cpp)0
-rw-r--r--plugins/zoom/src/zoom.h (renamed from plugins/zoom.h)0
-rw-r--r--plugins/zoom/zoom.xml.in62
106 files changed, 2885 insertions, 211 deletions
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
index 79f4ca4..7efa39d 100644
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -1,122 +1,9 @@
-include (CheckIncludeFile)
+set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
+include (CompizDefaults)
+include (CompizCommon)
-set (CMAKE_INSTALL_RPATH ${compiz_plugindir} ${libdir})
+set (COMPIZ_FOUND "true")
-add_subdirectory (composite)
-add_subdirectory (opengl)
-add_subdirectory (scale)
+add_definitions ( -DHAVE_CONFIG_H)
-add_library (decor MODULE decor.cpp)
-target_link_libraries (decor composite opengl decoration)
-
-add_library (move MODULE move.cpp)
-target_link_libraries (move composite opengl)
-
-add_library (resize MODULE resize.cpp)
-target_link_libraries (resize composite opengl)
-
-add_library (copytex MODULE copytex.cpp)
-target_link_libraries (copytex composite opengl)
-
-add_library (zoom MODULE zoom.cpp)
-target_link_libraries (zoom composite opengl)
-
-add_library (water MODULE water.cpp)
-target_link_libraries (water composite opengl)
-
-add_library (ini MODULE ini.cpp)
-
-add_library (switcher MODULE switcher.cpp)
-target_link_libraries (switcher composite opengl)
-
-add_library (place MODULE place.cpp)
-target_link_libraries (place)
-
-add_library (regex MODULE regex.cpp)
-target_link_libraries (regex)
-
-add_library (gnomecompat MODULE gnomecompat.cpp)
-target_link_libraries (gnomecompat)
-
-add_library (commands MODULE commands.cpp)
-target_link_libraries (commands)
-
-add_library (fade MODULE fade.cpp)
-target_link_libraries (fade composite opengl)
-
-add_library (obs MODULE obs.cpp)
-target_link_libraries (obs composite opengl)
-
-install (
- TARGETS decor move resize copytex zoom water ini switcher
- place regex gnomecompat commands fade obs
- DESTINATION ${compiz_plugindir}
-)
-
-check_include_file ("sys/inotify.h" HAS_INOTIFY)
-
-if (HAS_INOTIFY)
- add_library (inotify MODULE inotify.cpp)
- install (
- TARGETS inotify
- DESTINATION ${compiz_plugindir}
- )
-endif (HAS_INOTIFY)
-
-pkg_check_modules (LIBPNG libpng)
-if (LIBPNG_FOUND)
- add_library (imgpng MODULE imgpng.cpp)
- target_link_libraries (imgpng ${LIBPNG_LIBRARIES})
- include_directories (
- ${LIBPNG_INCLUDE_DIRS}
- )
- install (
- TARGETS imgpng
- DESTINATION ${compiz_plugindir}
- )
-endif (LIBPNG_FOUND)
-
-pkg_check_modules (LIBRSVG cairo>=1.0 cairo-xlib librsvg-2.0>=2.14.0)
-if (LIBRSVG_FOUND)
- add_library (imgsvg MODULE imgsvg.cpp)
- target_link_libraries (imgsvg opengl decoration ${LIBRSVG_LIBRARIES})
- include_directories (
- ${LIBRSVG_INCLUDE_DIRS}
- )
- install (
- TARGETS imgsvg
- DESTINATION ${compiz_plugindir}
- )
-endif (LIBRSVG_FOUND)
-
-find_package (OpenGL)
-if (OPENGL_GLU_FOUND)
- add_library (blur MODULE blur.cpp)
- target_link_libraries (blur opengl composite decoration ${OPENGL_glu_LIBRARY})
- include_directories (
- ${OPENGL_INCLUDE_DIR}
- )
- install (
- TARGETS blur
- DESTINATION ${compiz_plugindir}
- )
-endif (OPENGL_GLU_FOUND)
-
-link_directories (${compiz_plugindir})
-
-include_directories (
- ${compiz_SOURCE_DIR}/include
- ${compiz_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${COMPIZ_INCLUDE_DIRS}
- ${_composite_plugin_INCLUDE_DIRS}
- ${OPENGL_INCLUDE_DIR}
-)
-
-add_definitions (
- -DHAVE_CONFIG_H
- -DLOCALEDIR=\\\"${datadir}/locale\\\"
- -DPLUGINDIR=\\\"${compiz_plugindir}\\\"
- -DIMAGEDIR=\\\"${compiz_imagedir}\\\"
- -DMETADATADIR=\\\"${compiz_metadatadir}\\\"
-)
+compiz_add_plugins_in_folder (.) \ No newline at end of file
diff --git a/plugins/blur/CMakeLists.txt b/plugins/blur/CMakeLists.txt
new file mode 100644
index 0000000..22690a7
--- /dev/null
+++ b/plugins/blur/CMakeLists.txt
@@ -0,0 +1,8 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+find_package (OpenGL)
+if (OPENGL_GLU_FOUND)
+ compiz_plugin(blur PLUGINDEPS composite opengl LIBRARIES ${OPENGL_glu_LIBRARY} INCDIRS ${OPENGL_INCLUDE_DIR})
+endif () \ No newline at end of file
diff --git a/plugins/blur/blur.xml.in b/plugins/blur/blur.xml.in
new file mode 100644
index 0000000..89a235a
--- /dev/null
+++ b/plugins/blur/blur.xml.in
@@ -0,0 +1,111 @@
+<compiz>
+ <plugin name="blur">
+ <_short>Blur Windows</_short>
+ <_long>Blur windows</_long>
+ <feature>blur</feature>
+ <deps>
+ <relation type="before">
+ <plugin>video</plugin>
+ </relation>
+ <relation type="after">
+ <plugin>decoration</plugin>
+ </relation>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ </deps>
+ <options>
+ <option name="pulse" type="bell">
+ <_short>Pulse</_short>
+ <_long>Pulse effect</_long>
+ </option>
+ <option name="blur_speed" type="float">
+ <_short>Blur Speed</_short>
+ <_long>Window blur speed</_long>
+ <default>3.5</default>
+ <min>0.1</min>
+ <max>10.0</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="focus_blur_match" type="match">
+ <_short>Focus blur windows</_short>
+ <_long>Windows that should be affected by focus blur</_long>
+ <default>toolbar | menu | utility | normal | dialog | modaldialog</default>
+ </option>
+ <option name="focus_blur" type="bool">
+ <_short>Focus Blur</_short>
+ <_long>Blur windows that doesn't have focus</_long>
+ <default>false</default>
+ </option>
+ <option name="alpha_blur_match" type="match">
+ <_short>Alpha blur windows</_short>
+ <_long>Windows that should be use alpha blur by default</_long>
+ <default></default>
+ </option>
+ <option name="alpha_blur" type="bool">
+ <_short>Alpha Blur</_short>
+ <_long>Blur behind translucent parts of windows</_long>
+ <default>true</default>
+ </option>
+ <option name="filter" type="int">
+ <_short>Blur Filter</_short>
+ <_long>Filter method used for blurring</_long>
+ <default>0</default>
+ <min>0</min>
+ <max>2</max>
+ <desc>
+ <value>0</value>
+ <_name>4xBilinear</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Gaussian</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Mipmap</_name>
+ </desc>
+ </option>
+ <option name="gaussian_radius" type="int">
+ <_short>Gaussian Radius</_short>
+ <_long>Gaussian radius</_long>
+ <default>3</default>
+ <min>1</min>
+ <max>15</max>
+ </option>
+ <option name="gaussian_strength" type="float">
+ <_short>Gaussian Strength</_short>
+ <_long>Gaussian strength</_long>
+ <default>1.0</default>
+ <min>0.0</min>
+ <max>1.0</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="mipmap_lod" type="float">
+ <_short>Mipmap LOD</_short>
+ <_long>Mipmap level-of-detail</_long>
+ <default>2.5</default>
+ <min>0.1</min>
+ <max>5.0</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="saturation" type="int">
+ <_short>Blur Saturation</_short>
+ <_long>Blur saturation</_long>
+ <default>100</default>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ <option name="occlusion" type="bool">
+ <_short>Blur Occlusion</_short>
+ <_long>Disable blurring of screen regions obscured by other windows.</_long>
+ <default>true</default>
+ </option>
+ <option name="independent_tex" type="bool">
+ <_short>Independent texture fetch</_short>
+ <_long>Use the available texture units to do as many as possible independent texture fetches.</_long>
+ <default>false</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/blur.cpp b/plugins/blur/src/blur.cpp
index 766f98c..766f98c 100644
--- a/plugins/blur.cpp
+++ b/plugins/blur/src/blur.cpp
diff --git a/plugins/blur.h b/plugins/blur/src/blur.h
index 6773add..6773add 100644
--- a/plugins/blur.h
+++ b/plugins/blur/src/blur.h
diff --git a/plugins/commands/CMakeLists.txt b/plugins/commands/CMakeLists.txt
new file mode 100644
index 0000000..4cdd47c
--- /dev/null
+++ b/plugins/commands/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(commands) \ No newline at end of file
diff --git a/plugins/commands/commands.xml.in b/plugins/commands/commands.xml.in
new file mode 100644
index 0000000..4b9d283
--- /dev/null
+++ b/plugins/commands/commands.xml.in
@@ -0,0 +1,225 @@
+<compiz>
+ <plugin name="commands">
+ <_short>Commands</_short>
+ <_long>Assigns bindings to arbitrary commands</_long>
+ <category>General</category>
+ <options>
+ <group>
+ <_short>Commands</_short>
+ <option name="command0" type="string">
+ <_short>Command line 0</_short>
+ <_long>Command line to be executed in shell when run_command0 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command1" type="string">
+ <_short>Command line 1</_short>
+ <_long>Command line to be executed in shell when run_command1 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command2" type="string">
+ <_short>Command line 2</_short>
+ <_long>Command line to be executed in shell when run_command2 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command3" type="string">
+ <_short>Command line 3</_short>
+ <_long>Command line to be executed in shell when run_command3 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command4" type="string">
+ <_short>Command line 4</_short>
+ <_long>Command line to be executed in shell when run_command4 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command5" type="string">
+ <_short>Command line 5</_short>
+ <_long>Command line to be executed in shell when run_command5 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command6" type="string">
+ <_short>Command line 6</_short>
+ <_long>Command line to be executed in shell when run_command6 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command7" type="string">
+ <_short>Command line 7</_short>
+ <_long>Command line to be executed in shell when run_command7 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command8" type="string">
+ <_short>Command line 8</_short>
+ <_long>Command line to be executed in shell when run_command8 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command9" type="string">
+ <_short>Command line 9</_short>
+ <_long>Command line to be executed in shell when run_command9 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command10" type="string">
+ <_short>Command line 10</_short>
+ <_long>Command line to be executed in shell when run_command10 is invoked</_long>
+ <default></default>
+ </option>
+ <option name="command11" type="string">
+ <_short>Command line 11</_short>
+ <_long>Command line to be executed in shell when run_command11 is invoked</_long>
+ <default></default>
+ </option>
+ </group>
+ <group>
+ <_short>Key Bindings</_short>
+ <option name="run_command0_key" type="key">
+ <_short>Run command 0</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command0</_long>
+ </option>
+ <option name="run_command1_key" type="key">
+ <_short>Run command 1</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command1</_long>
+ </option>
+ <option name="run_command2_key" type="key">
+ <_short>Run command 2</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command2</_long>
+ </option>
+ <option name="run_command3_key" type="key">
+ <_short>Run command 3</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command3</_long>
+ </option>
+ <option name="run_command4_key" type="key">
+ <_short>Run command 4</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command4</_long>
+ </option>
+ <option name="run_command5_key" type="key">
+ <_short>Run command 5</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command5</_long>
+ </option>
+ <option name="run_command6_key" type="key">
+ <_short>Run command 6</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command6</_long>
+ </option>
+ <option name="run_command7_key" type="key">
+ <_short>Run command 7</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command7</_long>
+ </option>
+ <option name="run_command8_key" type="key">
+ <_short>Run command 8</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command8</_long>
+ </option>
+ <option name="run_command9_key" type="key">
+ <_short>Run command 9</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command9</_long>
+ </option>
+ <option name="run_command10_key" type="key">
+ <_short>Run command 10</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command10</_long>
+ </option>
+ <option name="run_command11_key" type="key">
+ <_short>Run command 11</_short>
+ <_long>A keybinding that when invoked, will run the shell command identified by command11</_long>
+ </option>
+ </group>
+ <group>
+ <_short>Button Bindings</_short>
+ <option name="run_command0_button" type="button">
+ <_short>Run command 0</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command0</_long>
+ </option>
+ <option name="run_command1_button" type="button">
+ <_short>Run command 1</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command1</_long>
+ </option>
+ <option name="run_command2_button" type="button">
+ <_short>Run command 2</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command2</_long>
+ </option>
+ <option name="run_command3_button" type="button">
+ <_short>Run command 3</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command3</_long>
+ </option>
+ <option name="run_command4_button" type="button">
+ <_short>Run command 4</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command4</_long>
+ </option>
+ <option name="run_command5_button" type="button">
+ <_short>Run command 5</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command5</_long>
+ </option>
+ <option name="run_command6_button" type="button">
+ <_short>Run command 6</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command6</_long>
+ </option>
+ <option name="run_command7_button" type="button">
+ <_short>Run command 7</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command7</_long>
+ </option>
+ <option name="run_command8_button" type="button">
+ <_short>Run command 8</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command8</_long>
+ </option>
+ <option name="run_command9_button" type="button">
+ <_short>Run command 9</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command9</_long>
+ </option>
+ <option name="run_command10_button" type="button">
+ <_short>Run command 10</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command10</_long>
+ </option>
+ <option name="run_command11_button" type="button">
+ <_short>Run command 11</_short>
+ <_long>A button binding that when invoked, will run the shell command identified by command11</_long>
+ </option>
+ </group>
+ <group>
+ <_short>Edge Bindings</_short>
+ <option name="run_command0_edge" type="edge">
+ <_short>Run command 0</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command0</_long>
+ </option>
+ <option name="run_command1_edge" type="edge">
+ <_short>Run command 1</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command1</_long>
+ </option>
+ <option name="run_command2_edge" type="edge">
+ <_short>Run command 2</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command2</_long>
+ </option>
+ <option name="run_command3_edge" type="edge">
+ <_short>Run command 3</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command3</_long>
+ </option>
+ <option name="run_command4_edge" type="edge">
+ <_short>Run command 4</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command4</_long>
+ </option>
+ <option name="run_command5_edge" type="edge">
+ <_short>Run command 5</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command5</_long>
+ </option>
+ <option name="run_command6_edge" type="edge">
+ <_short>Run command 6</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command6</_long>
+ </option>
+ <option name="run_command7_edge" type="edge">
+ <_short>Run command 7</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command7</_long>
+ </option>
+ <option name="run_command8_edge" type="edge">
+ <_short>Run command 8</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command8</_long>
+ </option>
+ <option name="run_command9_edge" type="edge">
+ <_short>Run command 9</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command9</_long>
+ </option>
+ <option name="run_command10_edge" type="edge">
+ <_short>Run command 10</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command10</_long>
+ </option>
+ <option name="run_command11_edge" type="edge">
+ <_short>Run command 11</_short>
+ <_long>An edge binding that when invoked, will run the shell command identified by command11</_long>
+ </option>
+ </group>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/commands.cpp b/plugins/commands/src/commands.cpp
index 932017e..932017e 100644
--- a/plugins/commands.cpp
+++ b/plugins/commands/src/commands.cpp
diff --git a/plugins/commands.h b/plugins/commands/src/commands.h
index 217695d..217695d 100644
--- a/plugins/commands.h
+++ b/plugins/commands/src/commands.h
diff --git a/plugins/composite/CMakeLists.txt b/plugins/composite/CMakeLists.txt
index 22396fe..df247f3 100644
--- a/plugins/composite/CMakeLists.txt
+++ b/plugins/composite/CMakeLists.txt
@@ -1,29 +1,5 @@
-include_directories (
- ${compiz_SOURCE_DIR}/include
- ${compiz_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${COMPIZ_INCLUDE_DIRS}
-)
+find_package (Compiz REQUIRED)
-add_definitions (
- -DHAVE_CONFIG_H
- -DLOCALEDIR=\\\"${datadir}/locale\\\"
- -DPLUGINDIR=\\\"${compiz_plugindir}\\\"
- -DIMAGEDIR=\\\"${compiz_imagedir}\\\"
- -DMETADATADIR=\\\"${compiz_metadatadir}\\\"
-)
+include (CompizPlugin)
-link_directories (
- ${COMPIZ_LINK_DIRS}
-)
-
-add_library (composite SHARED
- composite.cpp
- screen.cpp
- window.cpp
-)
-
-install (
- TARGETS composite
- DESTINATION ${compiz_plugindir}
-) \ No newline at end of file
+compiz_plugin(composite) \ No newline at end of file
diff --git a/plugins/composite/compiz-composite.pc.in b/plugins/composite/compiz-composite.pc.in
new file mode 100644
index 0000000..8459cfe
--- /dev/null
+++ b/plugins/composite/compiz-composite.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: compiz-composite
+Description: Compositing plugin for compiz
+Version: @VERSION@
+
+Requires: compiz
+Libs: @_composite_plugin_LDFLAGS@ -L${libdir} -lcomposite
+Cflags: @COMPIZ_CFLAGS@ @_composite_plugin_CFLAGS@ -I${includedir}/compiz \ No newline at end of file
diff --git a/plugins/composite/composite.xml.in b/plugins/composite/composite.xml.in
new file mode 100644
index 0000000..a2a9fca
--- /dev/null
+++ b/plugins/composite/composite.xml.in
@@ -0,0 +1,34 @@
+<compiz>
+ <plugin name="composite">
+ <_short>Composite</_short>
+ <_long>Composite plugin</_long>
+ <options>
+ <option name="slow_animations_key" type="key">
+ <_short>Slow Animations</_short>
+ <_long>Toggle use of slow animations</_long>
+ </option>
+ <option name="detect_refresh_rate" type="bool">
+ <_short>Detect Refresh Rate</_short>
+ <_long>Automatic detection of refresh rate</_long>
+ <default>true</default>
+ </option>
+ <option name="refresh_rate" type="int">
+ <_short>Refresh Rate</_short>
+ <_long>The rate at which the screen is redrawn (times/second)</_long>
+ <default>50</default>
+ <min>1</min>
+ <max>200</max>
+ </option>
+ <option name="unredirect_fullscreen_windows" type="bool">
+ <_short>Unredirect Fullscreen Windows</_short>
+ <_long>Allow drawing of fullscreen windows to not be redirected to offscreen pixmaps</_long>
+ <default>false</default>
+ </option>
+ <option name="force_independent_output_painting" type="bool">
+ <_short>Force independent output painting.</_short>
+ <_long>Paint each output device independly, even if the output devices overlap</_long>
+ <default>false</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/composite/include/composite/composite.h b/plugins/composite/include/composite/composite.h
new file mode 100644
index 0000000..dc6a597
--- /dev/null
+++ b/plugins/composite/include/composite/composite.h
@@ -0,0 +1,264 @@
+
+
+
+/*
+ * Copyright © 2008 Dennis Kasprzyk
+ * Copyright © 2007 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Dennis Kasprzyk <onestone@compiz-fusion.org>
+ * David Reveman <davidr@novell.com>
+ */
+
+#ifndef _COMPIZ_COMPOSITE_H
+#define _COMPIZ_COMPOSITE_H
+
+#include <X11/extensions/Xcomposite.h>
+
+#define COMPIZ_COMPOSITE_ABI 1
+
+#include <core/privatehandler.h>
+#include <core/timer.h>
+#include <core/core.h>
+
+#define COMPOSITE_SCREEN_DAMAGE_PENDING_MASK (1 << 0)
+#define COMPOSITE_SCREEN_DAMAGE_REGION_MASK (1 << 1)
+#define COMPOSITE_SCREEN_DAMAGE_ALL_MASK (1 << 2)
+
+#define OPAQUE 0xffff
+#define COLOR 0xffff
+#define BRIGHT 0xffff
+
+#define PAINT_SCREEN_REGION_MASK (1 << 0)
+#define PAINT_SCREEN_FULL_MASK (1 << 1)
+#define PAINT_SCREEN_TRANSFORMED_MASK (1 << 2)
+#define PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK (1 << 3)
+#define PAINT_SCREEN_CLEAR_MASK (1 << 4)
+#define PAINT_SCREEN_NO_OCCLUSION_DETECTION_MASK (1 << 5)
+#define PAINT_SCREEN_NO_BACKGROUND_MASK (1 << 6)
+
+
+
+class PrivateCompositeScreen;
+class PrivateCompositeWindow;
+class CompositeScreen;
+class CompositeWindow;
+
+class CompositeScreenInterface :
+ public WrapableInterface<CompositeScreen, CompositeScreenInterface>
+{
+ public:
+
+ virtual void preparePaint (int);
+ virtual void donePaint ();
+ virtual void paint (CompOutput::ptrList &outputs, unsigned int);
+
+ virtual CompWindowList getWindowPaintList ();
+};
+
+
+class CompositeScreen :
+ public WrapableHandler<CompositeScreenInterface, 4>,
+ public PrivateHandler<CompositeScreen, CompScreen, COMPIZ_COMPOSITE_ABI>
+{
+ public:
+
+ class PaintHandler {
+ public:
+ virtual ~PaintHandler () {};
+
+ virtual void paintOutputs (CompOutput::ptrList &outputs,
+ unsigned int mask,
+ const CompRegion &region) = 0;
+
+ virtual bool hasVSync () { return false; };
+
+ virtual void prepareDrawing () {};
+ };
+
+ public:
+ CompositeScreen (CompScreen *s);
+ ~CompositeScreen ();
+
+ CompOption::Vector & getOptions ();
+ bool setOption (const char *name, CompOption::Value &value);
+ CompOption * getOption (const char *name);
+
+ bool registerPaintHandler (PaintHandler *pHnd);
+ void unregisterPaintHandler ();
+
+ bool compositingActive ();
+
+ int damageEvent ();
+
+ void damageScreen ();
+ void damageRegion (const CompRegion &);
+ void damagePending ();
+ unsigned int damageMask ();
+ const CompRegion & currentDamage () const;
+
+ void showOutputWindow ();
+ void hideOutputWindow ();
+ void updateOutputWindow ();
+
+ Window overlay ();
+ Window output ();
+
+ int & overlayWindowCount ();
+
+ void setWindowPaintOffset (int x, int y);
+ CompPoint windowPaintOffset ();
+
+
+ void detectRefreshRate ();
+ int getTimeToNextRedraw (struct timeval *tv);
+
+ int redrawTime ();
+
+ bool handlePaintTimeout ();
+
+ WRAPABLE_HND (0, CompositeScreenInterface, void, preparePaint, int);
+ WRAPABLE_HND (1, CompositeScreenInterface, void, donePaint);
+ WRAPABLE_HND (2, CompositeScreenInterface, void, paint,
+ CompOutput::ptrList &outputs, unsigned int);
+
+ WRAPABLE_HND (3, CompositeScreenInterface, CompWindowList,
+ getWindowPaintList);
+
+ friend class PrivateCompositeDisplay;
+
+ private:
+ PrivateCompositeScreen *priv;
+
+ public:
+ static bool toggleSlowAnimations (CompAction *action,
+ CompAction::State state,
+ CompOption::Vector &options);
+};
+
+/*
+ window paint flags
+
+ bit 1-16 are used for read-only flags and they provide
+ information that describe the screen rendering pass
+ currently in process.
+
+ bit 17-32 are writable flags and they provide information
+ that is used to optimize rendering.
+*/
+
+/*
+ this flag is present when window is being painted
+ on a transformed screen.
+*/
+#define PAINT_WINDOW_ON_TRANSFORMED_SCREEN_MASK (1 << 0)
+
+/*
+ this flag is present when window is being tested
+ for occlusion of other windows.
+*/
+#define PAINT_WINDOW_OCCLUSION_DETECTION_MASK (1 << 1)
+
+/*
+ this flag indicates that the window ist painted with
+ an offset
+*/
+#define PAINT_WINDOW_WITH_OFFSET_MASK (1 << 2)
+
+/*
+ flag indicate that window is translucent.
+*/
+#define PAINT_WINDOW_TRANSLUCENT_MASK (1 << 16)
+
+/*
+ flag indicate that window is transformed.
+*/
+#define PAINT_WINDOW_TRANSFORMED_MASK (1 << 17)
+
+/*
+ flag indicate that core PaintWindow function should
+ not draw this window.
+*/
+#define PAINT_WINDOW_NO_CORE_INSTANCE_MASK (1 << 18)
+
+/*
+ flag indicate that blending is required.
+*/
+#define PAINT_WINDOW_BLEND_MASK (1 << 19)
+
+class CompositeWindowInterface :
+ public WrapableInterface<CompositeWindow, CompositeWindowInterface>
+{
+ public:
+ virtual bool damageRect (bool, const CompRect &);
+};
+
+class CompositeWindow :
+ public WrapableHandler<CompositeWindowInterface, 1>,
+ public PrivateHandler<CompositeWindow, CompWindow, COMPIZ_COMPOSITE_ABI>
+{
+ public:
+
+ CompositeWindow (CompWindow *w);
+ ~CompositeWindow ();
+
+ bool bind ();
+ void release ();
+ Pixmap pixmap ();
+
+ void redirect ();
+ void unredirect ();
+ bool redirected ();
+ bool overlayWindow ();
+
+ void damageTransformedRect (float xScale,
+ float yScale,
+ float xTranslate,
+ float yTranslate,
+ const CompRect &rect);
+
+ void damageOutputExtents ();
+ void addDamageRect (const CompRect &);
+ void addDamage (bool force = false);
+
+ bool damaged ();
+
+ void processDamage (XDamageNotifyEvent *de);
+
+ void updateOpacity ();
+ void updateBrightness ();
+ void updateSaturation ();
+
+ unsigned short opacity ();
+ unsigned short brightness ();
+ unsigned short saturation ();
+
+ WRAPABLE_HND (0, CompositeWindowInterface, bool, damageRect,
+ bool, const CompRect &);
+
+ friend class PrivateCompositeWindow;
+ friend class CompositeScreen;
+
+ private:
+ PrivateCompositeWindow *priv;
+};
+
+#endif
diff --git a/plugins/composite/composite.cpp b/plugins/composite/src/composite.cpp
index b56a5e3..b56a5e3 100644
--- a/plugins/composite/composite.cpp
+++ b/plugins/composite/src/composite.cpp
diff --git a/plugins/composite/privates.h b/plugins/composite/src/privates.h
index 2ed7224..2ed7224 100644
--- a/plugins/composite/privates.h
+++ b/plugins/composite/src/privates.h
diff --git a/plugins/composite/screen.cpp b/plugins/composite/src/screen.cpp
index a0c01b4..a0c01b4 100644
--- a/plugins/composite/screen.cpp
+++ b/plugins/composite/src/screen.cpp
diff --git a/plugins/composite/window.cpp b/plugins/composite/src/window.cpp
index edc114c..edc114c 100644
--- a/plugins/composite/window.cpp
+++ b/plugins/composite/src/window.cpp
diff --git a/plugins/copytex/CMakeLists.txt b/plugins/copytex/CMakeLists.txt
new file mode 100644
index 0000000..a5df2d5
--- /dev/null
+++ b/plugins/copytex/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(copytex PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/copytex/copytex.xml.in b/plugins/copytex/copytex.xml.in
new file mode 100644
index 0000000..96ba59b
--- /dev/null
+++ b/plugins/copytex/copytex.xml.in
@@ -0,0 +1,11 @@
+<compiz>
+ <plugin name="copytex">
+ <_short>Copy to texture</_short>
+ <_long>Copy pixmap content to texture</_long>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ </deps>
+ </plugin>
+</compiz> \ No newline at end of file
diff --git a/plugins/copytex.cpp b/plugins/copytex/src/copytex.cpp
index 51551cb..51551cb 100644
--- a/plugins/copytex.cpp
+++ b/plugins/copytex/src/copytex.cpp
diff --git a/plugins/copytex.h b/plugins/copytex/src/copytex.h
index 6d38414..6d38414 100644
--- a/plugins/copytex.h
+++ b/plugins/copytex/src/copytex.h
diff --git a/plugins/decor/CMakeLists.txt b/plugins/decor/CMakeLists.txt
new file mode 100644
index 0000000..0146157
--- /dev/null
+++ b/plugins/decor/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(decor PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/decor/decor.xml.in b/plugins/decor/decor.xml.in
new file mode 100644
index 0000000..8c4a36a
--- /dev/null
+++ b/plugins/decor/decor.xml.in
@@ -0,0 +1,74 @@
+<compiz>
+ <plugin name="decor">
+ <_short>Window Decoration</_short>
+ <_long>Window decorations</_long>
+ <feature>decorations</feature>
+ <deps>
+ <relation type="before">
+ <plugin>fade</plugin>
+ <plugin>cube</plugin>
+ <plugin>scale</plugin>
+ <plugin>wobbly</plugin>
+ </relation>
+ <relation type="after">
+ <plugin>composite</plugin>
+ <plugin>opengl</plugin>
+ </relation>
+ </deps>
+ <options>
+ <option name="shadow_radius" type="float">
+ <_short>Shadow Radius</_short>
+ <_long>Drop shadow radius</_long>
+ <default>8.0</default>
+ <min>0.1</min>
+ <max>18.0</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="shadow_opacity" type="float">
+ <_short>Shadow Opacity</_short>
+ <_long>Drop shadow opacity</_long>
+ <default>0.5</default>
+ <min>0.01</min>
+ <max>6.0</max>
+ <precision>0.01</precision>
+ </option>
+ <option name="shadow_color" type="color">
+ <_short>Shadow Color</_short>
+ <_long>Drop shadow color</_long>
+ </option>
+ <option name="shadow_x_offset" type="int">
+ <_short>Shadow Offset X</_short>
+ <_long>Drop shadow X offset</_long>
+ <default>1</default>
+ <min>-16</min>
+ <max>16</max>
+ </option>
+ <option name="shadow_y_offset" type="int">
+ <_short>Shadow Offset Y</_short>
+ <_long>Drop shadow Y offset</_long>
+ <default>1</default>
+ <min>-16</min>
+ <max>16</max>
+ </option>
+ <option name="command" type="string">
+ <_short>Command</_short>
+ <_long>Decorator command line that is executed if no decorator is already running</_long>
+ </option>
+ <option name="mipmap" type="bool">
+ <_short>Mipmap</_short>
+ <_long>Allow mipmaps to be generated for decoration textures</_long>
+ <default>false</default>
+ </option>
+ <option name="decoration_match" type="match">
+ <_short>Decoration windows</_short>
+ <_long>Windows that should be decorated</_long>
+ <default>any</default>
+ </option>
+ <option name="shadow_match" type="match">
+ <_short>Shadow windows</_short>
+ <_long>Windows that should have a shadow</_long>
+ <default>any</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/decor.cpp b/plugins/decor/src/decor.cpp
index 100e0ce..100e0ce 100644
--- a/plugins/decor.cpp
+++ b/plugins/decor/src/decor.cpp
diff --git a/plugins/decor.h b/plugins/decor/src/decor.h
index 596e784..596e784 100644
--- a/plugins/decor.h
+++ b/plugins/decor/src/decor.h
diff --git a/plugins/fade/CMakeLists.txt b/plugins/fade/CMakeLists.txt
new file mode 100644
index 0000000..7f7d244
--- /dev/null
+++ b/plugins/fade/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(fade PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/fade/fade.xml.in b/plugins/fade/fade.xml.in
new file mode 100644
index 0000000..42bb8fd
--- /dev/null
+++ b/plugins/fade/fade.xml.in
@@ -0,0 +1,81 @@
+<compiz>
+ <plugin name="fade">
+ <_short>Fading Windows</_short>
+ <_long>Fade in windows when mapped and fade out windows when unmapped</_long>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ <relation type="before">
+ <plugin>cube</plugin>
+ <plugin>scale</plugin>
+ </relation>
+ </deps>
+ <options>
+ <option name="fade_mode" type="int">
+ <_short>Fade Mode</_short>
+ <_long>Window fade mode</_long>
+ <min>0</min>
+ <max>1</max>
+ <default>0</default>
+ <desc>
+ <value>0</value>
+ <_name>Constant speed</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Constant time</_name>
+ </desc>
+ </option>
+ <option name="fade_speed" type="float">
+ <_short>Fade Speed</_short>
+ <_long>Window fade speed</_long>
+ <default>5.0</default>
+ <min>0.1</min>
+ <max>25.0</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="fade_time" type="int">
+ <_short>Fade Time</_short>
+ <_long>Window fade time (in ms) in "Constant time" mode</_long>
+ <default>100</default>
+ <min>1</min>
+ <max>5000</max>
+ </option>
+ <option name="window_match" type="match">
+ <_short>Fade windows</_short>
+ <_long>Windows that should be fading</_long>
+ <default>any</default>
+ </option>
+ <option name="visual_bell" type="bool">
+ <_short>Visual Bell</_short>
+ <_long>Fade effect on system beep</_long>
+ <default>false</default>
+ </option>
+ <option name="fullscreen_visual_bell" type="bool">
+ <_short>Fullscreen Visual Bell</_short>
+ <_long>Fullscreen fade effect on system beep</_long>
+ <default>false</default>
+ </option>
+ <option name="dim_unresponsive" type="bool">
+ <_short>Dim Unresponsive Windows</_short>
+ <_long>Dim windows that are not responding to window manager requests</_long>
+ <default>true</default>
+ </option>
+ <option name="unresponsive_brightness" type="int">
+ <_short>Unresponsive Window Brightness</_short>
+ <_long>Brightness (in %) of unresponsive windows</_long>
+ <min>0</min>
+ <max>100</max>
+ <default>65</default>
+ </option>
+ <option name="unresponsive_saturation" type="int">
+ <_short>Unresponsive Window Saturation</_short>
+ <_long>Saturation (in %) of unresponsive windows</_long>
+ <min>0</min>
+ <max>100</max>
+ <default>0</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/fade.cpp b/plugins/fade/src/fade.cpp
index 78ecc53..78ecc53 100644
--- a/plugins/fade.cpp
+++ b/plugins/fade/src/fade.cpp
diff --git a/plugins/fade.h b/plugins/fade/src/fade.h
index 8f4445b..8f4445b 100644
--- a/plugins/fade.h
+++ b/plugins/fade/src/fade.h
diff --git a/plugins/gnomecompat/CMakeLists.txt b/plugins/gnomecompat/CMakeLists.txt
new file mode 100644
index 0000000..3e3535d
--- /dev/null
+++ b/plugins/gnomecompat/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(gnomecompat PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/gnomecompat/gnomecompat.xml.in b/plugins/gnomecompat/gnomecompat.xml.in
new file mode 100644
index 0000000..122bf83
--- /dev/null
+++ b/plugins/gnomecompat/gnomecompat.xml.in
@@ -0,0 +1,52 @@
+<compiz>
+ <plugin name="gnomecompat">
+ <_short>Gnome Compatibility</_short>
+ <_long>Options that keep Compiz compatible to the Gnome desktop environment</_long>
+ <category>General</category>
+ <options>
+ <option name="main_menu_key" type="key">
+ <_short>Show Main Menu</_short>
+ <_long>Show the main menu</_long>
+ <default>&lt;Alt&gt;F1</default>
+ </option>
+ <option name="run_key" type="key">
+ <_short>Run Dialog</_short>
+ <_long>Show Run Application dialog</_long>
+ <default>&lt;Alt&gt;F2</default>
+ </option>
+ <group>
+ <_short>Commands</_short>
+ <option name="command_screenshot" type="string">
+ <_short>Screenshot command line</_short>
+ <_long>Screenshot command line</_long>
+ <default>gnome-screenshot</default>
+ </option>
+ <option name="run_command_screenshot_key" type="key">
+ <_short>Take a screenshot</_short>
+ <_long>Take a screenshot</_long>
+ <default>Print</default>
+ </option>
+ <option name="command_window_screenshot" type="string">
+ <_short>Window screenshot command line</_short>
+ <_long>Window screenshot command line</_long>
+ <default>gnome-screenshot --window</default>
+ </option>
+ <option name="run_command_window_screenshot_key" type="key">
+ <_short>Take a screenshot of a window</_short>
+ <_long>Take a screenshot of a window</_long>
+ <default>&lt;Alt&gt;Print</default>
+ </option>
+ <_short>Run terminal command</_short>
+ <option name="command_terminal" type="string">
+ <_short>Terminal command line</_short>
+ <_long>Terminal command line</_long>
+ <default></default>
+ </option>
+ <option name="run_command_terminal_key" type="key">
+ <_short>Open a terminal</_short>
+ <_long>Open a terminal</_long>
+ </option>
+ </group>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/gnomecompat.cpp b/plugins/gnomecompat/src/gnomecompat.cpp
index 8b8e331..8b8e331 100644
--- a/plugins/gnomecompat.cpp
+++ b/plugins/gnomecompat/src/gnomecompat.cpp
diff --git a/plugins/gnomecompat.h b/plugins/gnomecompat/src/gnomecompat.h
index 56c4b7a..56c4b7a 100644
--- a/plugins/gnomecompat.h
+++ b/plugins/gnomecompat/src/gnomecompat.h
diff --git a/plugins/imgpng/CMakeLists.txt b/plugins/imgpng/CMakeLists.txt
new file mode 100644
index 0000000..4754988
--- /dev/null
+++ b/plugins/imgpng/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(imgpng PKGDEPS libpng) \ No newline at end of file
diff --git a/plugins/imgpng/imgpng.xml.in b/plugins/imgpng/imgpng.xml.in
new file mode 100644
index 0000000..f2985da
--- /dev/null
+++ b/plugins/imgpng/imgpng.xml.in
@@ -0,0 +1,8 @@
+<compiz>
+ <plugin name="imgpng">
+ <_short>Png</_short>
+ <_long>Png image loader</_long>
+ <feature>imageext:png</feature>
+ <feature>imagemime:image/png</feature>
+ </plugin>
+</compiz>
diff --git a/plugins/imgpng.cpp b/plugins/imgpng/src/imgpng.cpp
index 7ee866e..7ee866e 100644
--- a/plugins/imgpng.cpp
+++ b/plugins/imgpng/src/imgpng.cpp
diff --git a/plugins/imgpng.h b/plugins/imgpng/src/imgpng.h
index 1e97a22..1e97a22 100644
--- a/plugins/imgpng.h
+++ b/plugins/imgpng/src/imgpng.h
diff --git a/plugins/imgsvg/CMakeLists.txt b/plugins/imgsvg/CMakeLists.txt
new file mode 100644
index 0000000..000198a
--- /dev/null
+++ b/plugins/imgsvg/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(imgsvg PLUGINDEPS composite opengl PKGDEPS cairo>=1.0 cairo-xlib librsvg-2.0>=2.14.0) \ No newline at end of file
diff --git a/plugins/imgsvg/imgsvg.xml.in b/plugins/imgsvg/imgsvg.xml.in
new file mode 100644
index 0000000..fdb0887
--- /dev/null
+++ b/plugins/imgsvg/imgsvg.xml.in
@@ -0,0 +1,8 @@
+<compiz>
+ <plugin name="imgsvg">
+ <_short>Svg</_short>
+ <_long>Svg image loader</_long>
+ <feature>imageext:svg</feature>
+ <feature>imagemime:image/svg+xml</feature>
+ </plugin>
+</compiz>
diff --git a/plugins/imgsvg.cpp b/plugins/imgsvg/src/imgsvg.cpp
index 9416c7b..9416c7b 100644
--- a/plugins/imgsvg.cpp
+++ b/plugins/imgsvg/src/imgsvg.cpp
diff --git a/plugins/imgsvg.h b/plugins/imgsvg/src/imgsvg.h
index b7eb698..b7eb698 100644
--- a/plugins/imgsvg.h
+++ b/plugins/imgsvg/src/imgsvg.h
diff --git a/plugins/ini/CMakeLists.txt b/plugins/ini/CMakeLists.txt
new file mode 100644
index 0000000..ee59500
--- /dev/null
+++ b/plugins/ini/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(ini) \ No newline at end of file
diff --git a/plugins/ini/ini.xml.in b/plugins/ini/ini.xml.in
new file mode 100644
index 0000000..3c3b32b
--- /dev/null
+++ b/plugins/ini/ini.xml.in
@@ -0,0 +1,6 @@
+<compiz>
+ <plugin name="ini">
+ <_short>Ini</_short>
+ <_long>Ini Flat File Backend</_long>
+ </plugin>
+</compiz>
diff --git a/plugins/ini.cpp b/plugins/ini/src/ini.cpp
index a7a610d..a7a610d 100644
--- a/plugins/ini.cpp
+++ b/plugins/ini/src/ini.cpp
diff --git a/plugins/ini.h b/plugins/ini/src/ini.h
index 0790072..0790072 100644
--- a/plugins/ini.h
+++ b/plugins/ini/src/ini.h
diff --git a/plugins/inotify/CMakeLists.txt b/plugins/inotify/CMakeLists.txt
new file mode 100644
index 0000000..3d32a68
--- /dev/null
+++ b/plugins/inotify/CMakeLists.txt
@@ -0,0 +1,10 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+include (CheckIncludeFile)
+
+check_include_file ("sys/inotify.h" HAS_INOTIFY)
+
+if (HAS_INOTIFY)
+ compiz_plugin(inotify)
+endif () \ No newline at end of file
diff --git a/plugins/inotify/inotify.xml.in b/plugins/inotify/inotify.xml.in
new file mode 100644
index 0000000..473251e
--- /dev/null
+++ b/plugins/inotify/inotify.xml.in
@@ -0,0 +1,6 @@
+<compiz>
+ <plugin name="inotify">
+ <_short>Inotify</_short>
+ <_long>File change notification plugin</_long>
+ </plugin>
+</compiz>
diff --git a/plugins/inotify.cpp b/plugins/inotify/src/inotify.cpp
index 58b0205..58b0205 100644
--- a/plugins/inotify.cpp
+++ b/plugins/inotify/src/inotify.cpp
diff --git a/plugins/inotify.h b/plugins/inotify/src/inotify.h
index c65f438..c65f438 100644
--- a/plugins/inotify.h
+++ b/plugins/inotify/src/inotify.h
diff --git a/plugins/move/CMakeLists.txt b/plugins/move/CMakeLists.txt
new file mode 100644
index 0000000..79d6450
--- /dev/null
+++ b/plugins/move/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(move PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/move/move.xml.in b/plugins/move/move.xml.in
new file mode 100644
index 0000000..e3a6eb7
--- /dev/null
+++ b/plugins/move/move.xml.in
@@ -0,0 +1,46 @@
+<compiz>
+ <plugin name="move">
+ <_short>Move Window</_short>
+ <_long>Move window</_long>
+ <deps>
+ <relation type="after">
+ <plugin>composite</plugin>
+ <plugin>opengl</plugin>
+ </relation>
+ </deps>
+ <options>
+ <option name="initiate_button" type="button">
+ <_short>Initiate Window Move</_short>
+ <_long>Start moving window</_long>
+ <default>&lt;Alt&gt;Button1</default>
+ </option>
+ <option name="initiate_key" type="key">
+ <_short>Initiate Window Move</_short>
+ <_long>Start moving window</_long>
+ <default>&lt;Alt&gt;F7</default>
+ </option>
+ <option name="opacity" type="int">
+ <_short>Opacity</_short>
+ <_long>Opacity level of moving windows</_long>
+ <default>100</default>
+ <min>1</min>
+ <max>100</max>
+ </option>
+ <option name="constrain_y" type="bool">
+ <_short>Constrain Y</_short>
+ <_long>Constrain Y coordinate to workspace area</_long>
+ <default>true</default>
+ </option>
+ <option name="snapoff_maximized" type="bool">
+ <_short>Snapoff maximized windows</_short>
+ <_long>Snapoff and auto unmaximized maximized windows when dragging</_long>
+ <default>true</default>
+ </option>
+ <option name="lazy_positioning" type="bool">
+ <_short>Lazy Positioning</_short>
+ <_long>Do not update the server-side position of windows until finished moving</_long>
+ <default>true</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/move.cpp b/plugins/move/src/move.cpp
index 25e0bba..25e0bba 100644
--- a/plugins/move.cpp
+++ b/plugins/move/src/move.cpp
diff --git a/plugins/move.h b/plugins/move/src/move.h
index 2eb6786..2eb6786 100644
--- a/plugins/move.h
+++ b/plugins/move/src/move.h
diff --git a/plugins/obs/CMakeLists.txt b/plugins/obs/CMakeLists.txt
new file mode 100644
index 0000000..b9fac1e
--- /dev/null
+++ b/plugins/obs/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(obs PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/obs/obs.xml.in b/plugins/obs/obs.xml.in
new file mode 100644
index 0000000..49b4b97
--- /dev/null
+++ b/plugins/obs/obs.xml.in
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<compiz>
+ <plugin name="obs">
+ <_short>Opacity, Brightness and Saturation</_short>
+ <_long>Opacity, Brightness and Saturation adjustments</_long>
+ <category>Accessibility</category>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ <relation type="after">
+ <plugin>decoration</plugin>
+ <plugin>blur</plugin>
+ </relation>
+ </deps>
+ <options>
+ <group>
+ <_short>Opacity</_short>
+ <option name="opacity_increase_key" type="key">
+ <_short>Increase</_short>
+ <_long>Opacity Increase</_long>
+ <default/>
+ </option>
+ <option name="opacity_increase_button" type="button">
+ <_short>Increase</_short>
+ <_long>Opacity Increase</_long>
+ <default>&lt;Alt&gt;Button4</default>
+ </option>
+ <option name="opacity_decrease_key" type="key">
+ <_short>Decrease</_short>
+ <_long>Opacity Decrease</_long>
+ <default/>
+ </option>
+ <option name="opacity_decrease_button" type="button">
+ <_short>Decrease</_short>
+ <_long>Opacity Decrease</_long>
+ <default>&lt;Alt&gt;Button5</default>
+ </option>
+ <option name="opacity_step" type="int">
+ <_short>Step</_short>
+ <_long>Opacity Step</_long>
+ <min>1</min>
+ <max>10</max>
+ <default>5</default>
+ </option>
+ <subgroup>
+ <_short>Window specific settings</_short>
+ <option name="opacity_matches" type="list">
+ <_short>Windows</_short>
+ <_long>Windows that should have a different opacity by default</_long>
+ <type>match</type>
+ <default/>
+ </option>
+ <option name="opacity_values" type="list">
+ <_short>Window values</_short>
+ <_long>Opacity values for windows</_long>
+ <type>int</type>
+ <default/>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ </subgroup>
+ </group>
+ <group>
+ <_short>Brightness</_short>
+ <option name="brightness_increase_key" type="key">
+ <_short>Increase</_short>
+ <_long>Brightness Increase</_long>
+ <default/>
+ </option>
+ <option name="brightness_increase_button" type="button">
+ <_short>Increase</_short>
+ <_long>Brightness Increase</_long>
+ <default/>
+ </option>
+ <option name="brightness_decrease_key" type="key">
+ <_short>Decrease</_short>
+ <_long>Brightness Decrease</_long>
+ <default/>
+ </option>
+ <option name="brightness_decrease_button" type="button">
+ <_short>Decrease</_short>
+ <_long>Brightness Decrease</_long>
+ <default/>
+ </option>
+ <option name="brightness_step" type="int">
+ <_short>Step</_short>
+ <_long>Brightness Step</_long>
+ <min>1</min>
+ <max>10</max>
+ <default>5</default>
+ </option>
+ <subgroup>
+ <_short>Window specific settings</_short>
+ <option name="brightness_matches" type="list">
+ <_short>Windows</_short>
+ <_long>Windows that should have a different brightness by default</_long>
+ <type>match</type>
+ <default/>
+ </option>
+ <option name="brightness_values" type="list">
+ <_short>Window values</_short>
+ <_long>Brightness values for windows</_long>
+ <type>int</type>
+ <default/>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ </subgroup>
+ </group>
+ <group>
+ <_short>Saturation</_short>
+ <option name="saturation_increase_key" type="key">
+ <_short>Increase</_short>
+ <_long>Saturation Increase</_long>
+ <default/>
+ </option>
+ <option name="saturation_increase_button" type="button">
+ <_short>Increase</_short>
+ <_long>Saturation Increase</_long>
+ <default/>
+ </option>
+ <option name="saturation_decrease_key" type="key">
+ <_short>Decrease</_short>
+ <_long>Saturation Decrease</_long>
+ <default/>
+ </option>
+ <option name="saturation_decrease_button" type="button">
+ <_short>Decrease</_short>
+ <_long>Saturation Decrease</_long>
+ <default/>
+ </option>
+ <option type="int" name="saturation_step">
+ <_short>Step</_short>
+ <_long>Saturation Step</_long>
+ <min>1</min>
+ <max>10</max>
+ <default>5</default>
+ </option>
+ <subgroup>
+ <_short>Window specific settings</_short>
+ <option name="saturation_matches" type="list">
+ <_short>Windows</_short>
+ <_long>Windows that should have a different saturation by default</_long>
+ <type>match</type>
+ <default/>
+ </option>
+ <option name="saturation_values" type="list">
+ <_short>Window values</_short>
+ <_long>Saturation values for windows</_long>
+ <type>int</type>
+ <default/>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ </subgroup>
+ </group>
+ </options>
+ </plugin>
+</compiz>
+
diff --git a/plugins/obs.cpp b/plugins/obs/src/obs.cpp
index b4a1f7f..b4a1f7f 100644
--- a/plugins/obs.cpp
+++ b/plugins/obs/src/obs.cpp
diff --git a/plugins/obs.h b/plugins/obs/src/obs.h
index 132a5a5..132a5a5 100644
--- a/plugins/obs.h
+++ b/plugins/obs/src/obs.h
diff --git a/plugins/opengl/CMakeLists.txt b/plugins/opengl/CMakeLists.txt
index 8d4596f..5cb799c 100644
--- a/plugins/opengl/CMakeLists.txt
+++ b/plugins/opengl/CMakeLists.txt
@@ -1,39 +1,8 @@
-find_package (OpenGL REQUIRED)
+find_package (Compiz REQUIRED)
-include_directories (
- ${compiz_SOURCE_DIR}/include
- ${compiz_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${COMPIZ_INCLUDE_DIRS}
- ${OPENGL_INCLUDE_DIR}
-)
+include (CompizPlugin)
-link_directories (${compiz_plugindir})
-
-add_definitions (
- -DHAVE_CONFIG_H
- -DLOCALEDIR=\\\"${datadir}/locale\\\"
- -DPLUGINDIR=\\\"${compiz_plugindir}\\\"
- -DIMAGEDIR=\\\"${compiz_imagedir}\\\"
- -DMETADATADIR=\\\"${compiz_metadatadir}\\\"
-)
-
-add_library (opengl SHARED
- opengl.cpp
- screen.cpp
- window.cpp
- paint.cpp
- texture.cpp
- fragment.cpp
- matrix.cpp
- vector.cpp
-)
-
-target_link_libraries (
- opengl composite ${OPENGL_gl_LIBRARY}
-)
-
-install (
- TARGETS opengl
- DESTINATION ${compiz_plugindir}
-) \ No newline at end of file
+find_package (OpenGL)
+if (OPENGL_FOUND)
+ compiz_plugin(opengl PLUGINDEPS composite LIBRARIES ${OPENGL_gl_LIBRARY} INCDIRS ${OPENGL_INCLUDE_DIR})
+endif () \ No newline at end of file
diff --git a/plugins/opengl/compiz-opengl.pc.in b/plugins/opengl/compiz-opengl.pc.in
new file mode 100644
index 0000000..12c55c7
--- /dev/null
+++ b/plugins/opengl/compiz-opengl.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: compiz-opengl
+Description: Opengl compositing plugin for compiz
+Version: @VERSION@
+
+Requires: compiz compiz-composite
+Libs: -lGL -L${libdir} -lopengl
+Cflags: @COMPIZ_CFLAGS@ -I${includedir}/compiz \ No newline at end of file
diff --git a/plugins/opengl/include/opengl/fragment.h b/plugins/opengl/include/opengl/fragment.h
new file mode 100644
index 0000000..e0bca16
--- /dev/null
+++ b/plugins/opengl/include/opengl/fragment.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright © 2008 Dennis Kasprzyk
+ * Copyright © 2007 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Dennis Kasprzyk <onestone@compiz-fusion.org>
+ * David Reveman <davidr@novell.com>
+ */
+
+#ifndef _GLFRAGMENT_H
+#define _GLFRAGMENT_H
+
+#define MAX_FRAGMENT_FUNCTIONS 16
+
+#define COMP_FETCH_TARGET_2D 0
+#define COMP_FETCH_TARGET_RECT 1
+#define COMP_FETCH_TARGET_NUM 2
+
+struct GLWindowPaintAttrib;
+class GLScreen;
+
+namespace GLFragment {
+
+ class Storage;
+
+ typedef unsigned int FunctionId;
+
+ class PrivateFunctionData;
+ class PrivateAttrib;
+
+ class FunctionData {
+ public:
+ FunctionData ();
+ ~FunctionData ();
+
+ bool status ();
+
+ void addTempHeaderOp (const char *name);
+
+ void addParamHeaderOp (const char *name);
+
+ void addAttribHeaderOp (const char *name);
+
+
+ void addFetchOp (const char *dst, const char *offset, int target);
+
+ void addColorOp (const char *dst, const char *src);
+
+ void addDataOp (const char *str, ...);
+
+ void addBlendOp (const char *str, ...);
+
+ FunctionId createFragmentFunction (const char *name);
+
+ private:
+ PrivateFunctionData *priv;
+ };
+
+ class Attrib {
+ public:
+ Attrib (const GLWindowPaintAttrib &paint);
+ Attrib (const Attrib&);
+ ~Attrib ();
+
+ unsigned int allocTextureUnits (unsigned int nTexture);
+
+ unsigned int allocParameters (unsigned int nParam);
+
+ void addFunction (FunctionId function);
+
+ bool enable (bool *blending);
+ void disable ();
+
+ unsigned short getSaturation ();
+ unsigned short getBrightness ();
+ unsigned short getOpacity ();
+
+ void setSaturation (unsigned short);
+ void setBrightness (unsigned short);
+ void setOpacity (unsigned short);
+
+ bool hasFunctions ();
+
+ private:
+ PrivateAttrib *priv;
+ };
+
+ void destroyFragmentFunction (FunctionId id);
+
+ FunctionId getSaturateFragmentFunction (GLTexture *texture,
+ int param);
+};
+
+
+
+#endif
diff --git a/plugins/opengl/include/opengl/matrix.h b/plugins/opengl/include/opengl/matrix.h
new file mode 100644
index 0000000..fabb60c
--- /dev/null
+++ b/plugins/opengl/include/opengl/matrix.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright © 2008 Danny Baumann
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Danny Baumann <maniac@compiz-fusion.org>
+ */
+
+#ifndef _GLMATRIX_H
+#define _GLMATRIX_H
+
+#include <opengl/vector.h>
+
+class CompOutput;
+
+class GLMatrix {
+ public:
+ GLMatrix ();
+ GLMatrix (const float *);
+
+ const float* getMatrix () const;
+
+ GLMatrix& operator*= (const GLMatrix& rhs);
+
+ float& operator[] (unsigned int pos);
+
+ void reset ();
+ void toScreenSpace (const CompOutput *output, float z);
+
+ void rotate (const float angle, const float x,
+ const float y, const float z);
+ void rotate (const float angle, const GLVector& vector);
+
+ void scale (const float x, const float y, const float z);
+ void scale (const GLVector& vector);
+
+ void translate (const float x, const float y, const float z);
+ void translate (const GLVector& vector);
+
+ private:
+ friend GLMatrix operator* (const GLMatrix& lhs,
+ const GLMatrix& rhs);
+ friend GLVector operator* (const GLMatrix& lhs,
+ const GLVector& rhs);
+
+ float m[16];
+};
+
+#endif
diff --git a/plugins/opengl/include/opengl/opengl.h b/plugins/opengl/include/opengl/opengl.h
new file mode 100644
index 0000000..3cd5a77
--- /dev/null
+++ b/plugins/opengl/include/opengl/opengl.h
@@ -0,0 +1,418 @@
+/*
+ * Copyright © 2008 Dennis Kasprzyk
+ * Copyright © 2007 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Dennis Kasprzyk <onestone@compiz-fusion.org>
+ * David Reveman <davidr@novell.com>
+ */
+
+#ifndef _COMPIZ_OPENGL_H
+#define _COMPIZ_OPENGL_H
+
+#include <GL/gl.h>
+#include <GL/glx.h>
+
+#include <opengl/matrix.h>
+#include <opengl/texture.h>
+#include <opengl/fragment.h>
+
+#define COMPIZ_OPENGL_ABI 1
+
+#include <core/privatehandler.h>
+
+/* camera distance from screen, 0.5 * tan (FOV) */
+#define DEFAULT_Z_CAMERA 0.866025404f
+
+#define RED_SATURATION_WEIGHT 0.30f
+#define GREEN_SATURATION_WEIGHT 0.59f
+#define BLUE_SATURATION_WEIGHT 0.11f
+
+class PrivateGLScreen;
+class PrivateGLWindow;
+
+extern GLushort defaultColor[4];
+
+#ifndef GLX_EXT_texture_from_pixmap
+#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
+#define GLX_Y_INVERTED_EXT 0x20D4
+#define GLX_TEXTURE_FORMAT_EXT 0x20D5
+#define GLX_TEXTURE_TARGET_EXT 0x20D6
+#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
+#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
+#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
+#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
+#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
+#define GLX_TEXTURE_1D_EXT 0x20DB
+#define GLX_TEXTURE_2D_EXT 0x20DC
+#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
+#define GLX_FRONT_LEFT_EXT 0x20DE
+#endif
+
+namespace GL {
+
+ typedef void (*FuncPtr) (void);
+ typedef FuncPtr (*GLXGetProcAddressProc) (const GLubyte *procName);
+
+ typedef void (*GLXBindTexImageProc) (Display *display,
+ GLXDrawable drawable,
+ int buffer,
+ int *attribList);
+ typedef void (*GLXReleaseTexImageProc) (Display *display,
+ GLXDrawable drawable,
+ int buffer);
+ typedef void (*GLXQueryDrawableProc) (Display *display,
+ GLXDrawable drawable,
+ int attribute,
+ unsigned int *value);
+
+ typedef void (*GLXCopySubBufferProc) (Display *display,
+ GLXDrawable drawable,
+ int x,
+ int y,
+ int width,
+ int height);
+
+ typedef int (*GLXGetVideoSyncProc) (unsigned int *count);
+ typedef int (*GLXWaitVideoSyncProc) (int divisor,
+ int remainder,
+ unsigned int *count);
+
+ #ifndef GLX_VERSION_1_3
+ typedef struct __GLXFBConfigRec *GLXFBConfig;
+ #endif
+
+ typedef GLXFBConfig *(*GLXGetFBConfigsProc) (Display *display,
+ int screen,
+ int *nElements);
+ typedef int (*GLXGetFBConfigAttribProc) (Display *display,
+ GLXFBConfig config,
+ int attribute,
+ int *value);
+ typedef GLXPixmap (*GLXCreatePixmapProc) (Display *display,
+ GLXFBConfig config,
+ Pixmap pixmap,
+ const int *attribList);
+
+ typedef void (*GLActiveTextureProc) (GLenum texture);
+ typedef void (*GLClientActiveTextureProc) (GLenum texture);
+ typedef void (*GLMultiTexCoord2fProc) (GLenum, GLfloat, GLfloat);
+
+ typedef void (*GLGenProgramsProc) (GLsizei n,
+ GLuint *programs);
+ typedef void (*GLDeleteProgramsProc) (GLsizei n,
+ GLuint *programs);
+ typedef void (*GLBindProgramProc) (GLenum target,
+ GLuint program);
+ typedef void (*GLProgramStringProc) (GLenum target,
+ GLenum format,
+ GLsizei len,
+ const GLvoid *string);
+ typedef void (*GLProgramParameter4fProc) (GLenum target,
+ GLuint index,
+ GLfloat x,
+ GLfloat y,
+ GLfloat z,
+ GLfloat w);
+ typedef void (*GLGetProgramivProc) (GLenum target,
+ GLenum pname,
+ int *params);
+
+ typedef void (*GLGenFramebuffersProc) (GLsizei n,
+ GLuint *framebuffers);
+ typedef void (*GLDeleteFramebuffersProc) (GLsizei n,
+ GLuint *framebuffers);
+ typedef void (*GLBindFramebufferProc) (GLenum target,
+ GLuint framebuffer);
+ typedef GLenum (*GLCheckFramebufferStatusProc) (GLenum target);
+ typedef void (*GLFramebufferTexture2DProc) (GLenum target,
+ GLenum attachment,
+ GLenum textarget,
+ GLuint texture,
+ GLint level);
+ typedef void (*GLGenerateMipmapProc) (GLenum target);
+
+ extern GLXBindTexImageProc bindTexImage;
+ extern GLXReleaseTexImageProc releaseTexImage;
+ extern GLXQueryDrawableProc queryDrawable;
+ extern GLXCopySubBufferProc copySubBuffer;
+ extern GLXGetVideoSyncProc getVideoSync;
+ extern GLXWaitVideoSyncProc waitVideoSync;
+ extern GLXGetFBConfigsProc getFBConfigs;
+ extern GLXGetFBConfigAttribProc getFBConfigAttrib;
+ extern GLXCreatePixmapProc createPixmap;
+
+ extern GLActiveTextureProc activeTexture;
+ extern GLClientActiveTextureProc clientActiveTexture;
+ extern GLMultiTexCoord2fProc multiTexCoord2f;
+
+ extern GLGenProgramsProc genPrograms;
+ extern GLDeleteProgramsProc deletePrograms;
+ extern GLBindProgramProc bindProgram;
+ extern GLProgramStringProc programString;
+ extern GLProgramParameter4fProc programEnvParameter4f;
+ extern GLProgramParameter4fProc programLocalParameter4f;
+ extern GLGetProgramivProc getProgramiv;
+
+ extern GLGenFramebuffersProc genFramebuffers;
+ extern GLDeleteFramebuffersProc deleteFramebuffers;
+ extern GLBindFramebufferProc bindFramebuffer;
+ extern GLCheckFramebufferStatusProc checkFramebufferStatus;
+ extern GLFramebufferTexture2DProc framebufferTexture2D;
+ extern GLGenerateMipmapProc generateMipmap;
+
+ extern bool textureFromPixmap;
+ extern bool textureRectangle;
+ extern bool textureNonPowerOfTwo;
+ extern bool textureEnvCombine;
+ extern bool textureEnvCrossbar;
+ extern bool textureBorderClamp;
+ extern bool textureCompression;
+ extern GLint maxTextureSize;
+ extern bool fbo;
+ extern bool fragmentProgram;
+ extern GLint maxTextureUnits;
+
+ extern bool canDoSaturated;
+ extern bool canDoSlightlySaturated;
+};
+
+struct GLScreenPaintAttrib {
+ GLfloat xRotate;
+ GLfloat yRotate;
+ GLfloat vRotate;
+ GLfloat xTranslate;
+ GLfloat yTranslate;
+ GLfloat zTranslate;
+ GLfloat zCamera;
+};
+
+#define MAX_DEPTH 32
+
+struct GLFBConfig {
+ GLXFBConfig fbConfig;
+ int yInverted;
+ int mipmap;
+ int textureFormat;
+ int textureTargets;
+};
+
+#define NOTHING_TRANS_FILTER 0
+#define SCREEN_TRANS_FILTER 1
+#define WINDOW_TRANS_FILTER 2
+
+
+extern GLScreenPaintAttrib defaultScreenPaintAttrib;
+
+class GLScreen;
+
+class GLScreenInterface :
+ public WrapableInterface<GLScreen, GLScreenInterface>
+{
+ public:
+ virtual bool glPaintOutput (const GLScreenPaintAttrib &,
+ const GLMatrix &, const CompRegion &,
+ CompOutput *, unsigned int);
+ virtual void glPaintTransformedOutput (const GLScreenPaintAttrib &,
+ const GLMatrix &,
+ const CompRegion &,
+ CompOutput *, unsigned int);
+ virtual void glApplyTransform (const GLScreenPaintAttrib &,
+ CompOutput *, GLMatrix *);
+
+ virtual void glEnableOutputClipping (const GLMatrix &,
+ const CompRegion &,
+ CompOutput *);
+ virtual void glDisableOutputClipping ();
+
+};
+
+
+class GLScreen :
+ public WrapableHandler<GLScreenInterface, 5>,
+ public PrivateHandler<GLScreen, CompScreen, COMPIZ_OPENGL_ABI>
+{
+ public:
+ GLScreen (CompScreen *s);
+ ~GLScreen ();
+
+ CompOption::Vector & getOptions ();
+ bool setOption (const char *name, CompOption::Value &value);
+ CompOption * getOption (const char *name);
+
+ GLenum textureFilter ();
+ void setTextureFilter (GLenum);
+
+ void clearTargetOutput (unsigned int mask);
+
+ GL::FuncPtr getProcAddress (const char *name);
+
+ void updateBackground ();
+
+ GLTexture::Filter filter (int);
+ void setFilter (int, GLTexture::Filter);
+
+ GLFragment::Storage * fragmentStorage ();
+
+ void setTexEnvMode (GLenum mode);
+ void setLighting (bool lighting);
+ bool lighting ();
+
+ void clearOutput (CompOutput *output, unsigned int mask);
+
+ void setDefaultViewport ();
+
+ GLTexture::BindPixmapHandle registerBindPixmap (GLTexture::BindPixmapProc);
+ void unregisterBindPixmap (GLTexture::BindPixmapHandle);
+
+ GLFBConfig * glxPixmapFBConfig (unsigned int depth);
+
+ GLTexture *defaultIcon ();
+
+ void resetRasterPos ();
+
+ const float * projectionMatrix ();
+
+ WRAPABLE_HND (0, GLScreenInterface, bool, glPaintOutput,
+ const GLScreenPaintAttrib &, const GLMatrix &,
+ const CompRegion &, CompOutput *, unsigned int);
+ WRAPABLE_HND (1, GLScreenInterface, void, glPaintTransformedOutput,
+ const GLScreenPaintAttrib &,
+ const GLMatrix &, const CompRegion &, CompOutput *,
+ unsigned int);
+ WRAPABLE_HND (2, GLScreenInterface, void, glApplyTransform,
+ const GLScreenPaintAttrib &, CompOutput *, GLMatrix *);
+
+ WRAPABLE_HND (3, GLScreenInterface, void, glEnableOutputClipping,
+ const GLMatrix &, const CompRegion &, CompOutput *);
+ WRAPABLE_HND (4, GLScreenInterface, void, glDisableOutputClipping);
+
+ friend class GLTexture;
+
+ private:
+ PrivateGLScreen *priv;
+};
+
+struct GLWindowPaintAttrib {
+ GLushort opacity;
+ GLushort brightness;
+ GLushort saturation;
+ GLfloat xScale;
+ GLfloat yScale;
+ GLfloat xTranslate;
+ GLfloat yTranslate;
+};
+
+class GLWindow;
+
+class GLWindowInterface :
+ public WrapableInterface<GLWindow, GLWindowInterface>
+{
+ public:
+ virtual bool glPaint (const GLWindowPaintAttrib &, const GLMatrix &,
+ const CompRegion &, unsigned int);
+ virtual bool glDraw (const GLMatrix &, GLFragment::Attrib &,
+ const CompRegion &, unsigned int);
+ virtual void glAddGeometry (const GLTexture::MatrixList &,
+ const CompRegion &,const CompRegion &);
+ virtual void glDrawTexture (GLTexture *texture, GLFragment::Attrib &,
+ unsigned int);
+ virtual void glDrawGeometry ();
+};
+
+class GLWindow :
+ public WrapableHandler<GLWindowInterface, 5>,
+ public PrivateHandler<GLWindow, CompWindow, COMPIZ_OPENGL_ABI>
+{
+ public:
+
+ class Geometry {
+ public:
+ Geometry ();
+ ~Geometry ();
+
+ void reset ();
+
+ bool moreVertices (int newSize);
+ bool moreIndices (int newSize);
+
+ public:
+ GLfloat *vertices;
+ int vertexSize;
+ int vertexStride;
+ GLushort *indices;
+ int indexSize;
+ int vCount;
+ int texUnits;
+ int texCoordSize;
+ int indexCount;
+ };
+
+ static GLWindowPaintAttrib defaultPaintAttrib;
+ public:
+
+ GLWindow (CompWindow *w);
+ ~GLWindow ();
+
+ const CompRegion & clip () const;
+
+ GLWindowPaintAttrib & paintAttrib ();
+ GLWindowPaintAttrib & lastPaintAttrib ();
+
+ unsigned int lastMask () const;
+
+ bool bind ();
+ void release ();
+
+ const GLTexture::List & textures () const;
+ const GLTexture::MatrixList & matrices () const;
+
+ void updatePaintAttribs ();
+
+ Geometry & geometry ();
+
+ GLTexture *getIcon (int width, int height);
+
+ WRAPABLE_HND (0, GLWindowInterface, bool, glPaint,
+ const GLWindowPaintAttrib &, const GLMatrix &,
+ const CompRegion &, unsigned int);
+ WRAPABLE_HND (1, GLWindowInterface, bool, glDraw, const GLMatrix &,
+ GLFragment::Attrib &, const CompRegion &, unsigned int);
+ WRAPABLE_HND (2, GLWindowInterface, void, glAddGeometry,
+ const GLTexture::MatrixList &, const CompRegion &,
+ const CompRegion &);
+ WRAPABLE_HND (3, GLWindowInterface, void, glDrawTexture,
+ GLTexture *texture, GLFragment::Attrib &, unsigned int);
+ WRAPABLE_HND (4, GLWindowInterface, void, glDrawGeometry);
+
+ friend class GLScreen;
+ friend class PrivateGLScreen;
+
+ private:
+ PrivateGLWindow *priv;
+};
+
+#endif
diff --git a/plugins/opengl/include/opengl/texture.h b/plugins/opengl/include/opengl/texture.h
new file mode 100644
index 0000000..1a32757
--- /dev/null
+++ b/plugins/opengl/include/opengl/texture.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright © 2008 Dennis Kasprzyk
+ * Copyright © 2007 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Dennis Kasprzyk <onestone@compiz-fusion.org>
+ * David Reveman <davidr@novell.com>
+ */
+
+#ifndef _GLTEXTURE_H
+#define _GLTEXTURE_H
+
+#include <X11/Xlib-xcb.h>
+
+#include <GL/gl.h>
+
+#include <vector>
+
+#include <core/region.h>
+
+#define POWER_OF_TWO(v) ((v & (v - 1)) == 0)
+
+#define COMP_TEX_COORD_X(m, vx) ((m).xx * (vx) + (m).x0)
+#define COMP_TEX_COORD_Y(m, vy) ((m).yy * (vy) + (m).y0)
+
+#define COMP_TEX_COORD_XY(m, vx, vy) \
+ ((m).xx * (vx) + (m).xy * (vy) + (m).x0)
+#define COMP_TEX_COORD_YX(m, vx, vy) \
+ ((m).yx * (vx) + (m).yy * (vy) + (m).y0)
+
+class PrivateTexture;
+
+class GLTexture : public CompRect {
+ public:
+
+ typedef enum {
+ Fast,
+ Good
+ } Filter;
+
+ typedef struct {
+ float xx; float yx;
+ float xy; float yy;
+ float x0; float y0;
+ } Matrix;
+
+ typedef std::vector<Matrix> MatrixList;
+
+ class List : public std::vector <GLTexture *> {
+
+ public:
+ List ();
+ List (unsigned int);
+ List (const List &);
+ ~List ();
+
+ List & operator= (const List &);
+
+ void clear ();
+ };
+
+ typedef boost::function<List (Pixmap, int, int, int)> BindPixmapProc;
+ typedef unsigned int BindPixmapHandle;
+
+ public:
+
+ GLuint name () const;
+ GLenum target () const;
+ GLenum filter () const;
+
+ const Matrix & matrix () const;
+
+ virtual void enable (Filter filter);
+ virtual void disable ();
+
+ bool mipmap () const;
+ void setMipmap (bool);
+ void setFilter (GLenum);
+ void setWrap (GLenum);
+
+ static void incRef (GLTexture *);
+ static void decRef (GLTexture *);
+
+ static List bindPixmapToTexture (Pixmap pixmap,
+ int width,
+ int height,
+ int depth);
+
+ static List imageBufferToTexture (const char *image,
+ CompSize size);
+
+ static List imageDataToTexture (const char *image,
+ CompSize size,
+ GLenum format,
+ GLenum type);
+
+ static List readImageToTexture (CompString &imageFileName,
+ CompSize &size);
+
+ friend class PrivateTexture;
+
+ protected:
+ GLTexture ();
+ virtual ~GLTexture ();
+
+ void setData (GLenum target, Matrix &m, bool mipmap);
+
+ private:
+ PrivateTexture *priv;
+};
+
+#endif
diff --git a/plugins/opengl/include/opengl/vector.h b/plugins/opengl/include/opengl/vector.h
new file mode 100644
index 0000000..19e2178
--- /dev/null
+++ b/plugins/opengl/include/opengl/vector.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright © 2008 Danny Baumann
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Dennis Kasprzyk not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Dennis Kasprzyk makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * DENNIS KASPRZYK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL DENNIS KASPRZYK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Danny Baumann <maniac@compiz-fusion.org>
+ */
+
+#ifndef _GLVECTOR_H
+#define _GLVECTOR_H
+
+class GLVector {
+ public:
+ typedef enum {
+ x,
+ y,
+ z,
+ w
+ } VectorCoordsEnum;
+
+ GLVector ();
+ GLVector (float x, float y, float z, float w);
+
+ float& operator[] (int item);
+ float& operator[] (VectorCoordsEnum coord);
+
+ const float operator[] (int item) const;
+ const float operator[] (VectorCoordsEnum coord) const;
+
+ GLVector& operator+= (const GLVector& rhs);
+ GLVector& operator-= (const GLVector& rhs);
+ GLVector& operator*= (const float k);
+ GLVector& operator/= (const float k);
+ GLVector& operator^= (const GLVector& rhs);
+
+ float norm ();
+ GLVector& normalize ();
+
+ private:
+ friend GLVector operator+ (const GLVector& lhs,
+ const GLVector& rhs);
+ friend GLVector operator- (const GLVector& lhs,
+ const GLVector& rhs);
+ friend GLVector operator- (const GLVector& vector);
+ friend float operator* (const GLVector& lhs,
+ const GLVector& rhs);
+ friend GLVector operator* (const float k,
+ const GLVector& vector);
+ friend GLVector operator* (const GLVector& vector,
+ const float k);
+ friend GLVector operator/ (const GLVector& lhs,
+ const GLVector& rhs);
+ friend GLVector operator^ (const GLVector& lhs,
+ const GLVector& rhs);
+
+ float v[4];
+};
+
+#endif
diff --git a/plugins/opengl/opengl.xml.in b/plugins/opengl/opengl.xml.in
new file mode 100644
index 0000000..6a95685
--- /dev/null
+++ b/plugins/opengl/opengl.xml.in
@@ -0,0 +1,47 @@
+<compiz>
+ <plugin name="opengl">
+ <_short>OpenGL</_short>
+ <_long>OpenGL Plugin</_long>
+ <deps>
+ <requirement>
+ <plugin>composite</plugin>
+ </requirement>
+ </deps>
+ <options>
+ <option name="texture_filter" type="int">
+ <_short>Texture Filter</_short>
+ <_long>Texture filtering</_long>
+ <default>1</default>
+ <min>0</min>
+ <max>2</max>
+ <desc>
+ <value>0</value>
+ <_name>Fast</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Good</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Best</_name>
+ </desc>
+ </option>
+ <option name="lighting" type="bool">
+ <_short>Lighting</_short>
+ <_long>Use diffuse light when screen is transformed</_long>
+ <default>true</default>
+ </option>
+ <option name="sync_to_vblank" type="bool">
+ <_short>Sync To VBlank</_short>
+ <_long>Only perform screen updates during vertical blanking period</_long>
+ <default>true</default>
+ </option>
+ <option name="texture_compression" type="bool">
+ <_short>Texture Compression</_short>
+ <_long>If available use compression for textures converted from images</_long>
+ <default>true</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/opengl/fragment.cpp b/plugins/opengl/src/fragment.cpp
index 3546be3..3546be3 100644
--- a/plugins/opengl/fragment.cpp
+++ b/plugins/opengl/src/fragment.cpp
diff --git a/plugins/opengl/matrix.cpp b/plugins/opengl/src/matrix.cpp
index 2dc7d6f..2dc7d6f 100644
--- a/plugins/opengl/matrix.cpp
+++ b/plugins/opengl/src/matrix.cpp
diff --git a/plugins/opengl/opengl.cpp b/plugins/opengl/src/opengl.cpp
index d85f164..d85f164 100644
--- a/plugins/opengl/opengl.cpp
+++ b/plugins/opengl/src/opengl.cpp
diff --git a/plugins/opengl/paint.cpp b/plugins/opengl/src/paint.cpp
index 376cf4e..376cf4e 100644
--- a/plugins/opengl/paint.cpp
+++ b/plugins/opengl/src/paint.cpp
diff --git a/plugins/opengl/privatefragment.h b/plugins/opengl/src/privatefragment.h
index 8a94d04..8a94d04 100644
--- a/plugins/opengl/privatefragment.h
+++ b/plugins/opengl/src/privatefragment.h
diff --git a/plugins/opengl/privates.h b/plugins/opengl/src/privates.h
index 0429000..0429000 100644
--- a/plugins/opengl/privates.h
+++ b/plugins/opengl/src/privates.h
diff --git a/plugins/opengl/privatetexture.h b/plugins/opengl/src/privatetexture.h
index 75d1d58..75d1d58 100644
--- a/plugins/opengl/privatetexture.h
+++ b/plugins/opengl/src/privatetexture.h
diff --git a/plugins/opengl/screen.cpp b/plugins/opengl/src/screen.cpp
index 61cc2e4..61cc2e4 100644
--- a/plugins/opengl/screen.cpp
+++ b/plugins/opengl/src/screen.cpp
diff --git a/plugins/opengl/texture.cpp b/plugins/opengl/src/texture.cpp
index 3e7b015..3e7b015 100644
--- a/plugins/opengl/texture.cpp
+++ b/plugins/opengl/src/texture.cpp
diff --git a/plugins/opengl/vector.cpp b/plugins/opengl/src/vector.cpp
index afb10d2..afb10d2 100644
--- a/plugins/opengl/vector.cpp
+++ b/plugins/opengl/src/vector.cpp
diff --git a/plugins/opengl/window.cpp b/plugins/opengl/src/window.cpp
index cabd8bc..cabd8bc 100644
--- a/plugins/opengl/window.cpp
+++ b/plugins/opengl/src/window.cpp
diff --git a/plugins/place/CMakeLists.txt b/plugins/place/CMakeLists.txt
new file mode 100644
index 0000000..8a99ec6
--- /dev/null
+++ b/plugins/place/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(place) \ No newline at end of file
diff --git a/plugins/place/place.xml.in b/plugins/place/place.xml.in
new file mode 100644
index 0000000..addd9c6
--- /dev/null
+++ b/plugins/place/place.xml.in
@@ -0,0 +1,116 @@
+<compiz>
+ <plugin name="place">
+ <_short>Place Windows</_short>
+ <_long>Place windows at appropriate positions when mapped</_long>
+ <options>
+ <option name="workarounds" type="bool">
+ <_short>Workarounds</_short>
+ <_long>Window placement workarounds</_long>
+ <default>true</default>
+ </option>
+ <option name="mode" type="int">
+ <_short>Placement Mode</_short>
+ <_long>Algorithm to use for window placement</_long>
+ <default>0</default>
+ <min>0</min>
+ <max>4</max>
+ <desc>
+ <value>0</value>
+ <_name>Cascade</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Centered</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Smart</_name>
+ </desc>
+ <desc>
+ <value>3</value>
+ <_name>Maximize</_name>
+ </desc>
+ <desc>
+ <value>4</value>
+ <_name>Random</_name>
+ </desc>
+ </option>
+ <option name="multioutput_mode" type="int">
+ <_short>Multi Output Mode</_short>
+ <_long>Selects how window placement should behave if multiple outputs are selected</_long>
+ <min>0</min>
+ <max>3</max>
+ <default>0</default>
+ <desc>
+ <value>0</value>
+ <_name>Use active output device</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Use output device with pointer</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Use output device of focussed window</_name>
+ </desc>
+ <desc>
+ <value>3</value>
+ <_name>Place across all outputs</_name>
+ </desc>
+ </option>
+ <option name="force_placement_match" type="match">
+ <_short>Force Placement Windows</_short>
+ <_long>Windows that should forcedly be placed, even if they indicate the window manager should avoid placing them.</_long>
+ <default></default>
+ </option>
+ <group>
+ <_short>Fixed Window Placement</_short>
+ <subgroup>
+ <_short>Windows with fixed positions></_short>
+ <option name="position_matches" type="list">
+ <_short>Positioned windows</_short>
+ <_long>Windows that should be positioned by default</_long>
+ <type>match</type>
+ </option>
+ <option name="position_x_values" type="list">
+ <_short>X Positions</_short>
+ <_long>X position values</_long>
+ <type>int</type>
+ </option>
+ <option name="position_y_values" type="list">
+ <_short>Y Positions</_short>
+ <_long>Y position values</_long>
+ <type>int</type>
+ </option>
+ <option name="position_constrain_workarea" type="list">
+ <_short>Keep In Workarea</_short>
+ <_long>Keep placed window in work area, even if that means that the position might differ from the specified position</_long>
+ <type>bool</type>
+ </option>
+ </subgroup>
+ <subgroup>
+ <_short>Windows with fixed viewport</_short>
+ <option name="viewport_matches" type="list">
+ <_short>Viewport positioned windows</_short>
+ <_long>Windows that should be positioned in specific viewports by default</_long>
+ <type>match</type>
+ </option>
+ <option name="viewport_x_values" type="list">
+ <_short>X Viewport Positions</_short>
+ <_long>Horizontal viewport positions</_long>
+ <type>int</type>
+ <min>1</min>
+ <max>32</max>
+ </option>
+ <option name="viewport_y_values" type="list">
+ <_short>Y Viewport Positions</_short>
+ <_long>Vertical viewport positions</_long>
+ <type>int</type>
+ <min>1</min>
+ <max>32</max>
+ </option>
+ </subgroup>
+ </group>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/place.cpp b/plugins/place/src/place.cpp
index c9f051a..c9f051a 100644
--- a/plugins/place.cpp
+++ b/plugins/place/src/place.cpp
diff --git a/plugins/place.h b/plugins/place/src/place.h
index f640d27..f640d27 100644
--- a/plugins/place.h
+++ b/plugins/place/src/place.h
diff --git a/plugins/regex/CMakeLists.txt b/plugins/regex/CMakeLists.txt
new file mode 100644
index 0000000..c490112
--- /dev/null
+++ b/plugins/regex/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(regex) \ No newline at end of file
diff --git a/plugins/regex/regex.xml.in b/plugins/regex/regex.xml.in
new file mode 100644
index 0000000..72a7cca
--- /dev/null
+++ b/plugins/regex/regex.xml.in
@@ -0,0 +1,6 @@
+<compiz>
+ <plugin name="regex">
+ <_short>Regex Matching</_short>
+ <_long>Regex window matching</_long>
+ </plugin>
+</compiz>
diff --git a/plugins/regex.cpp b/plugins/regex/src/regex.cpp
index c09f66d..c09f66d 100644
--- a/plugins/regex.cpp
+++ b/plugins/regex/src/regex.cpp
diff --git a/plugins/regexplugin.h b/plugins/regex/src/regexplugin.h
index 49c4ea6..49c4ea6 100644
--- a/plugins/regexplugin.h
+++ b/plugins/regex/src/regexplugin.h
diff --git a/plugins/resize/CMakeLists.txt b/plugins/resize/CMakeLists.txt
new file mode 100644
index 0000000..14fc915
--- /dev/null
+++ b/plugins/resize/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(resize PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/resize/resize.xml.in b/plugins/resize/resize.xml.in
new file mode 100644
index 0000000..e2569b4
--- /dev/null
+++ b/plugins/resize/resize.xml.in
@@ -0,0 +1,107 @@
+<compiz>
+ <plugin name="resize">
+ <_short>Resize Window</_short>
+ <_long>Resize window</_long>
+ <deps>
+ <relation type="after">
+ <plugin>composite</plugin>
+ <plugin>opengl</plugin>
+ </relation>
+ </deps>
+ <options>
+ <option name="initiate_normal_key" type="key">
+ <_short>Initiate Normal Window Resize</_short>
+ <_long>Start resizing window normally</_long>
+ <default/>
+ </option>
+ <option name="initiate_outline_key" type="key">
+ <_short>Initiate Outline Window Resize</_short>
+ <_long>Start resizing window with outline</_long>
+ <default/>
+ </option>
+ <option name="initiate_rectangle_key" type="key">
+ <_short>Initiate Rectangle Window Resize</_short>
+ <_long>Start resizing window with rectangle</_long>
+ <default/>
+ </option>
+ <option name="initiate_stretch_key" type="key">
+ <_short>Initiate Stretch Window Resize</_short>
+ <_long>Start resizing window by stretching it</_long>
+ <default/>
+ </option>
+ <option name="initiate_button" type="button">
+ <_short>Initiate Window Resize</_short>
+ <_long>Start resizing window</_long>
+ <default>&lt;Alt&gt;Button2</default>
+ </option>
+ <option name="initiate_key" type="key">
+ <_short>Initiate Window Resize</_short>
+ <_long>Start resizing window</_long>
+ <default>&lt;Alt&gt;F8</default>
+ </option>
+ <option name="mode" type="int">
+ <_short>Default Resize Mode</_short>
+ <_long>Default mode used for window resizing</_long>
+ <default>0</default>
+ <min>0</min>
+ <max>3</max>
+ <desc>
+ <value>0</value>
+ <_name>Normal</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Outline</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Rectangle</_name>
+ </desc>
+ <desc>
+ <value>3</value>
+ <_name>Stretch</_name>
+ </desc>
+ </option>
+ <option name="border_color" type="color">
+ <_short>Border Color</_short>
+ <_long>Border color used for outline and rectangle resize modes</_long>
+ <default>
+ <red>0x2f2f</red>
+ <green>0x2f2f</green>
+ <blue>0x4f4f</blue>
+ <alpha>0x9f9f</alpha>
+ </default>
+ </option>
+ <option name="fill_color" type="color">
+ <_short>Fill Color</_short>
+ <_long>Fill color used for rectangle resize mode</_long>
+ <default>
+ <red>0x2f2f</red>
+ <green>0x2f2f</green>
+ <blue>0x4f4f</blue>
+ <alpha>0x4f4f</alpha>
+ </default>
+ </option>
+ <option name="normal_match" type="match">
+ <_short>Normal Resize Windows</_short>
+ <_long>Windows that normal resize should be used for</_long>
+ <default/>
+ </option>
+ <option name="outline_match" type="match">
+ <_short>Outline Resize Windows</_short>
+ <_long>Windows that outline resize should be used for</_long>
+ <default/>
+ </option>
+ <option name="rectangle_match" type="match">
+ <_short>Rectangle Resize Windows</_short>
+ <_long>Windows that rectangle resize should be used for</_long>
+ <default/>
+ </option>
+ <option name="stretch_match" type="match">
+ <_short>Stretch Resize Windows</_short>
+ <_long>Windows that stretch resize should be used for</_long>
+ <default/>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/resize.cpp b/plugins/resize/src/resize.cpp
index ae505a8..ae505a8 100644
--- a/plugins/resize.cpp
+++ b/plugins/resize/src/resize.cpp
diff --git a/plugins/resize.h b/plugins/resize/src/resize.h
index 5a41293..5a41293 100644
--- a/plugins/resize.h
+++ b/plugins/resize/src/resize.h
diff --git a/plugins/scale/CMakeLists.txt b/plugins/scale/CMakeLists.txt
index fc24521..7cf6a65 100644
--- a/plugins/scale/CMakeLists.txt
+++ b/plugins/scale/CMakeLists.txt
@@ -1,30 +1,5 @@
+find_package (Compiz REQUIRED)
-include_directories (
- ${compiz_SOURCE_DIR}/include
- ${compiz_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${COMPIZ_INCLUDE_DIRS}
-)
+include (CompizPlugin)
-link_directories (${compiz_plugindir})
-
-add_definitions (
- -DHAVE_CONFIG_H
- -DLOCALEDIR=\\\"${datadir}/locale\\\"
- -DPLUGINDIR=\\\"${compiz_plugindir}\\\"
- -DIMAGEDIR=\\\"${compiz_imagedir}\\\"
- -DMETADATADIR=\\\"${compiz_metadatadir}\\\"
-)
-
-add_library (scale SHARED
- scale.cpp
-)
-
-target_link_libraries (
- scale opengl composite
-)
-
-install (
- TARGETS scale
- DESTINATION ${compiz_plugindir}
-) \ No newline at end of file
+compiz_plugin(scale PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/scale/compiz-scale.pc.in b/plugins/scale/compiz-scale.pc.in
new file mode 100644
index 0000000..6c80f42
--- /dev/null
+++ b/plugins/scale/compiz-scale.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: compiz-scale
+Description: Scale plugin for compiz
+Version: @VERSION@
+
+Requires: compiz compiz-composite compiz-opengl
+Libs: -L${libdir} -lscale
+Cflags: @COMPIZ_CFLAGS@ -I${includedir}/compiz \ No newline at end of file
diff --git a/plugins/scale/include/scale/scale.h b/plugins/scale/include/scale/scale.h
new file mode 100644
index 0000000..c81b07d
--- /dev/null
+++ b/plugins/scale/include/scale/scale.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright © 2007 Novell, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Novell, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Novell, Inc. makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: David Reveman <davidr@novell.com>
+ */
+
+#ifndef _COMPIZ_SCALE_H
+#define _COMPIZ_SCALE_H
+
+#include <core/core.h>
+#include <core/privatehandler.h>
+
+#include <composite/composite.h>
+#include <opengl/opengl.h>
+
+#define COMPIZ_SCALE_ABI 1
+
+class ScaleScreen;
+class PrivateScaleScreen;
+class ScaleWindow;
+class PrivateScaleWindow;
+
+class ScaleScreenInterface :
+ public WrapableInterface<ScaleScreen, ScaleScreenInterface>
+{
+ public:
+ virtual bool layoutSlotsAndAssignWindows ();
+
+};
+
+class ScaleScreen :
+ public WrapableHandler<ScaleScreenInterface, 1>,
+ public PrivateHandler<ScaleScreen, CompScreen, COMPIZ_SCALE_ABI>
+{
+ public:
+ typedef enum {
+ Idle,
+ Out,
+ Wait,
+ In
+ } State;
+
+ typedef std::list<ScaleWindow *> WindowList;
+ ScaleScreen (CompScreen *s);
+ ~ScaleScreen ();
+
+ bool hasGrab () const;
+ State getState () const;
+ const CompMatch & getCustomMatch () const;
+ const WindowList& getWindows () const;
+
+ void relayoutSlots (const CompMatch& match);
+
+ CompOption::Vector & getOptions ();
+ bool setOption (const char *name, CompOption::Value &value);
+ CompOption * getOption (const char *name);
+
+ WRAPABLE_HND (0, ScaleScreenInterface, bool,
+ layoutSlotsAndAssignWindows)
+
+ friend class ScaleWindow;
+ friend class PrivateScaleScreen;
+ friend class PrivateScaleWindow;
+
+ private:
+ PrivateScaleScreen *priv;
+};
+
+class ScaleWindowInterface :
+ public WrapableInterface<ScaleWindow, ScaleWindowInterface>
+{
+ public:
+ virtual void scalePaintDecoration (const GLWindowPaintAttrib &,
+ const GLMatrix &,
+ const CompRegion &, unsigned int);
+ virtual bool setScaledPaintAttributes (GLWindowPaintAttrib &);
+ virtual void scaleSelectWindow ();
+};
+
+class ScaleWindow :
+ public WrapableHandler<ScaleWindowInterface, 3>,
+ public PrivateHandler<ScaleWindow, CompWindow, COMPIZ_SCALE_ABI>
+{
+ public:
+ ScaleWindow (CompWindow *w);
+ ~ScaleWindow ();
+
+ bool hasSlot () const;
+
+ WRAPABLE_HND (0, ScaleWindowInterface, void, scalePaintDecoration,
+ const GLWindowPaintAttrib &, const GLMatrix &,
+ const CompRegion &, unsigned int)
+ WRAPABLE_HND (1, ScaleWindowInterface, bool, setScaledPaintAttributes,
+ GLWindowPaintAttrib &)
+ WRAPABLE_HND (2, ScaleWindowInterface, void, scaleSelectWindow)
+
+ friend class ScaleScreen;
+ friend class PrivateScaleScreen;
+ friend class PrivateScaleWindow;
+
+ private:
+ PrivateScaleWindow *priv;
+};
+
+#define SCALE_SCREEN(s) \
+ ScaleScreen *ss = ScaleScreen::get (s)
+
+#define SCALE_WINDOW(w) \
+ ScaleWindow *sw = ScaleWindow::get (w)
+
+#endif
diff --git a/plugins/scale/scale.xml.in b/plugins/scale/scale.xml.in
new file mode 100644
index 0000000..c4f2ce8
--- /dev/null
+++ b/plugins/scale/scale.xml.in
@@ -0,0 +1,158 @@
+<compiz>
+ <plugin name="scale">
+ <_short>Scale</_short>
+ <_long>Scale windows</_long>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ <relation type="after">
+ <plugin>fade</plugin>
+ </relation>
+ </deps>
+ <options>
+ <option name="initiate_edge" type="edge">
+ <_short>Initiate Window Picker</_short>
+ <_long>Layout and start transforming windows</_long>
+ <default>
+ <edge name="TopRight"/>
+ </default>
+ <allowed edgednd="true"/>
+ </option>
+ <option name="initiate_key" type="key">
+ <_short>Initiate Window Picker</_short>
+ <_long>Layout and start transforming windows</_long>
+ <default>&lt;Shift&gt;&lt;Alt&gt;Up</default>
+ </option>
+ <option name="initiate_button" type="button">
+ <_short>Initiate Window Picker</_short>
+ <_long>Layout and start transforming windows</_long>
+ </option>
+ <option name="initiate_all_edge" type="edge">
+ <_short>Initiate Window Picker For All Windows</_short>
+ <_long>Layout and start transforming all windows</_long>
+ <allowed edgednd="true"/>
+ </option>
+ <option name="initiate_all_button" type="button">
+ <_short>Initiate Window Picker For All Windows</_short>
+ <_long>Layout and start transforming all windows</_long>
+ </option>
+ <option name="initiate_all_key" type="key">
+ <_short>Initiate Window Picker For All Windows</_short>
+ <_long>Layout and start transforming all windows</_long>
+ </option>
+ <option name="initiate_group_edge" type="edge">
+ <_short>Initiate Window Picker For Window Group</_short>
+ <_long>Layout and start transforming window group</_long>
+ <allowed edgednd="true"/>
+ </option>
+ <option name="initiate_group_button" type="button">
+ <_short>Initiate Window Picker For Window Group</_short>
+ <_long>Layout and start transforming window group</_long>
+ </option>
+ <option name="initiate_group_key" type="key">
+ <_short>Initiate Window Picker For Window Group</_short>
+ <_long>Layout and start transforming window group</_long>
+ </option>
+ <option name="initiate_output_edge" type="edge">
+ <_short>Initiate Window Picker For Windows on Current Output</_short>
+ <_long>Layout and start transforming windows on current output</_long>
+ <allowed edgednd="true"/>
+ </option>
+ <option name="initiate_output_button" type="button">
+ <_short>Initiate Window Picker For Windows on Current Output</_short>
+ <_long>Layout and start transforming windows on current output</_long>
+ </option>
+ <option name="initiate_output_key" type="key">
+ <_short>Initiate Window Picker For Windows on Current Output</_short>
+ <_long>Layout and start transforming windows on current output</_long>
+ </option>
+ <option name="show_desktop" type="bool">
+ <_short>Click Desktop to Show Desktop</_short>
+ <_long>Enter Show Desktop mode when Desktop is clicked during Scale</_long>
+ <default>true</default>
+ </option>
+ <option name="spacing" type="int">
+ <_short>Spacing</_short>
+ <_long>Space between windows</_long>
+ <default>10</default>
+ <min>0</min>
+ <max>250</max>
+ </option>
+ <option name="speed" type="float">
+ <_short>Speed</_short>
+ <_long>Scale speed</_long>
+ <default>1.5</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="timestep" type="float">
+ <_short>Timestep</_short>
+ <_long>Scale timestep</_long>
+ <default>1.2</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="window_match" type="match">
+ <_short>Scale Windows</_short>
+ <_long>Windows that should be scaled in scale mode</_long>
+ <default>Toolbar | Utility | Dialog | Normal | Unknown</default>
+ </option>
+ <option name="darken_back" type="bool">
+ <_short>Darken Background</_short>
+ <_long>Darken background when scaling windows</_long>
+ <default>true</default>
+ </option>
+ <option name="opacity" type="int">
+ <_short>Opacity</_short>
+ <_long>Amount of opacity in percent</_long>
+ <default>75</default>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ <option name="overlay_icon" type="int">
+ <_short>Overlay Icon</_short>
+ <_long>Overlay an icon on windows once they are scaled</_long>
+ <min>0</min>
+ <max>2</max>
+ <default>1</default>
+ <desc>
+ <value>0</value>
+ <_name>None</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>Emblem</_name>
+ </desc>
+ <desc>
+ <value>2</value>
+ <_name>Big</_name>
+ </desc>
+ </option>
+ <option name="hover_time" type="int">
+ <_short>Hover Time</_short>
+ <_long>Time (in ms) before scale mode is terminated when hovering over a window</_long>
+ <default>750</default>
+ <min>50</min>
+ <max>10000</max>
+ </option>
+ <option name="multioutput_mode" type="int">
+ <_short>Multi Output Mode</_short>
+ <_long>Selects where windows are scaled if multiple output devices are used.</_long>
+ <min>0</min>
+ <max>1</max>
+ <default>0</default>
+ <desc>
+ <value>0</value>
+ <_name>On current output device</_name>
+ </desc>
+ <desc>
+ <value>1</value>
+ <_name>On all output devices</_name>
+ </desc>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/scale/privates.h b/plugins/scale/src/privates.h
index 972669a..972669a 100644
--- a/plugins/scale/privates.h
+++ b/plugins/scale/src/privates.h
diff --git a/plugins/scale/scale.cpp b/plugins/scale/src/scale.cpp
index 2ae42a8..2ae42a8 100644
--- a/plugins/scale/scale.cpp
+++ b/plugins/scale/src/scale.cpp
diff --git a/plugins/switcher/CMakeLists.txt b/plugins/switcher/CMakeLists.txt
new file mode 100644
index 0000000..a5908e1
--- /dev/null
+++ b/plugins/switcher/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(switcher PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/switcher.cpp b/plugins/switcher/src/switcher.cpp
index a13c47f..a13c47f 100644
--- a/plugins/switcher.cpp
+++ b/plugins/switcher/src/switcher.cpp
diff --git a/plugins/switcher.h b/plugins/switcher/src/switcher.h
index f2c5a81..f2c5a81 100644
--- a/plugins/switcher.h
+++ b/plugins/switcher/src/switcher.h
diff --git a/plugins/switcher/switcher.xml.in b/plugins/switcher/switcher.xml.in
new file mode 100644
index 0000000..dda448a
--- /dev/null
+++ b/plugins/switcher/switcher.xml.in
@@ -0,0 +1,156 @@
+<compiz>
+ <plugin name="switcher">
+ <_short>Application Switcher</_short>
+ <_long>Application Switcher</_long>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ </deps>
+ <options>
+ <option name="next_button" type="button">
+ <_short>Next window</_short>
+ <_long>Popup switcher if not visible and select next window</_long>
+ </option>
+ <option name="next_key" type="key">
+ <_short>Next window</_short>
+ <_long>Popup switcher if not visible and select next window</_long>
+ <default>&lt;Alt&gt;Tab</default>
+ </option>
+ <option name="prev_button" type="button">
+ <_short>Prev window</_short>
+ <_long>Popup switcher if not visible and select previous window</_long>
+ </option>
+ <option name="prev_key" type="key">
+ <_short>Prev window</_short>
+ <_long>Popup switcher if not visible and select previous window</_long>
+ <default>&lt;Shift&gt;&lt;Alt&gt;Tab</default>
+ </option>
+ <option name="next_all_button" type="button">
+ <_short>Next window (All windows)</_short>
+ <_long>Popup switcher if not visible and select next window out of all windows</_long>
+ </option>
+ <option name="next_all_key" type="key">
+ <_short>Next window (All windows)</_short>
+ <_long>Popup switcher if not visible and select next window out of all windows</_long>
+ <default>&lt;Control&gt;&lt;Alt&gt;Tab</default>
+ </option>
+ <option name="prev_all_button" type="button">
+ <_short>Prev window (All windows)</_short>
+ <_long>Popup switcher if not visible and select previous window out of all windows</_long>
+ </option>
+ <option name="prev_all_key" type="key">
+ <_short>Prev window (All windows)</_short>
+ <_long>Popup switcher if not visible and select previous window out of all windows</_long>
+ <default>&lt;Shift&gt;&lt;Control&gt;&lt;Alt&gt;Tab</default>
+ </option>
+ <option name="next_no_popup_button" type="button">
+ <_short>Next window (No popup)</_short>
+ <_long>Select next window without showing the popup window.</_long>
+ </option>
+ <option name="next_no_popup_key" type="key">
+ <_short>Next window (No popup)</_short>
+ <_long>Select next window without showing the popup window.</_long>
+ </option>
+ <option name="prev_no_popup_button" type="button">
+ <_short>Prev window (No popup)</_short>
+ <_long>Select previous window without showing the popup window.</_long>
+ </option>
+ <option name="prev_no_popup_key" type="key">
+ <_short>Prev window (No popup)</_short>
+ <_long>Select previous window without showing the popup window.</_long>
+ </option>
+ <option name="next_panel_button" type="button">
+ <_short>Next Panel</_short>
+ <_long>Select next panel type window.</_long>
+ </option>
+ <option name="next_panel_key" type="key">
+ <_short>Next Panel</_short>
+ <_long>Select next panel type window.</_long>
+ </option>
+ <option name="prev_panel_button" type="button">
+ <_short>Prev Panel</_short>
+ <_long>Select previous panel type window.</_long>
+ </option>
+ <option name="prev_panel_key" type="key">
+ <_short>Prev Panel</_short>
+ <_long>Select previous panel type window.</_long>
+ </option>
+ <option name="speed" type="float">
+ <_short>Speed</_short>
+ <_long>Switcher speed</_long>
+ <default>1.5</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="timestep" type="float">
+ <_short>Timestep</_short>
+ <_long>Switcher timestep</_long>
+ <default>1.2</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="window_match" type="match">
+ <_short>Switcher windows</_short>
+ <_long>Windows that should be shown in switcher</_long>
+ <default>Toolbar | Utility | Dialog | Normal | Unknown</default>
+ </option>
+ <option name="mipmap" type="bool">
+ <_short>Mipmap</_short>
+ <_long>Generate mipmaps when possible for higher quality scaling</_long>
+ <default>true</default>
+ </option>
+ <option name="saturation" type="int">
+ <_short>Saturation</_short>
+ <_long>Amount of saturation in percent</_long>
+ <default>100</default>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ <option name="brightness" type="int">
+ <_short>Brightness</_short>
+ <_long>Amount of brightness in percent</_long>
+ <default>65</default>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ <option name="opacity" type="int">
+ <_short>Opacity</_short>
+ <_long>Amount of opacity in percent</_long>
+ <default>40</default>
+ <min>0</min>
+ <max>100</max>
+ </option>
+ <option name="bring_to_front" type="bool">
+ <_short>Bring To Front</_short>
+ <_long>Bring selected window to front</_long>
+ <default>true</default>
+ </option>
+ <option name="zoom" type="float">
+ <_short>Zoom</_short>
+ <_long>Distance desktop should be zoom out while switching windows</_long>
+ <default>1</default>
+ <min>0</min>
+ <max>5</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="icon" type="bool">
+ <_short>Icon</_short>
+ <_long>Show icon next to thumbnail</_long>
+ <default>true</default>
+ </option>
+ <option name="minimized" type="bool">
+ <_short>Minimized</_short>
+ <_long>Show minimized windows</_long>
+ <default>true</default>
+ </option>
+ <option name="auto_rotate" type="bool">
+ <_short>Auto Rotate</_short>
+ <_long>Rotate to the selected window while switching</_long>
+ <default>false</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/water/CMakeLists.txt b/plugins/water/CMakeLists.txt
new file mode 100644
index 0000000..2d2542b
--- /dev/null
+++ b/plugins/water/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(water PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/water.cpp b/plugins/water/src/water.cpp
index 30970cb..30970cb 100644
--- a/plugins/water.cpp
+++ b/plugins/water/src/water.cpp
diff --git a/plugins/water.h b/plugins/water/src/water.h
index c53026a..c53026a 100644
--- a/plugins/water.h
+++ b/plugins/water/src/water.h
diff --git a/plugins/water/water.xml.in b/plugins/water/water.xml.in
new file mode 100644
index 0000000..af41bc9
--- /dev/null
+++ b/plugins/water/water.xml.in
@@ -0,0 +1,60 @@
+<compiz>
+ <plugin name="water">
+ <_short>Water Effect</_short>
+ <_long>Adds water effects to different desktop actions</_long>
+ <deps>
+ <relation type="before">
+ <plugin>blur</plugin>
+ <plugin>video</plugin>
+ </relation>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ </deps>
+ <options>
+ <option name="initiate_key" type="key">
+ <_short>Initiate</_short>
+ <_long>Enable pointer water effects</_long>
+ <default>&lt;Control&gt;&lt;Super&gt;</default>
+ </option>
+ <option name="toggle_rain_key" type="key">
+ <_short>Toggle rain</_short>
+ <_long>Toggle rain effect</_long>
+ <default>&lt;Shift&gt;F9</default>
+ </option>
+ <option name="toggle_wiper_key" type="key">
+ <_short>Toggle wiper</_short>
+ <_long>Toggle wiper effect</_long>
+ <default>&lt;Shift&gt;F8</default>
+ </option>
+ <option name="offset_scale" type="float">
+ <_short>Offset Scale</_short>
+ <_long>Water offset scale</_long>
+ <default>1</default>
+ <min>0</min>
+ <max>10</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="rain_delay" type="int">
+ <_short>Rain Delay</_short>
+ <_long>Delay (in ms) between each rain-drop</_long>
+ <default>250</default>
+ <min>1</min>
+ <max>3600000</max>
+ </option>
+ <option name="title_wave" type="bell">
+ <_short>Title wave</_short>
+ <_long>Wave effect from window title</_long>
+ <default>false</default>
+ </option>
+ <option name="point" type="action">
+ <_short>Point</_short>
+ <_long>Add point</_long>
+ </option>
+ <option name="line" type="action">
+ <_short>Line</_short>
+ <_long>Add line</_long>
+ </option>
+ </options>
+ </plugin>
+</compiz>
diff --git a/plugins/zoom/CMakeLists.txt b/plugins/zoom/CMakeLists.txt
new file mode 100644
index 0000000..5ab0315
--- /dev/null
+++ b/plugins/zoom/CMakeLists.txt
@@ -0,0 +1,5 @@
+find_package (Compiz REQUIRED)
+
+include (CompizPlugin)
+
+compiz_plugin(zoom PLUGINDEPS composite opengl) \ No newline at end of file
diff --git a/plugins/zoom.cpp b/plugins/zoom/src/zoom.cpp
index 4f7a05b..4f7a05b 100644
--- a/plugins/zoom.cpp
+++ b/plugins/zoom/src/zoom.cpp
diff --git a/plugins/zoom.h b/plugins/zoom/src/zoom.h
index 41e64a1..41e64a1 100644
--- a/plugins/zoom.h
+++ b/plugins/zoom/src/zoom.h
diff --git a/plugins/zoom/zoom.xml.in b/plugins/zoom/zoom.xml.in
new file mode 100644
index 0000000..ff8bb5a
--- /dev/null
+++ b/plugins/zoom/zoom.xml.in
@@ -0,0 +1,62 @@
+<compiz>
+ <plugin name="zoom">
+ <_short>Zoom Desktop</_short>
+ <_long>Zoom and pan desktop cube</_long>
+ <deps>
+ <requirement>
+ <plugin>opengl</plugin>
+ </requirement>
+ </deps>
+ <options>
+ <option name="initiate_button" type="button">
+ <_short>Initiate</_short>
+ <_long>Zoom In</_long>
+ <default>&lt;Super&gt;Button3</default>
+ </option>
+ <option name="zoom_in_button" type="button">
+ <_short>Zoom In</_short>
+ <_long>Zoom In</_long>
+ <default>&lt;Super&gt;Button4</default>
+ </option>
+ <option name="zoom_out_button" type="button">
+ <_short>Zoom Out</_short>
+ <_long>Zoom Out</_long>
+ <default>&lt;Super&gt;Button5</default>
+ </option>
+ <option name="zoom_pan_button" type="button">
+ <_short>Zoom Pan</_short>
+ <_long>Zoom pan</_long>
+ <default>&lt;Super&gt;Button2</default>
+ </option>
+ <option name="speed" type="float">
+ <_short>Speed</_short>
+ <_long>Zoom Speed</_long>
+ <default>1.5</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="timestep" type="float">
+ <_short>Timestep</_short>
+ <_long>Zoom Timestep</_long>
+ <default>1.2</default>
+ <min>0.1</min>
+ <max>50</max>
+ <precision>0.1</precision>
+ </option>
+ <option name="zoom_factor" type="float">
+ <_short>Zoom factor</_short>
+ <_long>Zoom factor</_long>
+ <default>2</default>
+ <min>1.01</min>
+ <max>3</max>
+ <precision>0.01</precision>
+ </option>
+ <option name="filter_linear" type="bool">
+ <_short>Filter Linear</_short>
+ <_long>Use linear filter when zoomed in</_long>
+ <default>false</default>
+ </option>
+ </options>
+ </plugin>
+</compiz>