diff --git a/effects/CMakeLists.txt b/effects/CMakeLists.txt index 7fe559e275..ae7486a9ee 100644 --- a/effects/CMakeLists.txt +++ b/effects/CMakeLists.txt @@ -1,3 +1,7 @@ +# Uncomment to have the test effects built +#add_subdirectory( test ) + + # Adds effect plugin with given name. Sources are given after the name macro(KWIN4_ADD_EFFECT name) kde4_add_plugin(kwin4_effect_${name} ${ARGN}) @@ -15,20 +19,17 @@ include_directories( ${KDEBASE_WORKSPACE_SOURCE_DIR}/kwin/lib ) -install( FILES kwineffect.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) - - ### builtins - most important, ready-to-use effects # sources SET(kwin4_effect_builtins_sources boxswitch.cpp + demo_taskbarthumbnail.cpp desktopgrid.cpp dialogparent.cpp diminactive.cpp fade.cpp fallapart.cpp - flame.cpp maketransparent.cpp minimizeanimation.cpp presentwindows.cpp @@ -39,12 +40,12 @@ SET(kwin4_effect_builtins_sources # their .desktop files install( FILES boxswitch.desktop + demo_taskbarthumbnail.desktop desktopgrid.desktop dialogparent.desktop diminactive.desktop fade.desktop fallapart.desktop - flame.desktop maketransparent.desktop minimizeanimation.desktop presentwindows.desktop @@ -135,52 +136,6 @@ endif (X11_Xrender_FOUND) -### tests - meant to test/demo certain functionality, not really usable for end-users -SET(kwin4_effect_tests_sources - demo_shakymove.cpp - demo_shiftworkspaceup.cpp - demo_taskbarthumbnail.cpp - drunken.cpp - howto.cpp - test_input.cpp - test_thumbnail.cpp - ) -install( FILES - demo_shakymove.desktop - demo_shiftworkspaceup.desktop - demo_taskbarthumbnail.desktop - drunken.desktop - howto.desktop - test_input.desktop - test_thumbnail.desktop - DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) - -if(OPENGL_FOUND) - # opengl test/demo stuff - SET(kwin4_effect_tests_sources ${kwin4_effect_tests_sources} - demo_liquid.cpp - demo_showpicture.cpp - demo_wavywindows.cpp - test_fbo.cpp - ) - - install( FILES - demo_liquid.desktop - demo_showpicture.desktop - demo_wavywindows.desktop - test_fbo.desktop - DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) - - install( FILES - data/liquid.frag - data/liquid.vert - DESTINATION ${DATA_INSTALL_DIR}/kwin ) -endif(OPENGL_FOUND) - -# add the plugin -KWIN4_ADD_EFFECT(tests ${kwin4_effect_tests_sources}) - - ### videocapture plugin include(UsePkgConfig) diff --git a/effects/test/CMakeLists.txt b/effects/test/CMakeLists.txt new file mode 100644 index 0000000000..a165df9202 --- /dev/null +++ b/effects/test/CMakeLists.txt @@ -0,0 +1,63 @@ +# Adds effect plugin with given name. Sources are given after the name +macro(KWIN4_ADD_EFFECT name) + kde4_add_plugin(kwin4_effect_${name} ${ARGN}) + target_link_libraries(kwin4_effect_${name} kwineffects ${KDE4_KDEUI_LIBS}) + install(TARGETS kwin4_effect_${name} DESTINATION ${PLUGIN_INSTALL_DIR}) +endmacro(KWIN4_ADD_EFFECT) + +macro(KWIN4_ADD_EFFECT_CONFIG name) + kde4_add_plugin(kcm_kwin4_effect_${name} ${ARGN}) + target_link_libraries(kcm_kwin4_effect_${name} kwineffects ${KDE4_KDEUI_LIBS}) + install(TARGETS kcm_kwin4_effect_${name} DESTINATION ${PLUGIN_INSTALL_DIR}) +endmacro(KWIN4_ADD_EFFECT_CONFIG) + +include_directories( + ${KDEBASE_WORKSPACE_SOURCE_DIR}/kwin/lib + ) + + +### tests - meant to test/demo certain functionality, not really usable for end-users +SET(kwin4_effect_tests_sources + demo_shakymove.cpp + demo_shiftworkspaceup.cpp + drunken.cpp + flame.cpp + howto.cpp + test_input.cpp + test_thumbnail.cpp + ) +install( FILES + demo_shakymove.desktop + demo_shiftworkspaceup.desktop + drunken.desktop + flame.desktop + howto.desktop + test_input.desktop + test_thumbnail.desktop + DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) + +if(OPENGL_FOUND) + # opengl test/demo stuff + SET(kwin4_effect_tests_sources ${kwin4_effect_tests_sources} + demo_liquid.cpp + demo_showpicture.cpp + demo_wavywindows.cpp + test_fbo.cpp + ) + + install( FILES + demo_liquid.desktop + demo_showpicture.desktop + demo_wavywindows.desktop + test_fbo.desktop + DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) + + install( FILES + data/liquid.frag + data/liquid.vert + DESTINATION ${DATA_INSTALL_DIR}/kwin ) +endif(OPENGL_FOUND) + +# add the plugin +KWIN4_ADD_EFFECT(tests ${kwin4_effect_tests_sources}) + diff --git a/effects/test/data/liquid.frag b/effects/test/data/liquid.frag new file mode 100644 index 0000000000..f2515fe845 --- /dev/null +++ b/effects/test/data/liquid.frag @@ -0,0 +1,50 @@ +uniform sampler2D sceneTex; +uniform float textureWidth; +uniform float textureHeight; +uniform float time; + +varying vec2 pos; + + +#define DEG2RAD (6.2832/360.0) + + +// Converts pixel coordinates to texture coordinates +vec2 pix2tex(vec2 pix) +{ + return vec2(pix.x / textureWidth, 1.0 - pix.y / textureHeight); +} + +float wave(vec2 pos, vec2 wave_dir, float wave_length, float wave_speed) +{ + return sin(((pos.x * wave_dir.x) + (pos.y * wave_dir.y)) * 6.2832 / wave_length + + time * wave_speed * 6.2832 / wave_length); +} + +vec2 displacement(float wave_angle, float wave_length, float wave_speed, float wave_height) +{ + vec2 wave_dir = vec2(cos(wave_angle * DEG2RAD), sin(wave_angle * DEG2RAD)); + return wave_dir * (wave(pos, wave_dir, wave_length, wave_speed) * wave_height); +} + +// Only for debugging +float wave_color(float wave_angle, float wave_length, float wave_speed, float wave_height) +{ + vec2 wave_dir = vec2(cos(wave_angle * DEG2RAD), sin(wave_angle * DEG2RAD)); + return wave(pos, wave_dir, wave_length, wave_speed) * 0.5 + 0.5; +} + +void main() +{ + vec2 texpos = pos; + texpos += displacement( 20.0, 250.0, 120.0, 4.0); + texpos += displacement(-40.0, 350.0, 100.0, 4.0); + texpos += displacement(240.0, 1000.0, 100.0, 12.0); + texpos += displacement(160.0, 50.0, 30.0, 2.0); + + vec3 tex = texture2D(sceneTex, pix2tex(texpos)).rgb; + //tex.r = wave_color( 20, 250, 150, 4); // debug + + gl_FragColor = vec4(tex, 1.0); +} + diff --git a/effects/test/data/liquid.vert b/effects/test/data/liquid.vert new file mode 100644 index 0000000000..55d169df80 --- /dev/null +++ b/effects/test/data/liquid.vert @@ -0,0 +1,7 @@ +varying vec2 pos; + +void main() +{ + pos = gl_Vertex.xy; + gl_Position = ftransform(); +} diff --git a/effects/demo_liquid.cpp b/effects/test/demo_liquid.cpp similarity index 100% rename from effects/demo_liquid.cpp rename to effects/test/demo_liquid.cpp diff --git a/effects/demo_liquid.desktop b/effects/test/demo_liquid.desktop similarity index 100% rename from effects/demo_liquid.desktop rename to effects/test/demo_liquid.desktop diff --git a/effects/demo_liquid.h b/effects/test/demo_liquid.h similarity index 100% rename from effects/demo_liquid.h rename to effects/test/demo_liquid.h diff --git a/effects/demo_shakymove.cpp b/effects/test/demo_shakymove.cpp similarity index 100% rename from effects/demo_shakymove.cpp rename to effects/test/demo_shakymove.cpp diff --git a/effects/demo_shakymove.desktop b/effects/test/demo_shakymove.desktop similarity index 100% rename from effects/demo_shakymove.desktop rename to effects/test/demo_shakymove.desktop diff --git a/effects/demo_shakymove.h b/effects/test/demo_shakymove.h similarity index 100% rename from effects/demo_shakymove.h rename to effects/test/demo_shakymove.h diff --git a/effects/demo_shiftworkspaceup.cpp b/effects/test/demo_shiftworkspaceup.cpp similarity index 100% rename from effects/demo_shiftworkspaceup.cpp rename to effects/test/demo_shiftworkspaceup.cpp diff --git a/effects/demo_shiftworkspaceup.desktop b/effects/test/demo_shiftworkspaceup.desktop similarity index 100% rename from effects/demo_shiftworkspaceup.desktop rename to effects/test/demo_shiftworkspaceup.desktop diff --git a/effects/demo_shiftworkspaceup.h b/effects/test/demo_shiftworkspaceup.h similarity index 100% rename from effects/demo_shiftworkspaceup.h rename to effects/test/demo_shiftworkspaceup.h diff --git a/effects/demo_showpicture.cpp b/effects/test/demo_showpicture.cpp similarity index 100% rename from effects/demo_showpicture.cpp rename to effects/test/demo_showpicture.cpp diff --git a/effects/demo_showpicture.desktop b/effects/test/demo_showpicture.desktop similarity index 100% rename from effects/demo_showpicture.desktop rename to effects/test/demo_showpicture.desktop diff --git a/effects/demo_showpicture.h b/effects/test/demo_showpicture.h similarity index 100% rename from effects/demo_showpicture.h rename to effects/test/demo_showpicture.h diff --git a/effects/demo_wavywindows.cpp b/effects/test/demo_wavywindows.cpp similarity index 100% rename from effects/demo_wavywindows.cpp rename to effects/test/demo_wavywindows.cpp diff --git a/effects/demo_wavywindows.desktop b/effects/test/demo_wavywindows.desktop similarity index 100% rename from effects/demo_wavywindows.desktop rename to effects/test/demo_wavywindows.desktop diff --git a/effects/demo_wavywindows.h b/effects/test/demo_wavywindows.h similarity index 100% rename from effects/demo_wavywindows.h rename to effects/test/demo_wavywindows.h diff --git a/effects/drunken.cpp b/effects/test/drunken.cpp similarity index 100% rename from effects/drunken.cpp rename to effects/test/drunken.cpp diff --git a/effects/drunken.desktop b/effects/test/drunken.desktop similarity index 100% rename from effects/drunken.desktop rename to effects/test/drunken.desktop diff --git a/effects/drunken.h b/effects/test/drunken.h similarity index 100% rename from effects/drunken.h rename to effects/test/drunken.h diff --git a/effects/flame.cpp b/effects/test/flame.cpp similarity index 100% rename from effects/flame.cpp rename to effects/test/flame.cpp diff --git a/effects/flame.desktop b/effects/test/flame.desktop similarity index 100% rename from effects/flame.desktop rename to effects/test/flame.desktop diff --git a/effects/flame.h b/effects/test/flame.h similarity index 100% rename from effects/flame.h rename to effects/test/flame.h diff --git a/effects/howto.cpp b/effects/test/howto.cpp similarity index 100% rename from effects/howto.cpp rename to effects/test/howto.cpp diff --git a/effects/howto.desktop b/effects/test/howto.desktop similarity index 100% rename from effects/howto.desktop rename to effects/test/howto.desktop diff --git a/effects/howto.h b/effects/test/howto.h similarity index 100% rename from effects/howto.h rename to effects/test/howto.h diff --git a/effects/test_fbo.cpp b/effects/test/test_fbo.cpp similarity index 100% rename from effects/test_fbo.cpp rename to effects/test/test_fbo.cpp diff --git a/effects/test_fbo.desktop b/effects/test/test_fbo.desktop similarity index 100% rename from effects/test_fbo.desktop rename to effects/test/test_fbo.desktop diff --git a/effects/test_fbo.h b/effects/test/test_fbo.h similarity index 100% rename from effects/test_fbo.h rename to effects/test/test_fbo.h diff --git a/effects/test_input.cpp b/effects/test/test_input.cpp similarity index 100% rename from effects/test_input.cpp rename to effects/test/test_input.cpp diff --git a/effects/test_input.desktop b/effects/test/test_input.desktop similarity index 100% rename from effects/test_input.desktop rename to effects/test/test_input.desktop diff --git a/effects/test_input.h b/effects/test/test_input.h similarity index 100% rename from effects/test_input.h rename to effects/test/test_input.h diff --git a/effects/test_thumbnail.cpp b/effects/test/test_thumbnail.cpp similarity index 100% rename from effects/test_thumbnail.cpp rename to effects/test/test_thumbnail.cpp diff --git a/effects/test_thumbnail.desktop b/effects/test/test_thumbnail.desktop similarity index 100% rename from effects/test_thumbnail.desktop rename to effects/test/test_thumbnail.desktop diff --git a/effects/test_thumbnail.h b/effects/test/test_thumbnail.h similarity index 100% rename from effects/test_thumbnail.h rename to effects/test/test_thumbnail.h