<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Transition effects</title>
		<link>http://www.allegro.cc/forums/view/591493</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 22 May 2007 09:43:04 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hey y&#39;all.</p><p>Anyone know algorithms for really cool screen transition effects?<br />I know the basic ones like fading to a color, or blocking the screen out. But what about those cool ones like how the screen blurs out like in those snes versions of super mario bros?</p><p>I&#39;d like to kno cuz i&#39;m doing some code for custom transition effects in an RPG and some algorithms for that would be very helpful.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (The Master)</author>
		<pubDate>Mon, 21 May 2007 14:11:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, all transition effects are pretty similar. You have to images (i0, i1). You have transition time (t).<br />Now, what you want to do is to find a way that shows i0 at tcur=0 and i1 at tcur=t.</p><p>You can slide i0 in all directions out of the screen showing i1 &quot;behind&quot; it. You can even scroll parts i0 in different directions (one half to the left, one half to the right).</p><p>You can display lines / columns of i1 in an interval of n. Start with a large n then decrease it. </p><p>You can alpha blend the images.<br />You can implement a paper turn effect.</p><p>There are a lot of possibilities. Some are pretty easy to implement, some take more time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Mon, 21 May 2007 15:19:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I love crossfading  <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Mon, 21 May 2007 19:27:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check out the code from <a href="http://www.allegro.cc/forums/thread/590831">Ballz</a>, a TINS game.  It had several transitions when you die/finish a level.  However, most transitioned to a black screen and then out from a black screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Mon, 21 May 2007 20:20:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#039;s the code I use for fading effects. <br />Example code will follow if somebody could reply - this post is getting too long <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>fadecol.h
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#ifndef FADE_COLLECTION_HEADER</span>
<span class="number">  2</span><span class="p">#define FADE_COLLECTION_HEADER</span>
<span class="number">  3</span><span class="p">#include "fade.h"</span>
<span class="number">  4</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  7</span><span class="c">// -- StripeFade</span>
<span class="number">  8</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  9</span><span class="k1">class</span> StripeFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 10</span>    <span class="k1">int</span> height<span class="k2">;</span>
<span class="number"> 11</span>public:
<span class="number"> 12</span>    StripeFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    StripeFade<span class="k2">(</span><span class="k1">int</span> h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k1">virtual</span> ~StripeFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 19</span><span class="c">// -- SymmetricStripeFade</span>
<span class="number"> 20</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 21</span><span class="k1">class</span> SymmetricStripeFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 22</span>    <span class="k1">int</span> height<span class="k2">;</span>
<span class="number"> 23</span>public:
<span class="number"> 24</span>    SymmetricStripeFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    SymmetricStripeFade<span class="k2">(</span><span class="k1">int</span> h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <span class="k1">virtual</span> ~SymmetricStripeFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 31</span><span class="c">// -- StretchFade</span>
<span class="number"> 32</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 33</span><span class="k1">class</span> StretchFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 34</span>public:
<span class="number"> 35</span>    StretchFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>    <span class="k1">virtual</span> ~StretchFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 41</span><span class="c">// -- ScrollFade</span>
<span class="number"> 42</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 43</span><span class="k1">class</span> ScrollFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 44</span>public:
<span class="number"> 45</span>    ScrollFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>    <span class="k1">virtual</span> ~ScrollFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 49</span>
<span class="number"> 50</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 51</span><span class="c">// -- DoorFade</span>
<span class="number"> 52</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 53</span><span class="k1">class</span> DoorFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 54</span>public:
<span class="number"> 55</span>    DoorFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>    <span class="k1">virtual</span> ~DoorFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 61</span><span class="c">// -- BlindsFade</span>
<span class="number"> 62</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 63</span><span class="k1">class</span> BlindsFade <span class="k2">:</span> <span class="k1">public</span> Fade <span class="k2">{</span>
<span class="number"> 64</span>public:
<span class="number"> 65</span>    BlindsFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 66</span>    <span class="k1">virtual</span> ~BlindsFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 69</span>
<span class="number"> 70</span><span class="p">#endif</span>
</div></div><p>

fadecol.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "fadecol.h"</span>
<span class="number">   2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">   5</span><span class="c">// -- StripeFade</span>
<span class="number">   6</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">   7</span>StripeFade::StripeFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> height<span class="k2">(</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number">   8</span><span class="k2">}</span>
<span class="number">   9</span>
<span class="number">  10</span>StripeFade::StripeFade<span class="k2">(</span><span class="k1">int</span> h<span class="k2">)</span> <span class="k2">:</span> height<span class="k2">(</span>h<span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  11</span><span class="k2">}</span>
<span class="number">  12</span>StripeFade::~StripeFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  13</span><span class="k2">}</span>
<span class="number">  14</span><span class="k1">void</span> StripeFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  15</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>, dst-&gt;w, dst-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  16</span>    <span class="k1">if</span> <span class="k2">(</span>percent <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  17</span>        percent <span class="k3">*</span><span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  18</span>        <span class="k1">int</span> h <span class="k3">=</span> height<span class="k3">*</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  19</span>        <span class="k1">int</span> width <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">;</span> y<span class="k3">+</span><span class="k3">=</span>h<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  21</span>            <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, <span class="n">0</span>, y, width, y<span class="k3">+</span>height-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>        <span class="k2">}</span>
<span class="number">  23</span>    <span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  24</span>        percent <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  25</span>        percent <span class="k3">*</span><span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  26</span>        <span class="k1">int</span> pos <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">-</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">;</span> y<span class="k3">+</span><span class="k3">=</span>height<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  28</span>            <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, <span class="n">0</span>, y, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, y<span class="k3">+</span>height-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>            y<span class="k3">+</span><span class="k3">=</span>height<span class="k2">;</span>
<span class="number">  30</span>            <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, pos, y, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, y<span class="k3">+</span>height-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>        <span class="k2">}</span>
<span class="number">  32</span>    <span class="k2">}</span>
<span class="number">  33</span><span class="k2">}</span>
<span class="number">  34</span>
<span class="number">  35</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  36</span><span class="c">// -- SymmetricStripeFade</span>
<span class="number">  37</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  38</span>SymmetricStripeFade::SymmetricStripeFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> height<span class="k2">(</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  39</span><span class="k2">}</span>
<span class="number">  40</span>
<span class="number">  41</span>SymmetricStripeFade::SymmetricStripeFade<span class="k2">(</span><span class="k1">int</span> h<span class="k2">)</span> <span class="k2">:</span> height<span class="k2">(</span>h<span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  42</span><span class="k2">}</span>
<span class="number">  43</span>SymmetricStripeFade::~SymmetricStripeFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  44</span><span class="k2">}</span>
<span class="number">  45</span><span class="k1">void</span> SymmetricStripeFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  46</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>, dst-&gt;w, dst-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>    <span class="k1">int</span> w <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">*</span> percent<span class="k2">;</span>
<span class="number">  48</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">;</span> y<span class="k3">+</span><span class="k3">=</span>height<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  49</span>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, <span class="n">0</span>, y, w, y<span class="k3">+</span>height-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>        y<span class="k3">+</span><span class="k3">=</span>height<span class="k2">;</span>
<span class="number">  51</span>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, SCREEN_W-w, y, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, y<span class="k3">+</span>height-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <span class="k2">}</span>
<span class="number">  53</span><span class="k2">}</span>
<span class="number">  54</span>
<span class="number">  55</span>
<span class="number">  56</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  57</span><span class="c">// -- StretchFade</span>
<span class="number">  58</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  59</span>StretchFade::StretchFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  60</span><span class="k2">}</span>
<span class="number">  61</span>
<span class="number">  62</span>StretchFade::~StretchFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  63</span><span class="k2">}</span>
<span class="number">  64</span><span class="k1">void</span> StretchFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  65</span>    <span class="k1">int</span> w <span class="k3">=</span> dst-&gt;w <span class="k3">*</span> <span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>    <span class="k1">int</span> h <span class="k3">=</span> dst-&gt;h <span class="k3">*</span> <span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>    <span class="k1">int</span> x <span class="k3">=</span> <span class="k2">(</span>dst-&gt;w <span class="k3">-</span> w<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  68</span>    <span class="k1">int</span> y <span class="k3">=</span> <span class="k2">(</span>dst-&gt;h <span class="k3">-</span> h<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  69</span>    clear<span class="k2">(</span>dst<span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>src, dst, <span class="n">0</span>,<span class="n">0</span>,src-&gt;w, src-&gt;h, x,y, w, h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span><span class="k2">}</span>
<span class="number">  72</span>
<span class="number">  73</span>
<span class="number">  74</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  75</span><span class="c">// -- ScrollFade</span>
<span class="number">  76</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  77</span>ScrollFade::ScrollFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  78</span><span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span>ScrollFade::~ScrollFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  81</span><span class="k2">}</span>
<span class="number">  82</span><span class="k1">void</span> ScrollFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  83</span>    <span class="k1">int</span> x <span class="k3">=</span> dst-&gt;w <span class="k3">*</span> percent<span class="k2">;</span>
<span class="number">  84</span>    <span class="k1">int</span> w <span class="k3">=</span> dst-&gt;w <span class="k3">-</span> w<span class="k2">;</span>
<span class="number">  85</span>    
<span class="number">  86</span>    <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, <span class="n">0</span>, <span class="n">0</span>, w, dst-&gt;h, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst, <span class="n">0</span>, <span class="n">0</span>, x, <span class="n">0</span>, w, src-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span><span class="k2">}</span>
<span class="number">  89</span>
<span class="number">  90</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  91</span><span class="c">// -- DoorFade</span>
<span class="number">  92</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  93</span>DoorFade::DoorFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  94</span><span class="k2">}</span>
<span class="number">  95</span>
<span class="number">  96</span>DoorFade::~DoorFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  97</span><span class="k2">}</span>
<span class="number">  98</span><span class="k1">void</span> DoorFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>    
<span class="number">  99</span>    <span class="k1">int</span> x  <span class="k3">=</span> dst-&gt;w <span class="k3">*</span> percent <span class="k3">*</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number"> 100</span>    <span class="k1">int</span> w  <span class="k3">=</span> dst-&gt;w<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> x<span class="k2">;</span>
<span class="number"> 101</span>    <span class="k1">int</span> x2 <span class="k3">=</span> src-&gt;w <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 102</span>    
<span class="number"> 103</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst,  x, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, w, src-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst, x2, <span class="n">0</span>, dst-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k3">+</span>x, <span class="n">0</span>, w, src-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>    <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&gt;</span><span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 106</span>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, dst-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k3">-</span>x, <span class="n">0</span>, dst-&gt;w<span class="k3">/</span><span class="n">2</span> <span class="k3">+</span>x, dst-&gt;h,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>    <span class="k2">}</span>
<span class="number"> 108</span><span class="k2">}</span>
<span class="number"> 109</span>
<span class="number"> 110</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 111</span><span class="c">// -- BlindsFade</span>
<span class="number"> 112</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 113</span>BlindsFade::BlindsFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>    
<span class="number"> 114</span><span class="k2">}</span>
<span class="number"> 115</span>
<span class="number"> 116</span>BlindsFade::~BlindsFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 117</span><span class="k2">}</span>
<span class="number"> 118</span><span class="k1">void</span> BlindsFade::fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>    
<span class="number"> 119</span>    <span class="k1">int</span> h    <span class="k3">=</span> <span class="k2">(</span>dst-&gt;w <span class="k3">/</span> <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>    <span class="k1">int</span> curH <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>h <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>    <span class="k1">int</span> y    <span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 122</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>src, dst, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, src-&gt;w, src-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> a <span class="k3">&lt;</span> <span class="n">9</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>a<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 124</span>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, <span class="n">0</span>, y-curH, dst-&gt;w, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>        y <span class="k3">+</span><span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 126</span>    <span class="k2">}</span>
<span class="number"> 127</span><span class="k2">}</span>
</div></div><p>

