Merge lp:~mc-return/compiz/compiz.merge-plugin-extra-animations-moveto-animationplus into lp:compiz/0.9.10

Proposed by MC Return
Status: Work in progress
Proposed branch: lp:~mc-return/compiz/compiz.merge-plugin-extra-animations-moveto-animationplus
Merge into: lp:compiz/0.9.10
Diff against target: 1304 lines (+1253/-0)
10 files modified
plugins/animationplus/CMakeLists.txt (+8/-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 (+156/-0)
plugins/animationplus/src/blinds.cpp (+70/-0)
plugins/animationplus/src/bonanza.cpp (+247/-0)
plugins/animationplus/src/helix.cpp (+93/-0)
plugins/animationplus/src/private.h (+196/-0)
plugins/animationplus/src/shatter.cpp (+75/-0)
To merge this branch: bzr merge lp:~mc-return/compiz/compiz.merge-plugin-extra-animations-moveto-animationplus
Reviewer Review Type Date Requested Status
Daniel van Vugt Pending
Review via email: mp+156687@code.launchpad.net

This proposal supersedes a proposal from 2012-06-22.

Commit message

Added the unsupported plug-in "extra animations" converted from git to bzr (including history) to lp:compiz and bzr moved extra-animations to animationplus.

Description of the change

Adds the unsupported plug-in "extra-animations" converted from git to bzr (including history) to Compiz 0.9.8 and bzr moved extra-animations to animationplus.

To post a comment you must log in.
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Posted in a previous version of this proposal

Does not build, unfortunately:

/home/dan/bzr/compiz/tmp.animationplus/plugins/animationplus/src/bonanza.cpp: In member function ‘void BonanzaAnim::step(float)’:
/home/dan/bzr/compiz/tmp.animationplus/plugins/animationplus/src/bonanza.cpp:214:27: error: no matching function for call to ‘CompRegion::CompRegion(CompPoint::vector&)’
/home/dan/bzr/compiz/tmp.animationplus/plugins/animationplus/src/bonanza.cpp:214:27: note: candidates are:
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:183:11: note: CompRegion::CompRegion(Region)
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:183:11: note: no known conversion for argument 1 from ‘CompPoint::vector {aka std::vector<CompPoint>}’ to ‘Region {aka _XRegion*}’
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:51:9: note: CompRegion::CompRegion(const CompRect&)
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:51:9: note: no known conversion for argument 1 from ‘CompPoint::vector {aka std::vector<CompPoint>}’ to ‘const CompRect&’
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:50:2: note: CompRegion::CompRegion(int, int, int, int)
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:50:2: note: candidate expects 4 arguments, 1 provided
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:49:2: note: CompRegion::CompRegion(const CompRegion&)
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:49:2: note: no known conversion for argument 1 from ‘CompPoint::vector {aka std::vector<CompPoint>}’ to ‘const CompRegion&’
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:48:2: note: CompRegion::CompRegion()
/home/dan/bzr/compiz/tmp.animationplus/plugins/../src/region/include/core/region.h:48:2: note: candidate expects 0 arguments, 1 provided
make[2]: *** [plugins/animationplus/CMakeFiles/animationplus.dir/src/bonanza.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [plugins/animationplus/CMakeFiles/animationplus.dir/all] Error 2
make: *** [all] Error 2

review: Needs Fixing
Revision history for this message
MC Return (mc-return) wrote : Posted in a previous version of this proposal

It seems those plug-ins also fail to build with most recent Compiz versions. :(

Unmerged revisions

3258. By MC Return

Rebased on latest lp:compiz (r3285)

3257. By MC Return

Added the unsupported, but fully working plug-in "extra-animations" converted from git to bzr (including history) to Compiz 0.9.8 and bzr moved extra-animations to animationplus.

Preview Diff

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

Subscribers

People subscribed via source and target branches

to all changes: