Merge lp:~smspillaz/compiz/compiz.animationsplus-returns-v3 into lp:compiz/0.9.13

Proposed by Sam Spilsbury
Status: Superseded
Proposed branch: lp:~smspillaz/compiz/compiz.animationsplus-returns-v3
Merge into: lp:compiz/0.9.13
Prerequisite: lp:~smspillaz/compiz/compiz.simple-animations-returns-v2
Diff against target: 1374 lines (+1254/-9)
16 files modified
debian/compiz-dev.install (+1/-0)
debian/compiz-plugins.install (+2/-0)
debian/compiz-plugins.install.armel (+2/-0)
debian/compiz-plugins.install.armhf (+2/-0)
plugins/animationjc/CMakeLists.txt (+1/-4)
plugins/animationplus/CMakeLists.txt (+4/-0)
plugins/animationplus/VERSION (+1/-0)
plugins/animationplus/animationplus.xml.in (+185/-0)
plugins/animationplus/src/animation_tex.h (+222/-0)
plugins/animationplus/src/animationplus.cpp (+158/-0)
plugins/animationplus/src/blinds.cpp (+70/-0)
plugins/animationplus/src/bonanza.cpp (+241/-0)
plugins/animationplus/src/helix.cpp (+93/-0)
plugins/animationplus/src/private.h (+196/-0)
plugins/animationplus/src/shatter.cpp (+75/-0)
plugins/simple-animations/CMakeLists.txt (+1/-5)
To merge this branch: bzr merge lp:~smspillaz/compiz/compiz.animationsplus-returns-v3
Reviewer Review Type Date Requested Status
Marco Trevisan (Treviño) Needs Fixing
PS Jenkins bot continuous-integration Pending
Review via email: mp+300101@code.launchpad.net

This proposal supersedes a proposal from 2016-07-09.

This proposal has been superseded by a proposal from 2016-07-25.

Commit message

Re-add the animationsplus plugn

Description of the change

Re-add the animationsplus plugin

(Thanks to MC Return for preserving the code)

To post a comment you must log in.
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

Issues in generating deb packages here