crossfadecol.h
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#ifndef CROSSFADE_COLLECTION_HEADER</span>
<span class="number">  2</span><span class="p">#define CORSSFADE_COLLECTION_HEADER</span>
<span class="number">  3</span><span class="p">#include "crossfade.h"</span>
<span class="number">  4</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  7</span><span class="c">// -- AlphaBlending</span>
<span class="number">  8</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number">  9</span><span class="k1">class</span> AlphaBlending <span class="k2">:</span> <span class="k1">public</span> CrossFade <span class="k2">{</span>
<span class="number"> 10</span>public:
<span class="number"> 11</span>    AlphaBlending<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>    <span class="k1">virtual</span> ~AlphaBlending<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 17</span><span class="c">// -- MosaicCrossFade</span>
<span class="number"> 18</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 19</span><span class="k1">class</span> MosaicCrossFade <span class="k2">:</span> <span class="k1">public</span> CrossFade <span class="k2">{</span>
<span class="number"> 20</span>private:
<span class="number"> 21</span>    <span class="k1">int</span> w, h<span class="k2">;</span>
<span class="number"> 22</span>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>fxBuffer<span class="k2">;</span>
<span class="number"> 23</span>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>transBuffer<span class="k2">;</span>
<span class="number"> 24</span>public:
<span class="number"> 25</span>    MosaicCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    MosaicCrossFade<span class="k2">(</span><span class="k1">int</span> w, <span class="k1">int</span> h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k1">virtual</span> ~MosaicCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>private:
<span class="number"> 30</span>    <span class="k1">void</span> mosaicBlit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>dest, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>source, <span class="k1">unsigned</span> <span class="k1">int</span> blockSize<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 34</span><span class="c">// -- DoorCrossFade</span>
<span class="number"> 35</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 36</span><span class="k1">class</span> DoorCrossFade <span class="k2">:</span> <span class="k1">public</span> CrossFade <span class="k2">{</span>
<span class="number"> 37</span>
<span class="number"> 38</span>public:
<span class="number"> 39</span>    DoorCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>    <span class="k1">virtual</span> ~DoorCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 43</span>
<span class="number"> 44</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 45</span><span class="c">// -- DoorZoomCrossFade</span>
<span class="number"> 46</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 47</span><span class="k1">class</span> DoorZoomCrossFade <span class="k2">:</span> <span class="k1">public</span> CrossFade <span class="k2">{</span>
<span class="number"> 48</span>
<span class="number"> 49</span>public:
<span class="number"> 50</span>    DoorZoomCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>    <span class="k1">virtual</span> ~DoorZoomCrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 54</span>
<span class="number"> 55</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 56</span><span class="c">// -- RollOut</span>
<span class="number"> 57</span><span class="c">// --------------------------------------------------------------------------------</span>
<span class="number"> 58</span><span class="k1">class</span> RollOut <span class="k2">:</span> <span class="k1">public</span> CrossFade <span class="k2">{</span>
<span class="number"> 59</span>public:
<span class="number"> 60</span>    RollOut<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>    <span class="k1">virtual</span> ~RollOut<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 62</span>    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 64</span><span class="p">#endif</span>
</div></div><p>

crossfadecol.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "crossfadecol.h"</span>
<span class="number">   2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   3</span>
<span class="number">   4</span>AlphaBlending::AlphaBlending<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">   5</span><span class="k2">}</span>
<span class="number">   6</span>
<span class="number">   7</span>AlphaBlending::~AlphaBlending<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">   8</span><span class="k2">}</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="k1">void</span> AlphaBlending::crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  11</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, img1-&gt;w, img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  12</span>    <a href="http://www.allegro.cc/manual/set_trans_blender" target="_blank"><span class="a">set_trans_blender</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span><span class="n">255</span> <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>    <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>dst, img2, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  14</span><span class="k2">}</span>
<span class="number">  15</span>
<span class="number">  16</span>MosaicCrossFade::MosaicCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> w<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, h<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, fxBuffer<span class="k2">(</span>NULL<span class="k2">)</span>, transBuffer<span class="k2">(</span>NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  17</span><span class="k2">}</span>
<span class="number">  18</span>
<span class="number">  19</span>MosaicCrossFade::MosaicCrossFade<span class="k2">(</span><span class="k1">int</span> w, <span class="k1">int</span> h<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  20</span>    this-&gt;w <span class="k3">=</span> w<span class="k2">;</span>
<span class="number">  21</span>    this-&gt;h <span class="k3">=</span> h<span class="k2">;</span>
<span class="number">  22</span>    fxBuffer    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>w, h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>    transBuffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>w, h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span><span class="k2">}</span>
<span class="number">  25</span>
<span class="number">  26</span>
<span class="number">  27</span>MosaicCrossFade::~MosaicCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  28</span>    <span class="k1">if</span> <span class="k2">(</span>fxBuffer<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  29</span>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>fxBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>    <span class="k2">}</span>
<span class="number">  31</span>    <span class="k1">if</span> <span class="k2">(</span>transBuffer<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  32</span>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>transBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>    <span class="k2">}</span>
<span class="number">  34</span><span class="k2">}</span>
<span class="number">  35</span>
<span class="number">  36</span><span class="k1">void</span> MosaicCrossFade::crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  37</span>    <span class="k1">int</span> bs1 <span class="k3">=</span> MID<span class="k2">(</span><span class="n">1</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img1-&gt;h <span class="k3">*</span> <span class="k2">(</span><span class="n">1</span><span class="k3">-</span>percent<span class="k2">)</span><span class="k2">)</span>, <span class="n">640</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>    <span class="k1">int</span> bs2 <span class="k3">=</span> MID<span class="k2">(</span><span class="n">1</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img2-&gt;h <span class="k3">*</span> percent<span class="k2">)</span>, <span class="n">640</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>    
<span class="number">  40</span>    mosaicBlit<span class="k2">(</span>dst, img1, bs2<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>    mosaicBlit<span class="k2">(</span>transBuffer, img2, bs1<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    <a href="http://www.allegro.cc/manual/set_trans_blender" target="_blank"><span class="a">set_trans_blender</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span><span class="n">255</span><span class="k3">*</span>percent<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>dst, transBuffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span><span class="k2">}</span>
<span class="number">  45</span>
<span class="number">  46</span><span class="k1">void</span> MosaicCrossFade::mosaicBlit<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>dest, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>source, <span class="k1">unsigned</span> <span class="k1">int</span> blockSize<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  47</span>    <span class="k1">int</span> dw <span class="k3">=</span> source-&gt;w<span class="k2">;</span> 
<span class="number">  48</span>    <span class="k1">int</span> dh <span class="k3">=</span> source-&gt;h<span class="k2">;</span> 
<span class="number">  49</span>    <span class="k1">if</span> <span class="k2">(</span>blockSize <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  50</span>        dw <span class="k3">/</span><span class="k3">=</span> blockSize<span class="k2">;</span>
<span class="number">  51</span>        dh <span class="k3">/</span><span class="k3">=</span> blockSize<span class="k2">;</span>
<span class="number">  52</span>    <span class="k2">}</span>
<span class="number">  53</span>        
<span class="number">  54</span>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>source, fxBuffer, 
<span class="number">  55</span>                <span class="n">0</span>, <span class="n">0</span>, source-&gt;w, source-&gt;h, 
<span class="number">  56</span>                <span class="n">0</span>, <span class="n">0</span>, dw, dh<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>            
<span class="number">  58</span>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>fxBuffer, dest,
<span class="number">  59</span>        <span class="n">0</span>, <span class="n">0</span>, dw, dh, 
<span class="number">  60</span>        <span class="n">0</span>, <span class="n">0</span>, source-&gt;w, source-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span><span class="k2">}</span>
<span class="number">  62</span>
<span class="number">  63</span>DoorCrossFade::DoorCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  64</span><span class="k2">}</span>
<span class="number">  65</span>
<span class="number">  66</span>DoorCrossFade::~DoorCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  67</span><span class="k2">}</span>
<span class="number">  68</span>
<span class="number">  69</span><span class="k1">void</span> DoorCrossFade::crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  70</span>    <span class="k1">int</span> gap  <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>dst-&gt;w <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>    <span class="k1">int</span> x    <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>gap <span class="k3">*</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>    <span class="k1">int</span> w    <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>dst-&gt;w<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>    <span class="k1">int</span> x2   <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img1-&gt;w <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>
<span class="number">  75</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img2, dst,  w, <span class="n">0</span>, w, <span class="n">0</span>, gap, img2-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>    
<span class="number">  77</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst,  x, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, w, img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst, x2, <span class="n">0</span>, dst-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k3">+</span>x, <span class="n">0</span>, w, img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span><span class="k2">}</span>
<span class="number">  81</span>
<span class="number">  82</span>DoorZoomCrossFade::DoorZoomCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  83</span><span class="k2">}</span>
<span class="number">  84</span>
<span class="number">  85</span>DoorZoomCrossFade::~DoorZoomCrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  86</span><span class="k2">}</span>
<span class="number">  87</span>
<span class="number">  88</span><span class="k1">void</span> DoorZoomCrossFade::crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  89</span>    <span class="k1">int</span> gap  <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>dst-&gt;w <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>    <span class="k1">int</span> x    <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>gap <span class="k3">*</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>    <span class="k1">int</span> w    <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>dst-&gt;w<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>    <span class="k1">int</span> x2   <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img1-&gt;w <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>
<span class="number">  94</span>    <span class="c">// Berechnen der Größe des Bildes</span>
<span class="number">  95</span>    <span class="k1">int</span> dw <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img2-&gt;w <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>    <span class="k1">int</span> dh <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>img2-&gt;h <span class="k3">*</span> percent<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>    <span class="k1">int</span> dx <span class="k3">=</span> <span class="k2">(</span>dst-&gt;w <span class="k3">-</span> dw<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  98</span>    <span class="k1">int</span> dy <span class="k3">=</span> <span class="k2">(</span>dst-&gt;h <span class="k3">-</span> dh<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  99</span>    
<span class="number"> 100</span>    <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 101</span>        <span class="c">// Bereich löschen</span>
<span class="number"> 102</span>        <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>dst, dst-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k3">-</span>x, <span class="n">0</span>, dst-&gt;w<span class="k3">/</span><span class="n">2</span> <span class="k3">+</span>x, dst-&gt;h,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 103</span>        <span class="c">// Anzeige in der berechneten Größe</span>
<span class="number"> 104</span>        <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>img2, dst,  <span class="n">0</span>, <span class="n">0</span>, img2-&gt;w, img2-&gt;h, dx, dy, dw, dh<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>    <span class="k2">}</span>
<span class="number"> 106</span>    
<span class="number"> 107</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst,  x, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, w, img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst, x2, <span class="n">0</span>, dst-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k3">+</span>x, <span class="n">0</span>, w, img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>
<span class="number"> 110</span><span class="k2">}</span>
<span class="number"> 111</span>
<span class="number"> 112</span>
<span class="number"> 113</span>RollOut::RollOut<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 114</span><span class="k2">}</span>
<span class="number"> 115</span>
<span class="number"> 116</span>RollOut::~RollOut<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 117</span><span class="k2">}</span>
<span class="number"> 118</span>
<span class="number"> 119</span><span class="k1">void</span> RollOut::crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 120</span>        
<span class="number"> 121</span>    <span class="k1">int</span> y <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span>percent <span class="k3">*</span> img1-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>    <span class="k1">int</span> h <span class="k3">=</span> MIN<span class="k2">(</span>y, img1-&gt;h <span class="k3">*</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>    
<span class="number"> 124</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img2, dst, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, img2-&gt;w, y<span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 125</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst, <span class="n">0</span>, y<span class="k3">+</span>h, <span class="n">0</span>, y<span class="k3">+</span>h, img1-&gt;w, img1-&gt;h <span class="k3">-</span> y <span class="k3">-</span> h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>    
<span class="number"> 127</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> a <span class="k3">&lt;</span> h<span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 128</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>img1, dst, <span class="n">0</span>, y<span class="k3">+</span>a, <span class="n">0</span>, y<span class="k3">+</span>h-a, img1-&gt;w, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>    <span class="k2">}</span>
<span class="number"> 130</span><span class="k2">}</span>
</div></div><p>