dh_install --fail-missing
dh_install: Cannot find (any matches for) "usr/lib/*/compiz/*animationsplus.*" (tried in "." and "debian/tmp")
dh_install: compiz-plugins missing files: usr/lib/*/compiz/*animationsplus.*
dh_install: Cannot find (any matches for) "usr/share/compiz/*animationsplus.*" (tried in "." and "debian/tmp")
dh_install: compiz-plugins missing files: usr/share/compiz/*animationsplus.*
dh_install: usr/lib/x86_64-linux-gnu/compiz/libanimationplus.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/share/compiz/animationplus.xml exists in debian/tmp but is not installed to anywhere

review: Needs Fixing
4075. By Sam Spilsbury <email address hidden>

debian/compiz-plugins.install: Fix typo in animationplus

4076. By Sam Spilsbury <email address hidden>

Merge lp:~smspillaz/compiz/compiz.simple-animations-returns-v3

4077. By Sam Spilsbury <email address hidden>

animationplus: No need for libGLU

4078. By Sam Spilsbury <email address hidden>

animationplus: Remove libGLU include

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/compiz-dev.install'
2--- debian/compiz-dev.install 2016-06-28 14:57:19 +0000
3+++ debian/compiz-dev.install 2016-07-25 17:11:00 +0000
4@@ -2,6 +2,7 @@
5 debian/tmp/usr/lib/*/libcompiz_core.so
6 debian/tmp/usr/lib/*/pkgconfig/compiz-animation.pc
7 debian/tmp/usr/lib/*/pkgconfig/compiz-animationaddon.pc
8+debian/tmp/usr/lib/*/pkgconfig/compiz-animationjc.pc
9 debian/tmp/usr/lib/*/pkgconfig/compiz-compiztoolbox.pc
10 debian/tmp/usr/lib/*/pkgconfig/compiz-composite.pc
11 debian/tmp/usr/lib/*/pkgconfig/compiz-cube.pc
12
13=== modified file 'debian/compiz-plugins.install'
14--- debian/compiz-plugins.install 2016-07-25 17:10:49 +0000
15+++ debian/compiz-plugins.install 2016-07-25 17:11:00 +0000
16@@ -6,6 +6,8 @@
17 usr/share/compiz/*animationaddon.*
18 usr/lib/*/compiz/*animationjc.*
19 usr/share/compiz/*animationjc.*
20+usr/lib/*/compiz/*animationplus.*
21+usr/share/compiz/*animationplus.*
22 usr/lib/*/compiz/*animationsim.*
23 usr/share/compiz/*animationsim.*
24 usr/lib/*/compiz/*bench.*
25
26=== modified file 'debian/compiz-plugins.install.armel'
27--- debian/compiz-plugins.install.armel 2016-07-25 17:10:49 +0000
28+++ debian/compiz-plugins.install.armel 2016-07-25 17:11:00 +0000
29@@ -6,6 +6,8 @@
30 usr/share/compiz/*animationaddon.*
31 usr/lib/*/compiz/*animationjc.*
32 usr/share/compiz/*animationjc.*
33+usr/lib/*/compiz/*animationplus.*
34+usr/share/compiz/*animationplus.*
35 usr/lib/*/compiz/*animationsim.*
36 usr/share/compiz/*animationsim.*
37 usr/lib/*/compiz/*clone.*
38
39=== modified file 'debian/compiz-plugins.install.armhf'
40--- debian/compiz-plugins.install.armhf 2016-07-25 17:10:49 +0000
41+++ debian/compiz-plugins.install.armhf 2016-07-25 17:11:00 +0000
42@@ -6,6 +6,8 @@
43 usr/share/compiz/*animationaddon.*
44 usr/lib/*/compiz/*animationjc.*
45 usr/share/compiz/*animationjc.*
46+usr/lib/*/compiz/*animationplus.*
47+usr/share/compiz/*animationplus.*
48 usr/lib/*/compiz/*animationsim.*
49 usr/share/compiz/*animationsim.*
50 usr/lib/*/compiz/*clone.*
51
52=== modified file 'plugins/animationjc/CMakeLists.txt'
53--- plugins/animationjc/CMakeLists.txt 2016-07-25 17:10:49 +0000
54+++ plugins/animationjc/CMakeLists.txt 2016-07-25 17:11:00 +0000
55@@ -1,7 +1,4 @@
56 find_package (Compiz REQUIRED)
57 include (CompizPlugin)
58-include (FindOpenGL)
59
60-if (OPENGL_GLU_FOUND)
61- compiz_plugin (animationjc PLUGINDEPS composite opengl animation LIBRARIES ${OPENGL_glu_LIBRARY} INCDIRS ${OPENGL_INCLUDE_DIR})
62-endif (OPENGL_GLU_FOUND)
63+compiz_plugin (animationjc PLUGINDEPS composite opengl animation)
64
65=== added directory 'plugins/animationplus'
66=== added file 'plugins/animationplus/CMakeLists.txt'
67--- plugins/animationplus/CMakeLists.txt 1970-01-01 00:00:00 +0000
68+++ plugins/animationplus/CMakeLists.txt 2016-07-25 17:11:00 +0000
69@@ -0,0 +1,4 @@
70+find_package (Compiz REQUIRED)
71+include (CompizPlugin)
72+
73+compiz_plugin (animationplus PLUGINDEPS animation animationaddon composite opengl)
74
75=== added file 'plugins/animationplus/VERSION'
76--- plugins/animationplus/VERSION 1970-01-01 00:00:00 +0000
77+++ plugins/animationplus/VERSION 2016-07-25 17:11:00 +0000
78@@ -0,0 +1,1 @@
79+0.9.5.0
80
81=== added file 'plugins/animationplus/animationplus.xml.in'
82--- plugins/animationplus/animationplus.xml.in 1970-01-01 00:00:00 +0000
83+++ plugins/animationplus/animationplus.xml.in 2016-07-25 17:11:00 +0000
84@@ -0,0 +1,185 @@
85+<compiz>
86+ <!-- animationplus metadata -->
87+ <plugin name="animationplus" useBcop="true">
88+ <_short>Animations Plus</_short>
89+ <_long>More window animations</_long>
90+ <category>Effects</category>
91+ <deps>
92+ <requirement>
93+ <plugin>animation</plugin>
94+ <plugin>animationaddon</plugin>
95+ </requirement>
96+ <relation type="after">
97+ <plugin>animationaddon</plugin>
98+ <plugin>opengl</plugin>
99+ <plugin>composite</plugin>
100+ </relation>
101+ </deps>
102+
103+ <options>
104+
105+ <group>
106+ <_short>Effect Settings</_short>
107+
108+ <subgroup>
109+ <_short>Helix</_short>
110+ <option name="helix_num_twists" type="int">
111+ <_short>Helix Number of Twists</_short>
112+ <_long>Number of twists to do in the animation</_long>
113+ <default>2</default>
114+ <min>1</min>
115+ <max>10</max>
116+ </option>
117+ <option name="helix_gridy" type="int">
118+ <_short>Helix Gridsize Y</_short>
119+ <_long>Number of blocks in the animation</_long>
120+ <default>90</default>
121+ <min>5</min>
122+ <max>300</max>
123+ </option>
124+ <option name="helix_thickness" type="float">
125+ <_short>Helix Thickness</_short>
126+ <_long>Thickness of blocks in the animation</_long>
127+ <default>0</default>
128+ <min>0</min>
129+ <max>50</max>
130+ </option>
131+ <option name="helix_spin_direction" type="int">
132+ <_short>Spin Direction</_short>
133+ <_long>Direction the strips spin.</_long>
134+ <default>1</default>
135+ <min>0</min>
136+ <max>1</max>
137+ <desc>
138+ <value>0</value>
139+ <_name>Counter-Clockwise</_name>
140+ </desc>
141+ <desc>
142+ <value>1</value>
143+ <_name>Clockwise</_name>
144+ </desc>
145+ </option>
146+ <option name="helix_direction" type="bool">
147+ <_short>Vertical Helix</_short>
148+ <_long>Whether Helix should rotate with its axis up/down or in/out of the screen</_long>
149+ <default>false</default>
150+ </option>
151+ </subgroup>
152+
153+
154+ <subgroup>
155+ <_short>Blinds</_short>
156+ <option name="blinds_num_halftwists" type="int">
157+ <_short>Blinds Number of Half Twists</_short>
158+ <_long>Number of half twists to do in the animation</_long>
159+ <default>2</default>
160+ <min>1</min>
161+ <max>10</max>
162+ </option>
163+ <option name="blinds_gridx" type="int">
164+ <_short>Helix Gridsize Y</_short>
165+ <_long>Number of blocks in the animation</_long>
166+ <default>20</default>
167+ <min>1</min>
168+ <max>100</max>
169+ </option>
170+ <option name="blinds_thickness" type="float">
171+ <_short>Blinds Thickness</_short>
172+ <_long>Thickness of blocks in the animation</_long>
173+ <default>0</default>
174+ <min>0</min>
175+ <max>50</max>
176+ </option>
177+ </subgroup>
178+
179+ <subgroup>
180+ <_short>Shatter</_short>
181+ <option name="shatter_num_spokes" type="int">
182+ <_short>Shatter number of spokes</_short>
183+ <_long>Number of spokes (divided by 4) in the animation</_long>
184+ <default>2</default>
185+ <min>1</min>
186+ <max>100</max>
187+ </option>
188+ <option name="shatter_num_tiers" type="int">
189+ <_short>Shatter Number of Tiers</_short>
190+ <_long>Number of concentric circles in the animation</_long>
191+ <default>2</default>
192+ <min>1</min>
193+ <max>100</max>
194+ </option>
195+ </subgroup>
196+
197+ <subgroup>
198+ <_short>Bonanza</_short>
199+ <option name="bonanza_particles" type="int">
200+ <_short>Number Of Fire Particles</_short>
201+ <_long>Number of fire particles.</_long>
202+ <default>1000</default>
203+ <min>100</min>
204+ <max>10000</max>
205+ </option>
206+ <option name="bonanza_size" type="float">
207+ <_short>Fire Particle Size</_short>
208+ <_long>Fire particle size.</_long>
209+ <default>5</default>
210+ <min>0.1</min>
211+ <max>20</max>
212+ <precision>0.1</precision>
213+ </option>
214+ <option name="bonanza_life" type="float">
215+ <_short>Fire Particle Life</_short>
216+ <_long>Fire particle life.</_long>
217+ <default>0.7</default>
218+ <min>0.1</min>
219+ <max>1</max>
220+ <precision>0.1</precision>
221+ </option>
222+ <option name="bonanza_color" type="color">
223+ <_short>Fire Particle Color</_short>
224+ <_long>Fire particle color.</_long>
225+ <default>
226+ <red>0xffff</red>
227+ <green>0x3333</green>
228+ <blue>0x0555</blue>
229+ <alpha>0xffff</alpha>
230+ </default>
231+ </option>
232+ <option name="bonanza_mystical" type="bool">
233+ <_short>Randomly Colored Fire</_short>
234+ <_long>Have random colors for the fire effect, also known as Mystical Fire.</_long>
235+ <default>false</default>
236+ </option>
237+ </subgroup>
238+
239+ </group>
240+
241+ </options>
242+
243+ <extension base_plugin="animation">
244+ <base_option>open_effects</base_option>
245+ <base_option>open_random_effects</base_option>
246+ <base_option>close_effects</base_option>
247+ <base_option>close_random_effects</base_option>
248+ <base_option>minimize_effects</base_option>
249+ <base_option>minimize_random_effects</base_option>
250+ <restriction>
251+ <value>animationplus:Blinds</value>
252+ <_name>Blinds</_name>
253+ </restriction>
254+ <restriction>
255+ <value>animationplus:Helix</value>
256+ <_name>Helix</_name>
257+ </restriction>
258+ <restriction>
259+ <value>animationplus:Bonanza</value>
260+ <_name>Bonanza</_name>
261+ </restriction>
262+ <restriction>
263+ <value>animationplus:Shatter</value>
264+ <_name>Shatter</_name>
265+ </restriction>
266+ </extension>
267+
268+ </plugin>
269+</compiz>
270
271=== added directory 'plugins/animationplus/src'
272=== added file 'plugins/animationplus/src/animation_tex.h'
273--- plugins/animationplus/src/animation_tex.h 1970-01-01 00:00:00 +0000
274+++ plugins/animationplus/src/animation_tex.h 2016-07-25 17:11:00 +0000
275@@ -0,0 +1,222 @@
276+/**
277+ *
278+ * Particle texture for Beryl benchmark plugin
279+ *
280+ * Copyright : (C) 2006 by Dennis Kasprzyk
281+ * E-mail : onestone@beryl-project.org
282+ *
283+ *
284+ * This program is free software; you can redistribute it and/or
285+ * modify it under the terms of the GNU General Public License
286+ * as published by the Free Software Foundation; either version 2
287+ * of the License, or (at your option) any later version.
288+ *
289+ * This program is distributed in the hope that it will be useful,
290+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
291+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
292+ * GNU General Public License for more details.
293+ *
294+ **/
295+
296+static const unsigned char fireTex[4097] = {
297+ "\0\0\0\0\377\377\377\3\377\377\377\2\377\377\377\5\377\377\377\7\377\377"
298+ "\377\6\377\377\377\6\377\377\377\12\377\377\377\13\377\377\377\11\377\377"
299+ "\377\12\377\377\377\12\377\377\377\14\377\377\377\14\377\377\377\14\377\377"
300+ "\377\16\377\377\377\15\377\377\377\14\377\377\377\12\377\377\377\13\377\377"
301+ "\377\13\377\377\377\11\377\377\377\12\377\377\377\12\377\377\377\10\377\377"
302+ "\377\7\377\377\377\6\377\377\377\6\377\377\377\5\377\377\377\2\0\0\0\0\0"
303+ "\0\0\0\377\377\377\4\377\377\377\3\377\377\377\4\377\377\377\7\377\377\377"
304+ "\6\377\377\377\10\377\377\377\11\377\377\377\11\377\377\377\14\377\377\377"
305+ "\14\377\377\377\15\377\377\377\16\377\377\377\20\377\377\377\21\377\377\377"
306+ "\20\377\377\377\22\377\377\377\20\377\377\377\21\377\377\377\17\377\377\377"
307+ "\20\377\377\377\17\377\377\377\13\377\377\377\13\377\377\377\13\377\377\377"
308+ "\14\377\377\377\11\377\377\377\6\377\377\377\6\377\377\377\6\377\377\377"
309+ "\4\377\377\377\1\0\0\0\0\377\377\377\5\377\377\377\4\377\377\377\6\377\377"
310+ "\377\6\377\377\377\12\377\377\377\12\377\377\377\11\377\377\377\14\377\377"
311+ "\377\15\377\377\377\20\377\377\377\20\377\377\377\24\377\377\377\24\377\377"
312+ "\377\23\377\377\377\23\377\377\377\26\377\377\377\25\377\377\377\23\377\377"
313+ "\377\21\377\377\377\24\377\377\377\22\377\377\377\17\377\377\377\17\377\377"
314+ "\377\15\377\377\377\15\377\377\377\11\377\377\377\11\377\377\377\7\377\377"
315+ "\377\7\377\377\377\6\377\377\377\3\377\377\377\3\377\377\377\6\377\377\377"
316+ "\6\377\377\377\6\377\377\377\12\377\377\377\13\377\377\377\13\377\377\377"
317+ "\13\377\377\377\17\377\377\377\22\377\377\377\24\377\377\377\22\377\377\377"
318+ "\30\377\377\377\30\377\377\377\31\377\377\377\31\377\377\377\33\377\377\377"
319+ "\31\377\377\377\30\377\377\377\30\377\377\377\30\377\377\377\25\377\377\377"
320+ "\25\377\377\377\23\377\377\377\22\377\377\377\17\377\377\377\13\377\377\377"
321+ "\12\377\377\377\11\377\377\377\7\377\377\377\6\377\377\377\5\377\377\377"
322+ "\4\377\377\377\7\377\377\377\6\377\377\377\12\377\377\377\11\377\377\377"
323+ "\14\377\377\377\15\377\377\377\20\377\377\377\22\377\377\377\25\377\377\377"
324+ "\30\377\377\377\32\377\377\377\35\377\377\377\34\377\377\377\34\377\377\377"
325+ "\36\377\377\377\40\377\377\377\36\377\377\377\34\377\377\377\34\377\377\377"
326+ "\34\377\377\377\32\377\377\377\31\377\377\377\26\377\377\377\25\377\377\377"
327+ "\22\377\377\377\16\377\377\377\12\377\377\377\12\377\377\377\12\377\377\377"
328+ "\10\377\377\377\6\377\377\377\4\377\377\377\10\377\377\377\11\377\377\377"
329+ "\12\377\377\377\13\377\377\377\16\377\377\377\21\377\377\377\22\377\377\377"
330+ "\25\377\377\377\30\377\377\377\34\377\377\377\37\377\377\377!\377\377\377"
331+ "\"\377\377\377#\377\377\377#\377\377\377&\377\377\377&\377\377\377$\377\377"
332+ "\377#\377\377\377\40\377\377\377!\377\377\377\35\377\377\377\34\377\377\377"
333+ "\25\377\377\377\24\377\377\377\21\377\377\377\15\377\377\377\14\377\377\377"
334+ "\14\377\377\377\12\377\377\377\6\377\377\377\6\377\377\377\10\377\377\377"
335+ "\12\377\377\377\12\377\377\377\16\377\377\377\22\377\377\377\24\377\377\377"
336+ "\26\377\377\377\30\377\377\377\34\377\377\377\37\377\377\377#\377\377\377"
337+ "&\377\377\377,\377\377\377+\377\377\377,\377\377\377-\377\377\377-\377\377"
338+ "\377,\377\377\377+\377\377\377&\377\377\377)\377\377\377$\377\377\377\34"
339+ "\377\377\377\34\377\377\377\27\377\377\377\24\377\377\377\23\377\377\377"
340+ "\17\377\377\377\15\377\377\377\12\377\377\377\7\377\377\377\6\377\377\377"
341+ "\12\377\377\377\12\377\377\377\16\377\377\377\21\377\377\377\22\377\377\377"
342+ "\27\377\377\377\31\377\377\377\36\377\377\377!\377\377\377%\377\377\377("
343+ "\377\377\3771\377\377\3772\377\377\3775\377\377\377;\377\377\377<\377\377"
344+ "\3779\377\377\3778\377\377\3773\377\377\3771\377\377\377-\377\377\377'\377"
345+ "\377\377\"\377\377\377\34\377\377\377\36\377\377\377\32\377\377\377\25\377"
346+ "\377\377\21\377\377\377\15\377\377\377\11\377\377\377\12\377\377\377\7\377"
347+ "\377\377\13\377\377\377\14\377\377\377\17\377\377\377\21\377\377\377\31\377"
348+ "\377\377\31\377\377\377\35\377\377\377!\377\377\377'\377\377\377+\377\377"
349+ "\3771\377\377\377=\377\377\377E\377\377\377H\377\377\377M\377\377\377M\377"
350+ "\377\377J\377\377\377I\377\377\377A\377\377\377A\377\377\3778\377\377\377"
351+ ",\377\377\377%\377\377\377$\377\377\377\"\377\377\377\34\377\377\377\24\377"
352+ "\377\377\22\377\377\377\17\377\377\377\13\377\377\377\12\377\377\377\11\377"
353+ "\377\377\13\377\377\377\14\377\377\377\20\377\377\377\23\377\377\377\27\377"
354+ "\377\377\35\377\377\377$\377\377\377(\377\377\377.\377\377\3776\377\377\377"
355+ "=\377\377\377H\377\377\377W\377\377\377Y\377\377\377]\377\377\377a\377\377"
356+ "\377\\\377\377\377\\\377\377\377U\377\377\377O\377\377\377?\377\377\3774"
357+ "\377\377\377-\377\377\377+\377\377\377\40\377\377\377\32\377\377\377\27\377"
358+ "\377\377\23\377\377\377\22\377\377\377\15\377\377\377\11\377\377\377\13\377"
359+ "\377\377\12\377\377\377\15\377\377\377\21\377\377\377\25\377\377\377\30\377"
360+ "\377\377\37\377\377\377$\377\377\377.\377\377\3779\377\377\377?\377\377\377"
361+ "N\377\377\377X\377\377\377h\377\377\377r\377\377\377w\377\377\377|\377\377"
362+ "\377x\377\377\377p\377\377\377k\377\377\377\\\377\377\377J\377\377\377F\377"
363+ "\377\3779\377\377\377*\377\377\377$\377\377\377\36\377\377\377\30\377\377"
364+ "\377\25\377\377\377\24\377\377\377\20\377\377\377\14\377\377\377\12\377\377"
365+ "\377\15\377\377\377\17\377\377\377\22\377\377\377\27\377\377\377\34\377\377"
366+ "\377\40\377\377\377%\377\377\377.\377\377\377<\377\377\377M\377\377\377["
367+ "\377\377\377l\377\377\377~\377\377\377\227\377\377\377\230\377\377\377\234"
368+ "\377\377\377\233\377\377\377\226\377\377\377\205\377\377\377i\377\377\377"
369+ "b\377\377\377P\377\377\3779\377\377\377-\377\377\377(\377\377\377!\377\377"
370+ "\377\35\377\377\377\32\377\377\377\25\377\377\377\21\377\377\377\13\377\377"
371+ "\377\12\377\377\377\15\377\377\377\21\377\377\377\23\377\377\377\31\377\377"
372+ "\377\37\377\377\377!\377\377\377(\377\377\3774\377\377\377@\377\377\377Q"
373+ "\377\377\377g\377\377\377\200\377\377\377\231\377\377\377\254\377\377\377"
374+ "\275\377\377\377\310\377\377\377\304\377\377\377\264\377\377\377\227\377"
375+ "\377\377\212\377\377\377f\377\377\377Q\377\377\377B\377\377\377:\377\377"
376+ "\377/\377\377\377&\377\377\377\36\377\377\377\32\377\377\377\26\377\377\377"
377+ "\21\377\377\377\14\377\377\377\12\377\377\377\17\377\377\377\22\377\377\377"
378+ "\24\377\377\377\31\377\377\377\40\377\377\377&\377\377\377-\377\377\377:"
379+ "\377\377\377H\377\377\377X\377\377\377k\377\377\377\220\377\377\377\252\377"
380+ "\377\377\324\377\377\377\363\377\377\377\370\377\377\377\366\377\377\377"
381+ "\335\377\377\377\263\377\377\377\221\377\377\377w\377\377\377b\377\377\377"
382+ "P\377\377\377>\377\377\3770\377\377\377&\377\377\377\37\377\377\377\32\377"
383+ "\377\377\26\377\377\377\23\377\377\377\15\377\377\377\11\377\377\377\16\377"
384+ "\377\377\21\377\377\377\27\377\377\377\33\377\377\377\"\377\377\377(\377"
385+ "\377\377/\377\377\377<\377\377\377N\377\377\377b\377\377\377z\377\377\377"
386+ "\231\377\377\377\275\377\377\377\361\377\377\377\375\377\377\377\376\377"
387+ "\377\377\376\377\377\377\370\377\377\377\316\377\377\377\240\377\377\377"
388+ "\205\377\377\377b\377\377\377L\377\377\377<\377\377\377.\377\377\377&\377"
389+ "\377\377\40\377\377\377\33\377\377\377\26\377\377\377\22\377\377\377\15\377"
390+ "\377\377\12\377\377\377\16\377\377\377\22\377\377\377\24\377\377\377\32\377"
391+ "\377\377\40\377\377\377$\377\377\377,\377\377\377:\377\377\377L\377\377\377"
392+ "`\377\377\377|\377\377\377\231\377\377\377\310\377\377\377\372\377\377\377"
393+ "\375\377\377\377\376\377\377\377\376\377\377\377\375\377\377\377\332\377"
394+ "\377\377\241\377\377\377\207\377\377\377f\377\377\377R\377\377\377@\377\377"
395+ "\3773\377\377\377+\377\377\377\"\377\377\377\35\377\377\377\30\377\377\377"
396+ "\24\377\377\377\17\377\377\377\14\377\377\377\16\377\377\377\22\377\377\377"
397+ "\25\377\377\377\30\377\377\377\40\377\377\377$\377\377\377,\377\377\377;"
398+ "\377\377\377N\377\377\377e\377\377\377\206\377\377\377\246\377\377\377\327"
399+ "\377\377\377\374\377\377\377\375\377\377\377\376\377\377\377\376\377\377"
400+ "\377\374\377\377\377\331\377\377\377\243\377\377\377\210\377\377\377b\377"
401+ "\377\377O\377\377\377>\377\377\377.\377\377\377&\377\377\377\40\377\377\377"
402+ "\33\377\377\377\27\377\377\377\22\377\377\377\15\377\377\377\12\377\377\377"
403+ "\16\377\377\377\22\377\377\377\23\377\377\377\32\377\377\377\40\377\377\377"
404+ "'\377\377\3770\377\377\377?\377\377\377U\377\377\377h\377\377\377\200\377"
405+ "\377\377\237\377\377\377\270\377\377\377\344\377\377\377\372\377\377\377"
406+ "\375\377\377\377\376\377\377\377\354\377\377\377\275\377\377\377\227\377"
407+ "\377\377\200\377\377\377e\377\377\377Q\377\377\377>\377\377\377.\377\377"
408+ "\377%\377\377\377\40\377\377\377\33\377\377\377\26\377\377\377\22\377\377"
409+ "\377\15\377\377\377\11\377\377\377\17\377\377\377\22\377\377\377\25\377\377"
410+ "\377\31\377\377\377\"\377\377\377*\377\377\3773\377\377\377=\377\377\377"
411+ "J\377\377\377^\377\377\377o\377\377\377\211\377\377\377\235\377\377\377\271"
412+ "\377\377\377\327\377\377\377\342\377\377\377\335\377\377\377\302\377\377"
413+ "\377\240\377\377\377\216\377\377\377k\377\377\377X\377\377\377C\377\377\377"
414+ "9\377\377\377/\377\377\377&\377\377\377\"\377\377\377\33\377\377\377\26\377"
415+ "\377\377\22\377\377\377\14\377\377\377\12\377\377\377\15\377\377\377\22\377"
416+ "\377\377\31\377\377\377\35\377\377\377\37\377\377\377$\377\377\377,\377\377"
417+ "\3777\377\377\377A\377\377\377Q\377\377\377[\377\377\377p\377\377\377\212"
418+ "\377\377\377\231\377\377\377\242\377\377\377\253\377\377\377\251\377\377"
419+ "\377\236\377\377\377\215\377\377\377u\377\377\377b\377\377\377O\377\377\377"
420+ "<\377\377\3771\377\377\377)\377\377\377\"\377\377\377\34\377\377\377\32\377"
421+ "\377\377\27\377\377\377\21\377\377\377\16\377\377\377\12\377\377\377\17\377"
422+ "\377\377\21\377\377\377\20\377\377\377\27\377\377\377\37\377\377\377$\377"
423+ "\377\377&\377\377\377,\377\377\3778\377\377\377B\377\377\377R\377\377\377"
424+ "_\377\377\377k\377\377\377~\377\377\377\207\377\377\377\220\377\377\377\220"
425+ "\377\377\377\203\377\377\377q\377\377\377_\377\377\377V\377\377\377F\377"
426+ "\377\3777\377\377\377,\377\377\377%\377\377\377!\377\377\377\31\377\377\377"
427+ "\25\377\377\377\22\377\377\377\17\377\377\377\14\377\377\377\11\377\377\377"
428+ "\12\377\377\377\16\377\377\377\22\377\377\377\27\377\377\377\33\377\377\377"
429+ "\35\377\377\377\"\377\377\377(\377\377\377/\377\377\3779\377\377\377E\377"
430+ "\377\377L\377\377\377^\377\377\377d\377\377\377e\377\377\377k\377\377\377"
431+ "l\377\377\377d\377\377\377a\377\377\377O\377\377\377C\377\377\377=\377\377"
432+ "\3770\377\377\377)\377\377\377$\377\377\377\35\377\377\377\30\377\377\377"
433+ "\25\377\377\377\22\377\377\377\16\377\377\377\12\377\377\377\13\377\377\377"
434+ "\13\377\377\377\15\377\377\377\20\377\377\377\21\377\377\377\31\377\377\377"
435+ "\33\377\377\377\35\377\377\377$\377\377\377)\377\377\3771\377\377\3776\377"
436+ "\377\377@\377\377\377J\377\377\377N\377\377\377P\377\377\377S\377\377\377"
437+ "X\377\377\377P\377\377\377J\377\377\377E\377\377\3777\377\377\377,\377\377"
438+ "\377+\377\377\377%\377\377\377\40\377\377\377\32\377\377\377\26\377\377\377"
439+ "\21\377\377\377\21\377\377\377\14\377\377\377\11\377\377\377\12\377\377\377"
440+ "\13\377\377\377\11\377\377\377\14\377\377\377\21\377\377\377\23\377\377\377"
441+ "\27\377\377\377\33\377\377\377\37\377\377\377&\377\377\377(\377\377\377*"
442+ "\377\377\3774\377\377\3779\377\377\377<\377\377\377=\377\377\377C\377\377"
443+ "\377E\377\377\377?\377\377\3779\377\377\377:\377\377\377.\377\377\377(\377"
444+ "\377\377!\377\377\377!\377\377\377\35\377\377\377\31\377\377\377\24\377\377"
445+ "\377\21\377\377\377\16\377\377\377\12\377\377\377\11\377\377\377\10\377\377"
446+ "\377\10\377\377\377\11\377\377\377\13\377\377\377\16\377\377\377\22\377\377"
447+ "\377\25\377\377\377\30\377\377\377\33\377\377\377\"\377\377\377!\377\377"
448+ "\377%\377\377\377*\377\377\377-\377\377\3770\377\377\377/\377\377\3773\377"
449+ "\377\3772\377\377\3774\377\377\377-\377\377\377,\377\377\377*\377\377\377"
450+ "\"\377\377\377\37\377\377\377\32\377\377\377\33\377\377\377\27\377\377\377"
451+ "\21\377\377\377\17\377\377\377\16\377\377\377\12\377\377\377\11\377\377\377"
452+ "\6\377\377\377\10\377\377\377\12\377\377\377\11\377\377\377\15\377\377\377"
453+ "\20\377\377\377\22\377\377\377\23\377\377\377\30\377\377\377\32\377\377\377"
454+ "\35\377\377\377\40\377\377\377!\377\377\377%\377\377\377(\377\377\377&\377"
455+ "\377\377)\377\377\377(\377\377\377+\377\377\377$\377\377\377!\377\377\377"
456+ "#\377\377\377\36\377\377\377\30\377\377\377\30\377\377\377\24\377\377\377"
457+ "\22\377\377\377\20\377\377\377\15\377\377\377\11\377\377\377\12\377\377\377"
458+ "\6\377\377\377\6\377\377\377\7\377\377\377\7\377\377\377\11\377\377\377\12"
459+ "\377\377\377\16\377\377\377\17\377\377\377\22\377\377\377\23\377\377\377"
460+ "\26\377\377\377\31\377\377\377\33\377\377\377\34\377\377\377!\377\377\377"
461+ "\40\377\377\377\"\377\377\377\"\377\377\377\"\377\377\377&\377\377\377\36"
462+ "\377\377\377\35\377\377\377\35\377\377\377\34\377\377\377\26\377\377\377"
463+ "\24\377\377\377\23\377\377\377\20\377\377\377\15\377\377\377\14\377\377\377"
464+ "\13\377\377\377\7\377\377\377\5\377\377\377\6\377\377\377\7\377\377\377\6"
465+ "\377\377\377\11\377\377\377\12\377\377\377\11\377\377\377\15\377\377\377"
466+ "\16\377\377\377\21\377\377\377\22\377\377\377\26\377\377\377\26\377\377\377"
467+ "\30\377\377\377\33\377\377\377\32\377\377\377\34\377\377\377\33\377\377\377"
468+ "\32\377\377\377\37\377\377\377\31\377\377\377\31\377\377\377\27\377\377\377"
469+ "\30\377\377\377\21\377\377\377\22\377\377\377\17\377\377\377\14\377\377\377"
470+ "\11\377\377\377\11\377\377\377\12\377\377\377\6\377\377\377\6\377\377\377"
471+ "\4\377\377\377\6\377\377\377\6\377\377\377\5\377\377\377\7\377\377\377\13"
472+ "\377\377\377\11\377\377\377\12\377\377\377\16\377\377\377\21\377\377\377"
473+ "\21\377\377\377\20\377\377\377\22\377\377\377\30\377\377\377\26\377\377\377"
474+ "\27\377\377\377\30\377\377\377\27\377\377\377\30\377\377\377\26\377\377\377"
475+ "\23\377\377\377\22\377\377\377\20\377\377\377\20\377\377\377\16\377\377\377"
476+ "\14\377\377\377\11\377\377\377\11\377\377\377\10\377\377\377\6\377\377\377"
477+ "\6\377\377\377\4\377\377\377\3\377\377\377\4\377\377\377\4\377\377\377\4"
478+ "\377\377\377\7\377\377\377\10\377\377\377\12\377\377\377\10\377\377\377\11"
479+ "\377\377\377\15\377\377\377\16\377\377\377\16\377\377\377\20\377\377\377"
480+ "\23\377\377\377\21\377\377\377\23\377\377\377\22\377\377\377\22\377\377\377"
481+ "\21\377\377\377\22\377\377\377\22\377\377\377\20\377\377\377\16\377\377\377"
482+ "\15\377\377\377\12\377\377\377\11\377\377\377\12\377\377\377\7\377\377\377"
483+ "\6\377\377\377\7\377\377\377\5\377\377\377\4\377\377\377\1\377\377\377\1"
484+ "\377\377\377\3\377\377\377\3\377\377\377\6\377\377\377\7\377\377\377\6\377"
485+ "\377\377\10\377\377\377\12\377\377\377\12\377\377\377\11\377\377\377\13\377"
486+ "\377\377\16\377\377\377\16\377\377\377\16\377\377\377\17\377\377\377\16\377"
487+ "\377\377\16\377\377\377\17\377\377\377\17\377\377\377\15\377\377\377\14\377"
488+ "\377\377\12\377\377\377\11\377\377\377\12\377\377\377\12\377\377\377\7\377"
489+ "\377\377\6\377\377\377\6\377\377\377\6\377\377\377\3\377\377\377\1\377\377"
490+ "\377\1\0\0\0\0\0\0\0\0\377\377\377\2\377\377\377\4\377\377\377\7\377\377"
491+ "\377\6\377\377\377\6\377\377\377\7\377\377\377\13\377\377\377\13\377\377"
492+ "\377\10\377\377\377\11\377\377\377\11\377\377\377\11\377\377\377\15\377\377"
493+ "\377\13\377\377\377\14\377\377\377\11\377\377\377\13\377\377\377\11\377\377"
494+ "\377\12\377\377\377\13\377\377\377\11\377\377\377\11\377\377\377\6\377\377"
495+ "\377\7\377\377\377\4\377\377\377\5\377\377\377\3\377\377\377\1\0\0\0\0\0"
496+ "\0\0\0"
497+};
498
499=== added file 'plugins/animationplus/src/animationplus.cpp'
500--- plugins/animationplus/src/animationplus.cpp 1970-01-01 00:00:00 +0000
501+++ plugins/animationplus/src/animationplus.cpp 2016-07-25 17:11:00 +0000
502@@ -0,0 +1,158 @@
503+/**
504+ * Example Animation extension plugin for compiz
505+ *
506+ *
507+ * This program is free software; you can redistribute it and/or
508+ * modify it under the terms of the GNU General Public License
509+ * as published by the Free Software Foundation; either version 2
510+ * of the License, or (at your option) any later version.
511+ *
512+ * This program is distributed in the hope that it will be useful,
513+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
514+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
515+ * GNU General Public License for more details.
516+ *
517+ * You should have received a copy of the GNU General Public License
518+ * along with this program; if not, write to the Free Software
519+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
520+ **/
521+
522+#ifdef HAVE_CONFIG_H
523+#include <config.h>
524+#endif
525+
526+#include <limits.h>
527+#include "private.h"
528+
529+COMPIZ_PLUGIN_20090315 (animationplus, AnimPlusPluginVTable);
530+
531+AnimEffect animEffects[NUM_EFFECTS];
532+
533+ExtensionPluginAnimPlus animPlusExtPluginInfo (CompString ("animationplus"),
534+ NUM_EFFECTS, animEffects, NULL,
535+ NUM_NONEFFECT_OPTIONS);
536+
537+ExtensionPluginInfo *
538+BasePlusAnim::getExtensionPluginInfo ()
539+{
540+ return &animPlusExtPluginInfo;
541+}
542+
543+BasePlusAnim::BasePlusAnim (CompWindow *w,
544+ WindowEvent curWindowEvent,
545+ float duration,
546+ const AnimEffect info,
547+ const CompRect &icon) :
548+ Animation::Animation (w, curWindowEvent, duration, info, icon),
549+ mCScreen (CompositeScreen::get (::screen)),
550+ mGScreen (GLScreen::get (::screen))
551+{
552+}
553+
554+/*
555+// For effects with custom polygon step functions:
556+AnimExtEffectProperties fxAirplaneExtraProp = {
557+ .animStepPolygonFunc = fxAirplaneLinearAnimStepPolygon};
558+*/
559+
560+AnimEffect AnimEffectBlinds;
561+AnimEffect AnimEffectHelix;
562+AnimEffect AnimEffectShatter;
563+AnimEffect AnimEffectBonanza;
564+
565+void
566+AnimPlusScreen::initAnimationList ()
567+{
568+ int i = 0;
569+
570+ AnimEffectUsedFor usedFor = AnimEffectUsedFor::all ()
571+ .exclude (AnimEventShade)
572+ .exclude (AnimEventFocus);
573+
574+ animEffects[i++] = AnimEffectBlinds =
575+ new AnimEffectInfo ("animationplus:Blinds",
576+ usedFor,
577+ &createAnimation <BlindsAnim>);
578+
579+ /* Currently broken */
580+ animEffects[i++] = AnimEffectBonanza =
581+ new AnimEffectInfo ("animationplus:Bonanza",
582+ usedFor,
583+ &createAnimation <BonanzaAnim>);
584+
585+ animEffects[i++] = AnimEffectHelix =
586+ new AnimEffectInfo ("animationplus:Helix",
587+ usedFor,
588+ &createAnimation <HelixAnim>);
589+
590+ animEffects[i++] = AnimEffectShatter =
591+ new AnimEffectInfo ("animationplus:Shatter",
592+ usedFor,
593+ &createAnimation <ShatterAnim>);
594+
595+ animPlusExtPluginInfo.effectOptions = &getOptions ();
596+
597+ AnimScreen *as = AnimScreen::get (::screen);
598+
599+ as->addExtension (&animPlusExtPluginInfo);
600+}
601+
602+AnimPlusScreen::AnimPlusScreen (CompScreen *s) :
603+ //cScreen (CompositeScreen::get (s)),
604+ //gScreen (GLScreen::get (s)),
605+ //aScreen (as),
606+ PluginClassHandler <AnimPlusScreen, CompScreen> (s),
607+ mOutput (s->fullscreenOutput ())
608+{
609+ initAnimationList ();
610+}
611+
612+AnimPlusScreen::~AnimPlusScreen ()
613+{
614+ AnimScreen *as = AnimScreen::get (::screen);
615+
616+ as->removeExtension (&animPlusExtPluginInfo);
617+
618+ for (int i = 0; i < NUM_EFFECTS; i++)
619+ {
620+ delete animEffects[i];
621+ animEffects[i] = NULL;
622+ }
623+}
624+
625+AnimPlusWindow::AnimPlusWindow (CompWindow *w) :
626+ PluginClassHandler<AnimPlusWindow, CompWindow> (w),
627+ mWindow (w),
628+ aWindow (AnimWindow::get (w))
629+{
630+}
631+
632+AnimPlusWindow::~AnimPlusWindow ()
633+{
634+ Animation *curAnim = aWindow->curAnimation ();
635+
636+ if (!curAnim)
637+ return;
638+
639+ // We need to interrupt and clean up the animation currently being played
640+ // by animationsim for this window (if any)
641+ if (curAnim->remainingTime () > 0 &&
642+ curAnim->getExtensionPluginInfo ()->name ==
643+ CompString ("animationplus"))
644+ {
645+ aWindow->postAnimationCleanUp ();
646+ }
647+}
648+
649+bool
650+AnimPlusPluginVTable::init ()
651+{
652+ if (!CompPlugin::checkPluginABI ("core", CORE_ABIVERSION) ||
653+ !CompPlugin::checkPluginABI ("composite", COMPIZ_COMPOSITE_ABI) ||
654+ !CompPlugin::checkPluginABI ("opengl", COMPIZ_OPENGL_ABI) ||
655+ !CompPlugin::checkPluginABI ("animation", ANIMATION_ABI) ||
656+ !CompPlugin::checkPluginABI ("animationaddon", ANIMATIONADDON_ABI))
657+ return false;
658+
659+ return true;
660+}
661
662=== added file 'plugins/animationplus/src/blinds.cpp'
663--- plugins/animationplus/src/blinds.cpp 1970-01-01 00:00:00 +0000
664+++ plugins/animationplus/src/blinds.cpp 2016-07-25 17:11:00 +0000
665@@ -0,0 +1,70 @@
666+/*
667+ * Animation plugin for compiz/beryl
668+ *
669+ * blinds.cpp
670+ *
671+ * Copyright : (C) 2008 Kevin DuBois
672+ * E-mail : kdub432@gmail.com
673+ *
674+ * Based on other animations by
675+ * : Erkin Bahceci
676+ * E-mail : erkinbah@gmail.com
677+ *
678+ * Which were based on Wobbly and Minimize plugins by
679+ * : David Reveman
680+ * E-mail : davidr@novell.com>
681+ *
682+ * This program is free software; you can redistribute it and/or
683+ * modify it under the terms of the GNU General Public License
684+ * as published by the Free Software Foundation; either version 2
685+ * of the License, or (at your option) any later version.
686+ *const float ExplodeAnim::kDurationFactor = 1.43;
687+ * This program is distributed in the hope that it will be useful,
688+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
689+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
690+ * GNU General Public License for more details.
691+ *
692+ * You should have received a copy of the GNU General Public License
693+ * along with this program; if not, write to the Free Software
694+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
695+ */
696+
697+#include "private.h"
698+
699+const float BlindsAnim::kDurationFactor = 1.43;
700+
701+
702+BlindsAnim::BlindsAnim (CompWindow *w,
703+ WindowEvent curWindowEvent,
704+ float duration,
705+ const AnimEffect info,
706+ const CompRect &icon) :
707+ Animation::Animation (w, curWindowEvent, kDurationFactor * duration, info, icon),
708+ PolygonAnim::PolygonAnim (w, curWindowEvent, kDurationFactor * duration, info, icon)
709+{
710+ mAllFadeDuration = 0.3f;
711+ mDoDepthTest = true;
712+ mDoLighting = true;
713+ mCorrectPerspective = CorrectPerspectivePolygon;
714+ mBackAndSidesFadeDur = 0.2f;
715+}
716+
717+void
718+BlindsAnim::init ()
719+{
720+ ANIMPLUS_SCREEN (screen);
721+
722+ tessellateIntoRectangles (as->optionGetBlindsGridx (), 1,
723+ as->optionGetBlindsThickness ());
724+
725+ foreach (PolygonObject *p, mPolygons)
726+ {
727+ //rotate around y axis
728+ p->rotAxis.set (0, 1, 0);
729+ p->finalRelPos.set (0, 0, 0);
730+
731+ int numberOfHalfTwists = as->optionGetBlindsNumHalftwists ();
732+ p->finalRotAng = 180 * numberOfHalfTwists ;
733+ }
734+}
735+
736
737=== added file 'plugins/animationplus/src/bonanza.cpp'
738--- plugins/animationplus/src/bonanza.cpp 1970-01-01 00:00:00 +0000
739+++ plugins/animationplus/src/bonanza.cpp 2016-07-25 17:11:00 +0000
740@@ -0,0 +1,241 @@
741+/*
742+ * Animation plugin for compiz/beryl
743+ *
744+ * bonanza.c
745+ *
746+ * Copyright : (C) 2008 Kevin DuBois
747+ * E-mail : kdub423@gmail.com
748+ *
749+ * Based on animations system by: (C) 2006 Erkin Bahceci
750+ * E-mail : erkinbah@gmail.com
751+ *
752+ * Based on particle system added by : (C) 2006 Dennis Kasprzyk
753+ * E-mail : onestone@beryl-project.org
754+ *
755+ * This program is free software; you can redistribute it and/or
756+ * modify it under the terms of the GNU General Public License
757+ * as published by the Free Software Foundation; either version 2
758+ * of the License, or (at your option) any later version.
759+ *
760+ * This program is distributed in the hope that it will be useful,
761+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
762+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
763+ * GNU General Public License for more details.
764+ *
765+ * You should have received a copy of the GNU General Public License
766+ * along with this program; if not, write to the Free Software
767+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
768+ */
769+
770+#include "private.h"
771+#include "animation_tex.h"
772+
773+// ===================== Effect: Burn =========================
774+
775+BonanzaAnim::BonanzaAnim (CompWindow *w,
776+ WindowEvent curWindowEvent,
777+ float duration,
778+ const AnimEffect info,
779+ const CompRect &icon) :
780+ Animation::Animation (w, curWindowEvent, duration, info, icon),
781+ ParticleAnim::ParticleAnim (w, curWindowEvent, duration, info, icon)
782+{
783+ ANIMPLUS_SCREEN (screen);
784+
785+ // Light Particles are for extras, dark particles unused?
786+ initLightDarkParticles (as->optionGetBonanzaParticles (),
787+ as->optionGetBonanzaParticles () / 10,
788+ 0.125,
789+ 0.5);
790+
791+ mAnimFireDirection = 0;
792+}
793+
794+void
795+BonanzaAnim::genFire (int x,
796+ int y,
797+ int radius,
798+ float size,
799+ float time)
800+{
801+ ANIMPLUS_SCREEN (screen);
802+
803+ ParticleSystem &ps = mParticleSystems[0];
804+
805+ float fireLife = as->optionGetBonanzaLife ();
806+ float fireLifeNeg = 1 - fireLife;
807+ float fadeExtra = 0.2f * (1.01 - fireLife);
808+ float max_new = ps.particles ().size () * (time / 50) * (1.05 - fireLife);
809+ float numParticles = ps.particles ().size ();
810+
811+ unsigned short *c = as->optionGetBonanzaColor ();
812+ float colr1 = (float)c[0] / 0xffff;
813+ float colg1 = (float)c[1] / 0xffff;
814+ float colb1 = (float)c[2] / 0xffff;
815+ float colr2 = 1 / 1.7 * (float)c[0] / 0xffff;
816+ float colg2 = 1 / 1.7 * (float)c[1] / 0xffff;
817+ float colb2 = 1 / 1.7 * (float)c[2] / 0xffff;
818+ float cola = (float)c[3] / 0xffff;
819+ float rVal;
820+
821+ Particle *part = &(ps.particles ()[0]);
822+
823+ float deg = 0;
824+ float inc = 2.0 * 3.1415 / numParticles;
825+ float partw = 5.00;
826+ float parth = partw * 1.5;
827+ bool mysticalFire = as->optionGetBonanzaMystical ();
828+
829+ for (unsigned int i = 0; i < numParticles && max_new > 0; i++, part++)
830+ {
831+ deg += inc;
832+
833+ if (part->life <= 0.0f)
834+ {
835+ // give gt new life
836+ rVal = (float)(random() & 0xff) / 255.0;
837+ part->life = 1.0f;
838+ part->fade = rVal * fireLifeNeg + fadeExtra; // Random Fade Value
839+
840+ // set size
841+ part->width = partw;
842+ part->height = parth;
843+ rVal = (float)(random() & 0xff) / 255.0;
844+ part->w_mod = part->h_mod = size * rVal;
845+
846+ part->x = (float)x + (float) radius * cosf(deg);
847+ part->y = (float)y + (float) radius * sinf(deg);
848+
849+ //clip
850+ if (part->x <= 0)
851+ part->x = 0;
852+ if (part->x >= 2 * x)
853+ part->x = 2*x;
854+
855+ if (part->y <= 0)
856+ part->y = 0;
857+ if (part->y >= 2 * y)
858+ part->y = 2*y;
859+
860+ part->z = 0.0;
861+
862+ part->xo = part->x;
863+ part->yo = part->y;
864+ part->zo = 0.0f;
865+
866+ // set speed and direction
867+ rVal = (float)(random() & 0xff) / 255.0;
868+ part->xi = ((rVal * 20.0) - 10.0f);
869+ rVal = (float)(random() & 0xff) / 255.0;
870+ part->yi = ((rVal * 20.0) - 15.0f);
871+ part->zi = 0.0f;
872+
873+ if (mysticalFire)
874+ {
875+ // Random colors! (aka Mystical Fire)
876+ rVal = (float)(random() & 0xff) / 255.0;
877+ part->r = rVal;
878+ rVal = (float)(random() & 0xff) / 255.0;
879+ part->g = rVal;
880+ rVal = (float)(random() & 0xff) / 255.0;
881+ part->b = rVal;
882+ }
883+ else
884+ {
885+ rVal = (float)(random() & 0xff) / 255.0;
886+ part->r = colr1 - rVal * colr2;
887+ part->g = colg1 - rVal * colg2;
888+ part->b = colb1 - rVal * colb2;
889+ }
890+ // set transparancy
891+ part->a = cola;
892+
893+ // set gravity
894+ part->xg = (part->x < part->xo) ? 1.0 : -1.0;
895+ part->yg = -3.0f;
896+ part->zg = 0.0f;
897+
898+ ps.activate ();
899+ max_new -= 1;
900+ }
901+ else
902+ {
903+ part->xg = (part->x < part->xo) ? 1.0 : -1.0;
904+ }
905+
906+ }
907+
908+}
909+
910+void
911+BonanzaAnim::step (float time)
912+{
913+ float timestep = 2.0;
914+ CompRect rect = mWindow->outputRect ();
915+
916+ mRemainingTime -= timestep;
917+ if (mRemainingTime <= 0)
918+ mRemainingTime = 0; // avoid sub-zero values
919+ float new_f = 1 - (mRemainingTime) / (mTotalTime - timestep);
920+
921+ if (mCurWindowEvent == WindowEventOpen ||
922+ mCurWindowEvent == WindowEventUnminimize ||
923+ mCurWindowEvent == WindowEventUnshade)
924+ {
925+ new_f = 1 - new_f;
926+ }
927+
928+ mUseDrawRegion = true;
929+ mDrawRegion = CompRegion ();
930+
931+
932+ /* define an expanding circle as a union of rectangular X regions. */
933+ float radius = 0;
934+ if (mRemainingTime > 0)
935+ {
936+ XPoint pts[20];
937+
938+ int i;
939+ float two_pi = 3.14159 * 2.0;
940+ int centerX = rect.centerX () + rect.x ();
941+ int centerY = rect.centerY () + rect.y ();
942+ float corner_dist = sqrt( powf(rect.centerX ()/2,2) + powf(rect.centerY (),2));
943+ radius = new_f * corner_dist;
944+ for (i = 0; i < 20; i++)
945+ {
946+ pts[i].x = centerX + (int)(radius * cosf( (float) i/20.0 * two_pi ));
947+ pts[i].y = centerY + (int)(radius * sinf( (float) i/20.0 * two_pi ));
948+ }
949+
950+ Region pointsRegion = XPolygonRegion (&pts[0], 20, WindingRule);;
951+ mDrawRegion = CompRegionRef(pointsRegion) - emptyRegion.united (rect);
952+ XDestroyRegion (pointsRegion);
953+ }
954+ else
955+ {
956+ mDrawRegion = emptyRegion;
957+ }
958+
959+
960+ mUseDrawRegion = (fabs (new_f) > 1e-5);
961+
962+ genFire (rect.centerX (),
963+ rect.centerY (),
964+ radius,
965+ WIN_W(mWindow) / 40.0,
966+ time);
967+
968+ if (mRemainingTime <= 0 && mParticleSystems.size () && mParticleSystems.at (0).active ())
969+ {
970+ mRemainingTime = 0;
971+ }
972+
973+ if (mParticleSystems.empty () || !mParticleSystems.at (0).active ())
974+ {
975+ mParticleSystems.clear ();
976+ // Abort animation
977+ compLogMessage ("animationaddon", CompLogLevelError, "Couldn't do bonanza animation\n");
978+ mRemainingTime = 0;
979+ }
980+}
981+
982
983=== added file 'plugins/animationplus/src/helix.cpp'
984--- plugins/animationplus/src/helix.cpp 1970-01-01 00:00:00 +0000
985+++ plugins/animationplus/src/helix.cpp 2016-07-25 17:11:00 +0000
986@@ -0,0 +1,93 @@
987+/*
988+ * Animation plugin for compiz/beryl
989+ *
990+ * animation.c
991+ *
992+ * Copyright : (C) 2008 Kevin DuBois
993+ * E-mail : kdub432@gmail.com
994+ *
995+ * Based on other animations by
996+ * : Erkin Bahceci
997+ * E-mail : erkinbah@gmail.com
998+ *
999+ * Which were based on Wobbly and Minimize plugins by
1000+ * : David Reveman
1001+ * E-mail : davidr@novell.com>
1002+ *
1003+ * This program is free software; you can redistribute it and/or
1004+ * modify it under the terms of the GNU General Public License
1005+ * as published by the Free Software Foundation; either version 2
1006+ * of the License, or (at your option) any later version.
1007+ *
1008+ * This program is distributed in the hope that it will be useful,
1009+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1010+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1011+ * GNU General Public License for more details.
1012+ *
1013+ * You should have received a copy of the GNU General Public License
1014+ * along with this program; if not, write to the Free Software
1015+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1016+ */
1017+
1018+#include "private.h"
1019+
1020+const float HelixAnim::kDurationFactor = 1.43;
1021+
1022+HelixAnim::HelixAnim (CompWindow *w,
1023+ WindowEvent curWindowEvent,
1024+ float duration,
1025+ const AnimEffect info,
1026+ const CompRect &icon) :
1027+ Animation::Animation (w, curWindowEvent, kDurationFactor * duration, info, icon),
1028+ PolygonAnim::PolygonAnim (w, curWindowEvent, kDurationFactor * duration, info, icon)
1029+{
1030+ mAllFadeDuration = 0.4f;
1031+ mBackAndSidesFadeDur = 0.2f;
1032+ mDoDepthTest = TRUE;
1033+ mDoLighting = TRUE;
1034+ mCorrectPerspective = CorrectPerspectivePolygon;
1035+}
1036+
1037+void
1038+HelixAnim::init ()
1039+{
1040+ ANIMPLUS_SCREEN (screen);
1041+
1042+ int gridsizeY = as->optionGetHelixGridy ();
1043+ int count = 0;
1044+
1045+ tessellateIntoRectangles (1, gridsizeY, as->optionGetHelixThickness ());
1046+
1047+ foreach (PolygonObject *p, mPolygons)
1048+ {
1049+
1050+ //rotate around y axis normally, or the z axis if the effect is in vertical mode
1051+ if (as->optionGetHelixDirection ())
1052+ p->rotAxis.set (0, 0, 1);
1053+ else
1054+ p->rotAxis.set (0, 1, 0);
1055+
1056+ //only move the pieces in a 'vertical' rotation
1057+ if (as->optionGetHelixDirection ())
1058+ p->finalRelPos.set (0,
1059+ -1 * ((mWindow->height () / gridsizeY) * (count - gridsizeY/2)),
1060+ 0);
1061+ else
1062+ p->finalRelPos.set (0,
1063+ 0,
1064+ 0);
1065+
1066+ //determine how long, and what direction to spin
1067+ int numberOfTwists = as->optionGetHelixNumTwists ();
1068+ int spin_dir = as->optionGetHelixSpinDirection ();
1069+
1070+ if (spin_dir)
1071+ p->finalRotAng = 270 - ( 2 * numberOfTwists * count);
1072+ else
1073+ p->finalRotAng = ( 2 * numberOfTwists * count) - 270;
1074+
1075+ count++;
1076+
1077+ }
1078+}
1079+
1080
1081=== added file 'plugins/animationplus/src/private.h'
1082--- plugins/animationplus/src/private.h 1970-01-01 00:00:00 +0000
1083+++ plugins/animationplus/src/private.h 2016-07-25 17:11:00 +0000
1084@@ -0,0 +1,196 @@
1085+#include <string.h>
1086+#include <stdlib.h>
1087+#include <math.h>
1088+#include <sys/time.h>
1089+
1090+#ifdef USE_LIBRSVG
1091+#include <cairo/cairo.h>
1092+#include <cairo/cairo-xlib.h>
1093+#include <librsvg/rsvg.h>
1094+#include <librsvg/rsvg-cairo.h>
1095+#endif
1096+
1097+#include <core/core.h>
1098+#include <opengl/opengl.h>
1099+#include <composite/composite.h>
1100+#include <animation/animation.h>
1101+#include <animationaddon/animationaddon.h>
1102+
1103+#include "animationplus_options.h"
1104+
1105+extern AnimEffect AnimEffectBlinds;
1106+extern AnimEffect AnimEffectBonanza;
1107+extern AnimEffect AnimEffectHelix;
1108+extern AnimEffect AnimEffectShatter;
1109+
1110+#define NUM_EFFECTS 4
1111+
1112+// This must have the value of the first "effect setting" above
1113+// in AnimEgScreenOptions
1114+#define NUM_NONEFFECT_OPTIONS 0
1115+
1116+#define WIN_X(w) ((w)->x () - (w)->input ().left)
1117+#define WIN_Y(w) ((w)->y () - (w)->input ().top)
1118+#define WIN_W(w) ((w)->width () + (w)->input ().left + (w)->input ().right)
1119+#define WIN_H(w) ((w)->height () + (w)->input ().top + (w)->input ().bottom)
1120+
1121+class ExtensionPluginAnimPlus : public ExtensionPluginInfo
1122+{
1123+ public:
1124+
1125+ ExtensionPluginAnimPlus (const CompString &name,
1126+ unsigned int nEffects,
1127+ AnimEffect *effects,
1128+ CompOption::Vector *effectOptions,
1129+ unsigned int firstEffectOptionIndex) :
1130+ ExtensionPluginInfo (name, nEffects, effects, effectOptions,
1131+ firstEffectOptionIndex) {}
1132+ ~ExtensionPluginAnimPlus () {}
1133+
1134+ const CompOutput *output () { return mOutput; }
1135+ private:
1136+
1137+ const CompOutput *mOutput;
1138+};
1139+
1140+class BasePlusAnim :
1141+ virtual public Animation
1142+{
1143+ public:
1144+
1145+ BasePlusAnim (CompWindow *w,
1146+ WindowEvent curWindowEvent,
1147+ float duration,
1148+ const AnimEffect info,
1149+ const CompRect &icon);
1150+
1151+ ~BasePlusAnim () {}
1152+
1153+ protected:
1154+ // Gets info about the extension plugin that implements this animation.
1155+ ExtensionPluginInfo* getExtensionPluginInfo ();
1156+
1157+ CompositeScreen *mCScreen;
1158+ GLScreen *mGScreen;
1159+};
1160+
1161+class AnimPlusScreen :
1162+ public PluginClassHandler <AnimPlusScreen, CompScreen>,
1163+ public AnimationplusOptions
1164+{
1165+ public:
1166+
1167+ AnimPlusScreen (CompScreen *);
1168+ ~AnimPlusScreen ();
1169+
1170+ protected:
1171+
1172+ void initAnimationList ();
1173+
1174+ CompOutput &mOutput;
1175+};
1176+
1177+class AnimPlusWindow :
1178+ public PluginClassHandler <AnimPlusWindow, CompWindow>
1179+{
1180+ public:
1181+
1182+ AnimPlusWindow (CompWindow *);
1183+ ~AnimPlusWindow ();
1184+
1185+ protected:
1186+
1187+ CompWindow *mWindow;
1188+ AnimWindow *aWindow;
1189+
1190+};
1191+
1192+#define ANIMPLUS_SCREEN(s) \
1193+ AnimPlusScreen *as = AnimPlusScreen::get (s);
1194+
1195+#define ANIMPLUS_WINDOW(w) \
1196+ AnimPlusWindow *aw = AnimPlusWindow::get (w);
1197+
1198+// ratio of perceived length of animation compared to real duration
1199+// to make it appear to have the same speed with other animation effects
1200+
1201+#define EXPLODE_PERCEIVED_T 0.7f
1202+
1203+/*
1204+ * Function prototypes
1205+ *
1206+ */
1207+
1208+class BlindsAnim : public PolygonAnim
1209+{
1210+ public:
1211+
1212+ BlindsAnim (CompWindow *w,
1213+ WindowEvent curWindowEvent,
1214+ float duration,
1215+ const AnimEffect info,
1216+ const CompRect &icon);
1217+
1218+ void init ();
1219+ protected:
1220+ static const float kDurationFactor;
1221+};
1222+
1223+class HelixAnim : public PolygonAnim
1224+{
1225+ public:
1226+ HelixAnim (CompWindow *w,
1227+ WindowEvent curWindowEvent,
1228+ float duration,
1229+ const AnimEffect info,
1230+ const CompRect &icon);
1231+
1232+ void init ();
1233+ protected:
1234+ static const float kDurationFactor;
1235+};
1236+
1237+class BonanzaAnim : public ParticleAnim
1238+{
1239+ public:
1240+ BonanzaAnim (CompWindow *w,
1241+ WindowEvent curWindowEvent,
1242+ float duration,
1243+ const AnimEffect info,
1244+ const CompRect &icon);
1245+
1246+ void
1247+ genFire (int x,
1248+ int y,
1249+ int radius,
1250+ float size,
1251+ float time);
1252+
1253+ void step (float);
1254+ protected:
1255+
1256+ int mAnimFireDirection;
1257+ unsigned int mFirePDId;
1258+};
1259+
1260+class ShatterAnim : public PolygonAnim
1261+{
1262+ public:
1263+ ShatterAnim (CompWindow *w,
1264+ WindowEvent curWindowEvent,
1265+ float duration,
1266+ const AnimEffect info,
1267+ const CompRect &icon);
1268+
1269+ void init ();
1270+ protected:
1271+ static const float kDurationFactor;
1272+};
1273+
1274+class AnimPlusPluginVTable :
1275+ public CompPlugin::VTableForScreenAndWindow <AnimPlusScreen, AnimPlusWindow>
1276+{
1277+ public:
1278+
1279+ bool init ();
1280+};
1281
1282=== added file 'plugins/animationplus/src/shatter.cpp'
1283--- plugins/animationplus/src/shatter.cpp 1970-01-01 00:00:00 +0000
1284+++ plugins/animationplus/src/shatter.cpp 2016-07-25 17:11:00 +0000
1285@@ -0,0 +1,75 @@
1286+/*
1287+ * Animation plugin for compiz/beryl
1288+ *
1289+ * animation.c
1290+ *
1291+ * Copyright : (C) 2008 Kevin DuBois
1292+ * E-mail : kdub432@gmail.com
1293+ *
1294+ * Based on other animations by
1295+ * : Erkin Bahceci
1296+ * E-mail : erkinbah@gmail.com
1297+ *
1298+ * Which were based on Wobbly and Minimize plugins by
1299+ * : David Reveman
1300+ * E-mail : davidr@novell.com>
1301+ *
1302+ * This program is free software; you can redistribute it and/or
1303+ * modify it under the terms of the GNU General Public License
1304+ * as published by the Free Software Foundation; either version 2
1305+ * of the License, or (at your option) any later version.
1306+ *
1307+ * This program is distributed in the hope that it will be useful,
1308+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1309+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1310+ * GNU General Public License for more details.
1311+ *
1312+ * You should have received a copy of the GNU General Public License
1313+ * along with this program; if not, write to the Free Software
1314+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1315+ */
1316+#include "private.h"
1317+
1318+const float ShatterAnim::kDurationFactor = 1.43;
1319+
1320+ShatterAnim::ShatterAnim (CompWindow *w,
1321+ WindowEvent curWindowEvent,
1322+ float duration,
1323+ const AnimEffect info,
1324+ const CompRect &icon) :
1325+ Animation::Animation (w, curWindowEvent, kDurationFactor * duration, info,
1326+ icon),
1327+ PolygonAnim::PolygonAnim (w, curWindowEvent, kDurationFactor * duration,
1328+ info, icon)
1329+{
1330+ mAllFadeDuration = 0.4f;
1331+ mBackAndSidesFadeDur = 0.2f;
1332+ mDoDepthTest = true;
1333+ mDoLighting = true;
1334+ mCorrectPerspective = CorrectPerspectivePolygon;
1335+}
1336+
1337+void
1338+ShatterAnim::init ()
1339+{
1340+ ANIMPLUS_SCREEN (screen);
1341+ int static_polygon;
1342+ int screen_height = screen->outputDevs ().at (mWindow->outputDevice ()).height ();
1343+
1344+ tessellateIntoGlass (as->optionGetShatterNumSpokes (),
1345+ as->optionGetShatterNumTiers (),
1346+ 1); //can't really see how thick it is...
1347+
1348+ foreach (PolygonObject *p, mPolygons)
1349+ {
1350+ p->rotAxis.set (0, 0, 1);
1351+ static_polygon = 1;
1352+
1353+ p->finalRelPos.set (0,
1354+ static_polygon * (-p->centerPosStart.y () + screen_height),
1355+ 0);
1356+ if (p->finalRelPos.y ())
1357+ p->finalRotAng = RAND_FLOAT() * 120 * ( RAND_FLOAT() < 0.5 ? -1 : 1 );
1358+ }
1359+}
1360+
1361
1362=== modified file 'plugins/simple-animations/CMakeLists.txt'
1363--- plugins/simple-animations/CMakeLists.txt 2016-07-25 17:10:49 +0000
1364+++ plugins/simple-animations/CMakeLists.txt 2016-07-25 17:11:00 +0000
1365@@ -1,8 +1,4 @@
1366 find_package (Compiz REQUIRED)
1367-
1368-include (FindOpenGL)
1369 include (CompizPlugin)
1370
1371-if (OPENGL_GLU_FOUND)
1372- compiz_plugin (animationsim PLUGINDEPS composite opengl animation LIBRARIES ${OPENGL_glu_LIBRARY} INCDIRS ${OPENGL_INCLUDE_DIR})
1373-endif (OPENGL_GLU_FOUND)
1374+compiz_plugin (animationsim PLUGINDEPS composite opengl animation)

Subscribers

People subscribed via source and target branches