crossfade.h
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef CROSSFADE_HEADER</span>
<span class="p">#define CROSSFADE_HEADER</span>

<span class="p">#include &lt;allegro.h&gt;</span>

<span class="k1">class</span> CrossFade <span class="k2">{</span>
public:    
    CrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">virtual</span> ~CrossFade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">virtual</span> <span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img1, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> img2, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>

crossfade.cpp
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include "crossfade.h"</span>

CrossFade::CrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="k2">}</span>
CrossFade::~CrossFade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="k2">}</span>
</pre></div></div><p>

fade.h
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef FADE_HEADER</span>
<span class="p">#define FADE_HEADER</span>

<span class="p">#include &lt;allegro.h&gt;</span>

<span class="k1">class</span> Fade <span class="k2">{</span>
public:    
    Fade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">virtual</span> ~Fade<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">virtual</span> <span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> src, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> dst, <span class="k1">double</span> percent<span class="k2">)</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>

fade.cpp
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include "fade.h"</span>

Fade::Fade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="k2">}</span>


Fade::~Fade<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Mon, 21 May 2007 20:34:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This posts does not exist. It is but a figment of your imagination.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Mon, 21 May 2007 22:10:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s some example code:</p><p>example.cpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "fade.h"</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "fadecol.h"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "crossfade.h"</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "crossfadecol.h"</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>doubleBuffer<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">volatile</span> <span class="k1">int</span> timerCounter<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">void</span> timerFunction<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    timerCounter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span></td></tr><tr><td class="number">14</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>timerFunction<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="k1">int</span> setGfxMode<span class="k2">(</span><span class="k1">int</span> w, <span class="k1">int</span> h, <span class="k1">int</span> win<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">int</span> mode <span class="k3">=</span> win ? GFX_AUTODETECT_WINDOWED <span class="k2">:</span> GFX_AUTODETECT_FULLSCREEN<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    <span class="k1">int</span> colorDepth<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">16</span>, <span class="n">15</span>, <span class="n">32</span>, <span class="n">24</span>, <span class="n">0</span><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <span class="k1">int</span> a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">while</span> <span class="k2">(</span>colorDepth<span class="k2">[</span>a<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>        <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>colorDepth<span class="k2">[</span>a<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>mode, w, h, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>            <span class="k1">return</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>        <span class="k3">+</span><span class="k3">+</span>a<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">return</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>createDoubleBuffer<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>    </td></tr><tr><td class="number">32</td><td>    <span class="k1">return</span> bmp<span class="k2">;</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td><span class="k1">int</span> init<span class="k2">(</span><span class="k1">int</span> preferWin<span class="k2">)</span> <span class="k2">{</span>    </td></tr><tr><td class="number">36</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    </td></tr><tr><td class="number">38</td><td>    <span class="c">/* set 640x480 hicolor preferredMode*/</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>setGfxMode<span class="k2">(</span><span class="n">640</span>, <span class="n">480</span>, preferWin<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">40</td><td>        <span class="c">/* or non preferred mode */</span></td></tr><tr><td class="number">41</td><td>        <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>setGfxMode<span class="k2">(</span><span class="n">640</span>, <span class="n">480</span>, <span class="k3">!</span>preferWin<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>            <span class="k1">return</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">43</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">44</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>    </td></tr><tr><td class="number">46</td><td>    <span class="c">/* init subsystems */</span></td></tr><tr><td class="number">47</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    <a href="http://www.allegro.cc/manual/install_joystick" target="_blank"><span class="a">install_joystick</span></a><span class="k2">(</span>JOY_TYPE_AUTODETECT<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>    </td></tr><tr><td class="number">52</td><td>    <span class="c">/* lock timer vars / functions */</span></td></tr><tr><td class="number">53</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>timerCounter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>timerFunction<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>    </td></tr><tr><td class="number">56</td><td>    <span class="c">/* install logic timer */</span></td></tr><tr><td class="number">57</td><td>    <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>timerFunction, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    </td></tr><tr><td class="number">59</td><td>    doubleBuffer <span class="k3">=</span> createDoubleBuffer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">return</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">61</td><td><span class="k2">}</span></td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td><span class="k1">void</span> done<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">64</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>doubleBuffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td><span class="k2">}</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td><span class="k1">void</span> fade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> from, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>to, Fade <span class="k3">*</span>fade, <span class="k1">int</span> ticks<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">69</td><td>    <span class="k1">double</span> percent<span class="k2">;</span></td></tr><tr><td class="number">70</td><td>    <span class="k1">int</span> targetTime   <span class="k3">=</span> timerCounter <span class="k3">+</span> ticks<span class="k2">;</span></td></tr><tr><td class="number">71</td><td>    <span class="k1">int</span> curTime      <span class="k3">=</span> timerCounter<span class="k2">;</span></td></tr><tr><td class="number">72</td><td>    <span class="k1">int</span> needsRefresh <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">73</td><td>    </td></tr><tr><td class="number">74</td><td>    <span class="k1">while</span> <span class="k2">(</span>timerCounter <span class="k3">&lt;</span> targetTime <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">75</td><td>        <span class="k1">if</span> <span class="k2">(</span>curTime <span class="k3">&lt;</span><span class="k3">=</span>timerCounter<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">76</td><td>            percent <span class="k3">=</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span> <span class="k2">(</span>ticks <span class="k3">-</span> <span class="k2">(</span>targetTime <span class="k3">-</span> curTime<span class="k2">)</span><span class="k2">)</span> <span class="k3">/</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span> ticks<span class="k2">;</span></td></tr><tr><td class="number">77</td><td>            </td></tr><tr><td class="number">78</td><td>            curTime      <span class="k3">=</span> timerCounter<span class="k3">+</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>            needsRefresh <span class="k3">=</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">80</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">81</td><td>        <span class="k1">if</span> <span class="k2">(</span>needsRefresh<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">82</td><td>            needsRefresh <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">83</td><td>            <span class="k1">if</span> <span class="k2">(</span>percent <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">84</td><td>                fade-&gt;fade<span class="k2">(</span>from, doubleBuffer, percent<span class="k3">*</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>            <span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">86</td><td>                fade-&gt;fade<span class="k2">(</span>to, doubleBuffer, <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <span class="k2">(</span>percent-0.5<span class="k2">)</span><span class="k3">*</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">88</td><td>            <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>doubleBuffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, doubleBuffer-&gt;w, doubleBuffer-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">90</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">91</td><td><span class="k2">}</span></td></tr><tr><td class="number">92</td><td>&#160;</td></tr><tr><td class="number">93</td><td><span class="k1">void</span> crossfade<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> from, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>to, CrossFade <span class="k3">*</span>fade, <span class="k1">int</span> ticks<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">94</td><td>    <span class="k1">double</span> percent<span class="k2">;</span></td></tr><tr><td class="number">95</td><td>    <span class="k1">int</span> targetTime   <span class="k3">=</span> timerCounter <span class="k3">+</span> ticks<span class="k2">;</span></td></tr><tr><td class="number">96</td><td>    <span class="k1">int</span> curTime      <span class="k3">=</span> timerCounter<span class="k2">;</span></td></tr><tr><td class="number">97</td><td>    <span class="k1">int</span> needsRefresh <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">98</td><td>    </td></tr><tr><td class="number">99</td><td>    <span class="k1">while</span> <span class="k2">(</span>timerCounter <span class="k3">&lt;</span> targetTime <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">100</td><td>        <span class="k1">if</span> <span class="k2">(</span>curTime <span class="k3">&lt;</span><span class="k3">=</span>timerCounter<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">101</td><td>            percent <span class="k3">=</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span> <span class="k2">(</span>ticks <span class="k3">-</span> <span class="k2">(</span>targetTime <span class="k3">-</span> curTime<span class="k2">)</span><span class="k2">)</span> <span class="k3">/</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span> ticks<span class="k2">;</span></td></tr><tr><td class="number">102</td><td>            </td></tr><tr><td class="number">103</td><td>            curTime      <span class="k3">=</span> timerCounter<span class="k3">+</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>            needsRefresh <span class="k3">=</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">105</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">106</td><td>        <span class="k1">if</span> <span class="k2">(</span>needsRefresh<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">107</td><td>            needsRefresh <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">108</td><td>            fade-&gt;crossfade<span class="k2">(</span>from, to, doubleBuffer, percent<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>            <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>doubleBuffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, doubleBuffer-&gt;w, doubleBuffer-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">111</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">112</td><td><span class="k2">}</span></td></tr><tr><td class="number">113</td><td>&#160;</td></tr><tr><td class="number">114</td><td>&#160;</td></tr><tr><td class="number">115</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>init<span class="k2">(</span>argc <span class="k3">&gt;</span> <span class="n">1</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">118</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Unable to init"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">120</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">121</td><td>    </td></tr><tr><td class="number">122</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">123</td><td>    </td></tr><tr><td class="number">124</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>one, <span class="k3">*</span>two<span class="k2">;</span></td></tr><tr><td class="number">125</td><td>    one <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"image1.tga"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>    two <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"image2.tga"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>&#160;</td></tr><tr><td class="number">128</td><td>    <span class="k1">if</span> <span class="k2">(</span>one <span class="k3">=</span><span class="k3">=</span> NULL <span class="k3">|</span><span class="k3">|</span> two <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">129</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Please place two images (image1.tga and image2.tga) in this directory"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">130</td><td>        <span class="k1">return</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">131</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">132</td><td>  </td></tr><tr><td class="number">133</td><td>    <span class="k1">const</span> <span class="k1">int</span> COUNT <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">134</td><td>    Fade <span class="k3">*</span>fader<span class="k2">[</span>COUNT<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span></td></tr><tr><td class="number">135</td><td>        <span class="k1">new</span> StripeFade<span class="k2">(</span><span class="n">10</span><span class="k2">)</span>,        </td></tr><tr><td class="number">136</td><td>        <span class="k1">new</span> StretchFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">137</td><td>        <span class="k1">new</span> StripeFade<span class="k2">(</span><span class="n">40</span><span class="k2">)</span>,</td></tr><tr><td class="number">138</td><td>        <span class="k1">new</span> ScrollFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">139</td><td>        <span class="k1">new</span> SymmetricStripeFade<span class="k2">(</span><span class="n">20</span><span class="k2">)</span>,</td></tr><tr><td class="number">140</td><td>        <span class="k1">new</span> DoorFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">141</td><td>        <span class="k1">new</span> SymmetricStripeFade<span class="k2">(</span><span class="n">4</span><span class="k2">)</span>,</td></tr><tr><td class="number">142</td><td>        <span class="k1">new</span> BlindsFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">143</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">144</td><td>    </td></tr><tr><td class="number">145</td><td>    <span class="k1">const</span> <span class="k1">int</span> CROSS_FADE_COUNT <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">146</td><td>    CrossFade <span class="k3">*</span>crossFader<span class="k2">[</span>CROSS_FADE_COUNT<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span></td></tr><tr><td class="number">147</td><td>        <span class="k1">new</span> AlphaBlending<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">148</td><td>        <span class="k1">new</span> MosaicCrossFade<span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span>,</td></tr><tr><td class="number">149</td><td>        <span class="k1">new</span> DoorCrossFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">150</td><td>        <span class="k1">new</span> RollOut<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">151</td><td>        <span class="k1">new</span> DoorZoomCrossFade<span class="k2">(</span><span class="k2">)</span>,</td></tr><tr><td class="number">152</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">153</td><td>    </td></tr><tr><td class="number">154</td><td>    </td></tr><tr><td class="number">155</td><td>    <span class="k1">int</span> a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">156</td><td>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">157</td><td>        fade<span class="k2">(</span>one, two, fader<span class="k2">[</span>a<span class="k2">]</span>, <span class="n">90</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>        <span class="k3">+</span><span class="k3">+</span>a<span class="k2">;</span></td></tr><tr><td class="number">159</td><td>        a%<span class="k3">=</span>COUNT<span class="k2">;</span></td></tr><tr><td class="number">160</td><td>        fade<span class="k2">(</span>two, one, fader<span class="k2">[</span>a<span class="k2">]</span>, <span class="n">90</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">161</td><td>        <span class="k3">+</span><span class="k3">+</span>a<span class="k2">;</span></td></tr><tr><td class="number">162</td><td>        a%<span class="k3">=</span>COUNT<span class="k2">;</span></td></tr><tr><td class="number">163</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">164</td><td>    <span class="c">// Make sure ESC is released</span></td></tr><tr><td class="number">165</td><td>    <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">166</td><td>    a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">167</td><td>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">168</td><td>        crossfade<span class="k2">(</span>one, two, crossFader<span class="k2">[</span>a<span class="k2">]</span>, <span class="n">190</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">169</td><td>        <span class="k3">+</span><span class="k3">+</span>a<span class="k2">;</span></td></tr><tr><td class="number">170</td><td>        a%<span class="k3">=</span>CROSS_FADE_COUNT<span class="k2">;</span></td></tr><tr><td class="number">171</td><td>        crossfade<span class="k2">(</span>two, one, crossFader<span class="k2">[</span>a<span class="k2">]</span>, <span class="n">190</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">172</td><td>        <span class="k3">+</span><span class="k3">+</span>a<span class="k2">;</span></td></tr><tr><td class="number">173</td><td>        a%<span class="k3">=</span>CROSS_FADE_COUNT<span class="k2">;</span></td></tr><tr><td class="number">174</td><td>    <span class="k2">}</span>    </td></tr><tr><td class="number">175</td><td>        </td></tr><tr><td class="number">176</td><td>    done<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">177</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">178</td><td><span class="k2">}</span></td></tr><tr><td class="number">179</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

@Miran: Thanks!</p><p>EDIT: Changed parts of the code and removed one example. The example listed will show all effects.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Mon, 21 May 2007 22:13:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried your examples but they crashed, I am using Dev-C++ and alleg42, also it seems sprintf is no longer available.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Tue, 22 May 2007 00:29:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well,the crashing could be due to no images with the given name in the same directory  (image1.tga, image2.tga).<br />Regarding sprintf: chances are that allegro no longer includes &lt;stdio.h&gt;. I&#39;ll add the include to the examples and I&#39;ll check if the images can be loaded.</p><p>Edit:<br />You can download the compiled example program and 2 example images here:<br /><a href="http://www.spellcaster.de/fade.zip">http://www.spellcaster.de/fade.zip</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Tue, 22 May 2007 00:38:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes that was the problem, I was using 2 pcx files, I did not see you were using .tga files! <br />Now it works nicely!</p><p>[EDIT]<br />Really nice! <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /> I am going to use the alphablending fx in my project! but I&#39;ll replace draw_trans_sprite with Fladimir&#39;s alpha blending routines.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Tue, 22 May 2007 01:27:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, guess that&#39;s the problem if you simply copy&#39;n&#39;paste old code. I just recompiled that code with warnings enabled and almost fell out of my chair in shame.</p><p>I also realized that I can&#39;t recall all the libs and linking order to link allegro statically. Finally, it seems that this does the job:</p><p>-lalleg_s -lgdi32 -ldxguid -lole32 -ldinput -lddraw -lwinmm -ldsound </p><p>(This is the point where somebody links to the documentation showing me that this info is well documented and easily available <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Tue, 22 May 2007 01:36:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Sounds like you needed something like Easy Allegro.. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Tue, 22 May 2007 02:56:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Those are good, but they fade from one image to another. I&#39;ve got a tile based engine with sprites on top of it. What I was after was some tips on ways of postprocessing the doublebuffer, which emulates a transition effect. That is, everything gets drawn to the doublebuffer, then if the engine recieves a message to do a transition effect (from an event telling it to go to the next level or something) it will increment the effect a little.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (The Master)</author>
		<pubDate>Tue, 22 May 2007 05:15:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, the double buffer is just an image.</p><p>Let&#39;s say your engine renders your start scene into buffer1. Let&#39;s also assume that your engine renders the second scene into buffer2. No, all you need to do is to pass these two buffers to the fade method. As you can see, it takes two BITMAPs and a percentage value.<br />This allows you to fade both static images or animated graphics fresh from your engine.</p><p>But I do hope you don&#39;t expect me to create a RPG engine just to demonstrate how you could fade two scenes by using the code above <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Tue, 22 May 2007 09:43:04 +0000</pubDate>
	</item>
</rss>
