<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>The make Allegro better project</title>
		<link>http://www.allegro.cc/forums/view/587133</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 29 Aug 2006 03:44:58 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Id like to try an experiment. I think the Allegro source could be refactored somewhat and made more elegant so I propose that the community rewrites portions of Allegro. I( or anyone really ) will post a function or other snippet of code from Allegro and people can modify it in any way as long as its &quot;better&quot;, be it by choosing better variable names or simply adding useful comments. For now the code will come from 4.2 since 4.3 isn&#39;t ready for mass consumption.</p><p>After people agree on the changes it will be sent to the Allegro developers list and if approved will be committed.</p><p>And if it needs justification I would say there are two main benefits.<br />1) Some parts of Allegro are extremely hard to follow<br />2) More people would become more intimate with the internals to Allegro</p><p>Ill start off with the gourad sprite routine in gsprite.c. I havent yet refactored this one, Ill post some modifications later on.
</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="c">/* draw_gouraud_sprite:</span></td></tr><tr><td class="number">2</td><td><span class="c"> *  Draws a lit or tinted sprite, interpolating the four corner colors</span></td></tr><tr><td class="number">3</td><td><span class="c"> *  over the surface of the image.</span></td></tr><tr><td class="number">4</td><td><span class="c"> */</span></td></tr><tr><td class="number">5</td><td><span class="k1">void</span> _soft_draw_gouraud_sprite<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> c1, <span class="k1">int</span> c2, <span class="k1">int</span> c3, <span class="k1">int</span> c4<span class="k2">)</span></td></tr><tr><td class="number">6</td><td><span class="k2">{</span></td></tr><tr><td class="number">7</td><td>   <a href="http://www.allegro.cc/manual/fixed" target="_blank"><span class="a">fixed</span></a> mc1, mc2, mh<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>   <a href="http://www.allegro.cc/manual/fixed" target="_blank"><span class="a">fixed</span></a> lc, rc, hc<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>   <span class="k1">int</span> x1 <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>   <span class="k1">int</span> y1 <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>   <span class="k1">int</span> x2 <span class="k3">=</span> x <span class="k3">+</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>   <span class="k1">int</span> y2 <span class="k3">=</span> y <span class="k3">+</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   <span class="k1">int</span> i, j<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>   <span class="k1">int</span> pixel<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>   uintptr_t addr<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>bmp-&gt;vtable-&gt;color_depth <span class="k3">=</span><span class="k3">=</span> sprite-&gt;vtable-&gt;color_depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>   bmp_select<span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>   <span class="c">/* set up vertical gradients for left and right sides */</span></td></tr><tr><td class="number">24</td><td>   mc1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>c4 <span class="k3">-</span> c1<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>   mc2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>c3 <span class="k3">-</span> c2<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>   lc <span class="k3">=</span> <a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>c1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>   rc <span class="k3">=</span> <a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>c2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>   <span class="c">/* check clipping */</span></td></tr><tr><td class="number">30</td><td>   <span class="k1">if</span> <span class="k2">(</span>bmp-&gt;clip<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">31</td><td>      <span class="k1">if</span> <span class="k2">(</span>y1 <span class="k3">&lt;</span> bmp-&gt;ct<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">32</td><td>   lc <span class="k3">+</span><span class="k3">=</span> mc1 <span class="k3">*</span> <span class="k2">(</span>bmp-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>   rc <span class="k3">+</span><span class="k3">=</span> mc2 <span class="k3">*</span> <span class="k2">(</span>bmp-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>   y1 <span class="k3">=</span> bmp-&gt;ct<span class="k2">;</span></td></tr><tr><td class="number">35</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">36</td><td>      y2 <span class="k3">=</span> MIN<span class="k2">(</span>y2, bmp-&gt;cb<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      x1 <span class="k3">=</span> MAX<span class="k2">(</span>x1, bmp-&gt;cl<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>      x2 <span class="k3">=</span> MIN<span class="k2">(</span>x2, bmp-&gt;cr<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>   <span class="k1">for</span> <span class="k2">(</span>j<span class="k3">=</span>y1<span class="k2">;</span> j<span class="k3">&lt;</span>y2<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>      <span class="c">/* set up horizontal gradient for line */</span></td></tr><tr><td class="number">43</td><td>      mh <span class="k3">=</span> <span class="k2">(</span>rc <span class="k3">-</span> lc<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">44</td><td>      hc <span class="k3">=</span> lc<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>      <span class="c">/* more clip checking */</span></td></tr><tr><td class="number">47</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>bmp-&gt;clip<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>x <span class="k3">&lt;</span> bmp-&gt;cl<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td>   hc <span class="k3">+</span><span class="k3">=</span> mh <span class="k3">*</span> <span class="k2">(</span>bmp-&gt;cl <span class="k3">-</span> x<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>   <span class="p">#ifdef GFX_HAS_VGA</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>      <span class="c">/* modex version */</span></td></tr><tr><td class="number">53</td><td>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/is_planar_bitmap" target="_blank"><span class="a">is_planar_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>   addr <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span><span class="k2">)</span>bmp-&gt;line<span class="k2">[</span>j<span class="k2">]</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> x1<span class="k2">;</span></td></tr><tr><td class="number">55</td><td>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>      <span class="k1">if</span> <span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">57</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_610.html" target="_blank">outportw</a><span class="k2">(</span><span class="n">0x3C4</span>, <span class="k2">(</span><span class="n">0x100</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="k2">(</span>i<span class="k3">&amp;</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k3">|</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>         pixel <span class="k3">=</span> color_map-&gt;data<span class="k2">[</span><a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>         bmp_write8<span class="k2">(</span>addr&gt;&gt;2, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">61</td><td>      hc <span class="k3">+</span><span class="k3">=</span> mh<span class="k2">;</span></td></tr><tr><td class="number">62</td><td>      addr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">65</td><td>      <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>   <span class="p">#else</span></td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td>   <span class="c">/* draw routines for all linear modes */</span></td></tr><tr><td class="number">74</td><td>   <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>   <span class="p">#ifdef ALLEGRO_COLOR8</span></td></tr><tr><td class="number">77</td><td>&#160;</td></tr><tr><td class="number">78</td><td>      <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">79</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bmp, j<span class="k2">)</span> <span class="k3">+</span> x1<span class="k2">;</span></td></tr><tr><td class="number">80</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>      <span class="k1">if</span> <span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">82</td><td>         pixel <span class="k3">=</span> color_map-&gt;data<span class="k2">[</span><a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>         bmp_write8<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">85</td><td>      hc <span class="k3">+</span><span class="k3">=</span> mh<span class="k2">;</span></td></tr><tr><td class="number">86</td><td>      addr<span class="k3">+</span><span class="k3">+</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>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>&#160;</td></tr><tr><td class="number">90</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">91</td><td>&#160;</td></tr><tr><td class="number">92</td><td>   <span class="p">#ifdef ALLEGRO_COLOR16</span></td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td>      <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">95</td><td>      <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">96</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bmp, j<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">98</td><td>      pixel <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">short</span> <span class="k3">*</span><span class="k2">)</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> bmp-&gt;vtable-&gt;mask_color<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><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bmp<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">16</span><span class="k2">)</span></td></tr><tr><td class="number">101</td><td>      pixel <span class="k3">=</span> _blender_func16<span class="k2">(</span>pixel, _blender_col_16, <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">102</td><td>         <span class="k1">else</span></td></tr><tr><td class="number">103</td><td>      pixel <span class="k3">=</span> _blender_func15<span class="k2">(</span>pixel, _blender_col_15, <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>         bmp_write16<span class="k2">(</span>addr, pixel<span class="k2">)</span><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>      hc <span class="k3">+</span><span class="k3">=</span> mh<span class="k2">;</span></td></tr><tr><td class="number">107</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">108</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">109</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>&#160;</td></tr><tr><td class="number">111</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">112</td><td>&#160;</td></tr><tr><td class="number">113</td><td>   <span class="p">#ifdef ALLEGRO_COLOR24</span></td></tr><tr><td class="number">114</td><td>&#160;</td></tr><tr><td class="number">115</td><td>      <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">116</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bmp, j<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">117</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">118</td><td>      bmp_select<span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>      pixel <span class="k3">=</span> bmp_read24<span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span><span class="k2">)</span><span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span> <span class="k3">+</span> <span class="k2">(</span>i-x<span class="k2">)</span><span class="k3">*</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">120</td><td>      bmp_select<span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/MASK_COLOR_24" target="_blank"><span class="a">MASK_COLOR_24</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">122</td><td>         pixel <span class="k3">=</span> _blender_func24<span class="k2">(</span>pixel, _blender_col_24, <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">123</td><td>         bmp_write24<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">124</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">125</td><td>      hc <span class="k3">+</span><span class="k3">=</span> mh<span class="k2">;</span></td></tr><tr><td class="number">126</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">128</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td>&#160;</td></tr><tr><td class="number">130</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">131</td><td>&#160;</td></tr><tr><td class="number">132</td><td>   <span class="p">#ifdef ALLEGRO_COLOR32</span></td></tr><tr><td class="number">133</td><td>&#160;</td></tr><tr><td class="number">134</td><td>      <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">135</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bmp, j<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">136</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">137</td><td>      pixel <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span> <span class="k3">*</span><span class="k2">)</span>sprite-&gt;line<span class="k2">[</span>j-y<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>i-x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/MASK_COLOR_32" target="_blank"><span class="a">MASK_COLOR_32</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">139</td><td>         pixel <span class="k3">=</span> _blender_func32<span class="k2">(</span>pixel, _blender_col_32, <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>hc<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">140</td><td>         bmp_write32<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">141</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">142</td><td>      hc <span class="k3">+</span><span class="k3">=</span> mh<span class="k2">;</span></td></tr><tr><td class="number">143</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">144</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">145</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">146</td><td>&#160;</td></tr><tr><td class="number">147</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">148</td><td>&#160;</td></tr><tr><td class="number">149</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">150</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">151</td><td>&#160;</td></tr><tr><td class="number">152</td><td>      lc <span class="k3">+</span><span class="k3">=</span> mc1<span class="k2">;</span></td></tr><tr><td class="number">153</td><td>      rc <span class="k3">+</span><span class="k3">=</span> mc2<span class="k2">;</span></td></tr><tr><td class="number">154</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">155</td><td>&#160;</td></tr><tr><td class="number">156</td><td>   <a href="http://www.allegro.cc/manual/bmp_unwrite_line" target="_blank"><span class="a">bmp_unwrite_line</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">157</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Sun, 20 Aug 2006 23:41:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I just thought that this would be a good time to post a link to the <a href="http://www.allegro.cc/manual/miscellaneous/the-allegro-hackers-guide/">Allegro coding standards</a> (it&#39;s the <i>&#39;coding style&#39;</i> section) so that we know how to rename the variables/functions, and how to format the code, etc.</p><p>AE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Andrei Ellman)</author>
		<pubDate>Mon, 21 Aug 2006 00:08:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Note that we do not follow the tab standard described there anymore: Any new code should not contain any tab characters.</p><p>About the original idea, it sounds good to me. Also, improving documentation of how Allegro works internaly could be a good idea.. like a description how drivers work together, and how single drivers (e.g. DirectX) actually work.</p><p>Hm, and not sure how well this all can work for 4.3 as of yet, as some very base structures like AL_SYSTEM_DRIVER, AL_DISPLAY or AL_BITMAP are not implemented yet.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Mon, 21 Aug 2006 00:16:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Hm, and not sure how well this all can work for 4.3 as of yet, as some very base structures like AL_SYSTEM_DRIVER, AL_DISPLAY or AL_BITMAP are not implemented yet.
</p></div></div><p>
Thats why I think we should focus on 4.2 for now and only the parts of the code that can be used in 4.3 so the work isnt wasted once 4.2 isnt worked on anymore.</p><p>[edit]<br />Here is my first modification. Mostly I just renamed variables and added some comments at the top. I noticed that the old &#39;x&#39; variable was being referenced in the code but since x1 = x I thought x1 should have been used instead so the parameter x is now x_ so we can be sure its not used accidentally. The same for y.</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="c">/* draw_gouraud_sprite:</span></td></tr><tr><td class="number">2</td><td><span class="c"> *  Draws a lit or tinted sprite, interpolating the four corner colors</span></td></tr><tr><td class="number">3</td><td><span class="c"> *  over the surface of the image.</span></td></tr><tr><td class="number">4</td><td><span class="c"> *  destination - BITMAP where the sprite will be drawn to</span></td></tr><tr><td class="number">5</td><td><span class="c"> *  sprite - BITMAP of the sprite to draw</span></td></tr><tr><td class="number">6</td><td><span class="c"> *  x_ - upper left hand x coordinate on destination</span></td></tr><tr><td class="number">7</td><td><span class="c"> *  y_ - upper left hand y coordinate on destination</span></td></tr><tr><td class="number">8</td><td><span class="c"> *  color1 - upper left hand color</span></td></tr><tr><td class="number">9</td><td><span class="c"> *  color2 - upper right hand color</span></td></tr><tr><td class="number">10</td><td><span class="c"> *  color3 - lower left hand color</span></td></tr><tr><td class="number">11</td><td><span class="c"> *  color4 - lower right hand color</span></td></tr><tr><td class="number">12</td><td><span class="c"> */</span></td></tr><tr><td class="number">13</td><td><span class="k1">void</span> _soft_draw_gouraud_sprite<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> destination, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite, <span class="k1">int</span> x_, <span class="k1">int</span> y_, <span class="k1">int</span> color1, <span class="k1">int</span> color2, <span class="k1">int</span> color3, <span class="k1">int</span> color4<span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>   <span class="k1">double</span> gradient1<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>   <span class="k1">double</span> gradient2<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>   <span class="k1">double</span> left_dx<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   <span class="k1">double</span> right_dx<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>   <span class="k1">int</span> x1 <span class="k3">=</span> x_<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>   <span class="k1">int</span> y1 <span class="k3">=</span> y_<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>   <span class="k1">int</span> x2 <span class="k3">=</span> x_ <span class="k3">+</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>   <span class="k1">int</span> y2 <span class="k3">=</span> y_ <span class="k3">+</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   <span class="k1">int</span> i, current_y<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>   <span class="k1">int</span> pixel<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>   uintptr_t addr<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>destination-&gt;vtable-&gt;color_depth <span class="k3">=</span><span class="k3">=</span> sprite-&gt;vtable-&gt;color_depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>   bmp_select<span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>   <span class="c">/* set up vertical gradients for left and right sides */</span></td></tr><tr><td class="number">34</td><td>   gradient1 <span class="k3">=</span> <span class="k2">(</span>color4 <span class="k3">-</span> color1<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">35</td><td>   gradient2 <span class="k3">=</span> <span class="k2">(</span>color3 <span class="k3">-</span> color2<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">36</td><td>   left_dx <span class="k3">=</span> color1<span class="k2">;</span></td></tr><tr><td class="number">37</td><td>   right_dx <span class="k3">=</span> color2<span class="k2">;</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>   <span class="c">/* check clipping */</span></td></tr><tr><td class="number">40</td><td>   <span class="k1">if</span> <span class="k2">(</span>destination-&gt;clip<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>      <span class="k1">if</span> <span class="k2">(</span>y1 <span class="k3">&lt;</span> destination-&gt;ct<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>   left_dx <span class="k3">+</span><span class="k3">=</span> gradient1 <span class="k3">*</span> <span class="k2">(</span>destination-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>   right_dx <span class="k3">+</span><span class="k3">=</span> gradient2 <span class="k3">*</span> <span class="k2">(</span>destination-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>   y1 <span class="k3">=</span> destination-&gt;ct<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>      y2 <span class="k3">=</span> MIN<span class="k2">(</span>y2, destination-&gt;cb<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>      x1 <span class="k3">=</span> MAX<span class="k2">(</span>x1, destination-&gt;cl<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>      x2 <span class="k3">=</span> MIN<span class="k2">(</span>x2, destination-&gt;cr<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>   <span class="k1">for</span> <span class="k2">(</span>current_y<span class="k3">=</span>y1<span class="k2">;</span> current_y<span class="k3">&lt;</span>y2<span class="k2">;</span> current_y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>      <span class="c">/* set up horizontal gradient for line */</span></td></tr><tr><td class="number">53</td><td>      <span class="k1">double</span> horizontal_gradient <span class="k3">=</span> <span class="k2">(</span>right_dx <span class="k3">-</span> left_dx<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">54</td><td>      <span class="k1">double</span> color <span class="k3">=</span> left_dx<span class="k2">;</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>      <span class="c">/* more clip checking */</span></td></tr><tr><td class="number">57</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>destination-&gt;clip<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>x1 <span class="k3">&lt;</span> destination-&gt;cl<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">58</td><td>   color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient <span class="k3">*</span> <span class="k2">(</span>destination-&gt;cl <span class="k3">-</span> x1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>   <span class="p">#ifdef GFX_HAS_VGA</span></td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td>      <span class="c">/* modex version */</span></td></tr><tr><td class="number">64</td><td>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/is_planar_bitmap" target="_blank"><span class="a">is_planar_bitmap</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">65</td><td>   addr <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span><span class="k2">)</span>destination-&gt;line<span class="k2">[</span>current_y<span class="k2">]</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> x1<span class="k2">;</span></td></tr><tr><td class="number">66</td><td>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">67</td><td>      <span class="k1">if</span> <span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">68</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_610.html" target="_blank">outportw</a><span class="k2">(</span><span class="n">0x3C4</span>, <span class="k2">(</span><span class="n">0x100</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="k2">(</span>i<span class="k3">&amp;</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k3">|</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>         pixel <span class="k3">=</span> color_map-&gt;data<span class="k2">[</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color<span class="k2">]</span><span class="k2">[</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>         bmp_write8<span class="k2">(</span>addr&gt;&gt;2, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">72</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">73</td><td>      addr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">75</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>      <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">77</td><td>&#160;</td></tr><tr><td class="number">78</td><td>   <span class="p">#else</span></td></tr><tr><td class="number">79</td><td>&#160;</td></tr><tr><td class="number">80</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">83</td><td>&#160;</td></tr><tr><td class="number">84</td><td>   <span class="c">/* draw routines for all linear modes */</span></td></tr><tr><td class="number">85</td><td>   <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">86</td><td>&#160;</td></tr><tr><td class="number">87</td><td>   <span class="p">#ifdef ALLEGRO_COLOR8</span></td></tr><tr><td class="number">88</td><td>&#160;</td></tr><tr><td class="number">89</td><td>      <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">90</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>destination, current_y<span class="k2">)</span> <span class="k3">+</span> x1<span class="k2">;</span></td></tr><tr><td class="number">91</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">92</td><td>      <span class="k1">if</span> <span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">93</td><td>         pixel <span class="k3">=</span> color_map-&gt;data<span class="k2">[</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color<span class="k2">]</span><span class="k2">[</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>         bmp_write8<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">96</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">97</td><td>      addr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">98</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">99</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>&#160;</td></tr><tr><td class="number">101</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">102</td><td>&#160;</td></tr><tr><td class="number">103</td><td>   <span class="p">#ifdef ALLEGRO_COLOR16</span></td></tr><tr><td class="number">104</td><td>&#160;</td></tr><tr><td class="number">105</td><td>      <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">106</td><td>      <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">107</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>destination, current_y<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">108</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">109</td><td>      pixel <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">short</span> <span class="k3">*</span><span class="k2">)</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> destination-&gt;vtable-&gt;mask_color<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">111</td><td>         <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>destination<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">16</span><span class="k2">)</span></td></tr><tr><td class="number">112</td><td>      pixel <span class="k3">=</span> _blender_func16<span class="k2">(</span>pixel, _blender_col_16, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">113</td><td>         <span class="k1">else</span></td></tr><tr><td class="number">114</td><td>      pixel <span class="k3">=</span> _blender_func15<span class="k2">(</span>pixel, _blender_col_15, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>         bmp_write16<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">117</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">118</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">120</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>&#160;</td></tr><tr><td class="number">122</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">123</td><td>&#160;</td></tr><tr><td class="number">124</td><td>   <span class="p">#ifdef ALLEGRO_COLOR24</span></td></tr><tr><td class="number">125</td><td>&#160;</td></tr><tr><td class="number">126</td><td>      <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">127</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>destination, current_y<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">129</td><td>      bmp_select<span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">130</td><td>      pixel <span class="k3">=</span> bmp_read24<span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span><span class="k2">)</span><span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span> <span class="k3">+</span> <span class="k2">(</span>i-x1<span class="k2">)</span><span class="k3">*</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">131</td><td>      bmp_select<span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/MASK_COLOR_24" target="_blank"><span class="a">MASK_COLOR_24</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">133</td><td>         pixel <span class="k3">=</span> _blender_func24<span class="k2">(</span>pixel, _blender_col_24, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">134</td><td>         bmp_write24<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">135</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">136</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">137</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">139</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">140</td><td>&#160;</td></tr><tr><td class="number">141</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">142</td><td>&#160;</td></tr><tr><td class="number">143</td><td>   <span class="p">#ifdef ALLEGRO_COLOR32</span></td></tr><tr><td class="number">144</td><td>&#160;</td></tr><tr><td class="number">145</td><td>      <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">146</td><td>         addr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>destination, current_y<span class="k2">)</span> <span class="k3">+</span> x1<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">147</td><td>         <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">148</td><td>      pixel <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span> <span class="k3">*</span><span class="k2">)</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">149</td><td>      <span class="k1">if</span> <span class="k2">(</span>pixel <span class="k3">!</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/MASK_COLOR_32" target="_blank"><span class="a">MASK_COLOR_32</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">150</td><td>         pixel <span class="k3">=</span> _blender_func32<span class="k2">(</span>pixel, _blender_col_32, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">151</td><td>         bmp_write32<span class="k2">(</span>addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">152</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">153</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">154</td><td>      addr <span class="k3">+</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">155</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">156</td><td>         <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">157</td><td>&#160;</td></tr><tr><td class="number">158</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">159</td><td>&#160;</td></tr><tr><td class="number">160</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">161</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">162</td><td>&#160;</td></tr><tr><td class="number">163</td><td>      left_dx <span class="k3">+</span><span class="k3">=</span> gradient1<span class="k2">;</span></td></tr><tr><td class="number">164</td><td>      right_dx <span class="k3">+</span><span class="k3">=</span> gradient2<span class="k2">;</span></td></tr><tr><td class="number">165</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">166</td><td>&#160;</td></tr><tr><td class="number">167</td><td>   <a href="http://www.allegro.cc/manual/bmp_unwrite_line" target="_blank"><span class="a">bmp_unwrite_line</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">168</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Mon, 21 Aug 2006 00:20:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think this is a nice way to encourage more people to have a look at and work on Allegro.<br />I&#39;m not sure I fully agree that cosmetic rewrites are nescessarily a good thing, because it will clutter the change log and make it harder to go back to older revisions (which is why tab characters haven&#39;t been purged in one big sweep a while back). That doesn&#39;t nescessarily involve comment blocks or top line comments though. Anyway, we&#39;ll see how it goes, I suppose...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 21 Aug 2006 00:52:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am all for getting more people involved with Allegro, but this is silly.  Work on 4.3 instead.  There&#39;s plenty to do.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 21 Aug 2006 04:54:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>For the changelog a single line description would suffice:</p><ul><li><p>The following functions were changed cosmetically: foo, bar, baz</p></li></ul><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I am all for getting more people involved with Allegro, but this is silly. Work on 4.3 instead. There&#39;s plenty to do.
</p></div></div><p>
4.3 is still under design and while it would be great to have more opinions on the design thats not something many people can readily contribute to simply because its fairly difficult and you already have to have a deep understanding of Allegro to do so.</p><p>I thought people would be interested to simply rewrite code so that it looks better and potentially spot any bugs. So far no one has done so, maybe its too early or its Sunday, I dont know.</p><p>Shouldnt Allegro strive to be perfect in every way?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Mon, 21 Aug 2006 06:33:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><ul><li><p>The following functions were changed cosmetically: foo, bar, baz
</p></li></ul></div></div><p>

Evert is talking about tracing when lines were last changed, e.g. using `svn annotate&#39;. Large scale cosmetic changes mess that up for dubious value.</p><p>Btw, it takes far too much energy on this forum to check what changes have been made, and whether anything was broken.  All I can tell is that you&#39;ve renamed some variables and added whitespace where there shouldn&#39;t be.</p><div class="source-code snippet"><div class="inner"><pre>         pixel <span class="k3">=</span> _blender_func24<span class="k2">(</span>pixel, _blender_col_24, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Patching, verifying and committing will take even more energy.  Count me out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 21 Aug 2006 06:49:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well heres my last attempt for the night. Unfortunately its about 5 times slower than the current version, mostly because all the macros have been wrapped into functions. Of course I wouldnt want to slow down any functions so if there are any ideas how to speed this generic version up Id appreciate it.</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="c">/* select a line from the bitmap for direct memory access</span></td></tr><tr><td class="number">2</td><td><span class="c"> */</span></td></tr><tr><td class="number">3</td><td><span class="k1">static</span> uintptr_t get_line<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap, <span class="k1">int</span> y, <span class="k1">int</span> x <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">6</td><td>      <span class="k1">return</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bitmap, y<span class="k2">)</span> <span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">9</td><td>      <span class="k1">return</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bitmap, y<span class="k2">)</span> <span class="k3">+</span> x<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">return</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bitmap, y<span class="k2">)</span> <span class="k3">+</span> x<span class="k3">*</span><span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">13</td><td>      <span class="k1">return</span> <a href="http://www.allegro.cc/manual/bmp_write_line" target="_blank"><span class="a">bmp_write_line</span></a><span class="k2">(</span>bitmap, y<span class="k2">)</span> <span class="k3">+</span> x<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    default:</td></tr><tr><td class="number">15</td><td>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="c">/* read one pixel from the line pointer</span></td></tr><tr><td class="number">20</td><td><span class="c"> */</span></td></tr><tr><td class="number">21</td><td><span class="k1">static</span> <span class="k1">int</span> read_pixel<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap, <span class="k1">int</span> y, <span class="k1">int</span> x <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">24</td><td>         <span class="k1">return</span> bitmap-&gt;line<span class="k2">[</span>y<span class="k2">]</span><span class="k2">[</span>x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">26</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">27</td><td>         <span class="k1">return</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">short</span> <span class="k3">*</span><span class="k2">)</span>bitmap-&gt;line<span class="k2">[</span>y<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">29</td><td>         <span class="k1">return</span> bmp_read24<span class="k2">(</span><span class="k2">(</span>uintptr_t<span class="k2">)</span><span class="k2">(</span>bitmap-&gt;line<span class="k2">[</span>y<span class="k2">]</span> <span class="k3">+</span> x<span class="k3">*</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">31</td><td>         <span class="k1">return</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span> <span class="k3">*</span><span class="k2">)</span>bitmap-&gt;line<span class="k2">[</span>y<span class="k2">]</span><span class="k2">)</span><span class="k2">[</span>x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    default:</td></tr><tr><td class="number">33</td><td>           <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">35</td><td><span class="k2">}</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td><span class="k1">static</span> <span class="k1">void</span> write_pixel<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap, uintptr_t address, <span class="k1">int</span> pixel <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">40</td><td>      bmp_write8<span class="k2">(</span>address, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">44</td><td>      bmp_write16<span class="k2">(</span>address, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">47</td><td>      bmp_write24<span class="k2">(</span>address, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">49</td><td>      bmp_write32<span class="k2">(</span>address, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">51</td><td><span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td><span class="c">/* return the size of 1 pixel in the line pointer</span></td></tr><tr><td class="number">54</td><td><span class="c"> */</span></td></tr><tr><td class="number">55</td><td><span class="k1">static</span> <span class="k1">int</span> get_address_size<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">56</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">57</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">58</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">61</td><td>      <span class="k1">return</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">short</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">63</td><td>      <span class="k1">return</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">65</td><td>      <span class="k1">return</span> <span class="k1">sizeof</span><span class="k2">(</span>int32_t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    default:</td></tr><tr><td class="number">67</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">69</td><td><span class="k2">}</span></td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td><span class="c">/* this blender returns the pixel original value</span></td></tr><tr><td class="number">72</td><td><span class="c"> */</span></td></tr><tr><td class="number">73</td><td><span class="k1">static</span> <span class="k1">unsigned</span> <span class="k1">long</span> blender_color_map<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">long</span> x, <span class="k1">unsigned</span> <span class="k1">long</span> y, <span class="k1">unsigned</span> <span class="k1">long</span> n <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">74</td><td>  <span class="k1">return</span> color_map-&gt;data<span class="k2">[</span>n<span class="k2">]</span><span class="k2">[</span>x<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td><span class="k2">}</span></td></tr><tr><td class="number">76</td><td>&#160;</td></tr><tr><td class="number">77</td><td><span class="c">/* find the correct blender for the given color depth</span></td></tr><tr><td class="number">78</td><td><span class="c"> */</span></td></tr><tr><td class="number">79</td><td><span class="k1">static</span> BLENDER_FUNC get_blender<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">80</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span></td></tr><tr><td class="number">82</td><td>      <span class="k1">return</span> blender_color_map<span class="k2">;</span></td></tr><tr><td class="number">83</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span></td></tr><tr><td class="number">84</td><td>      <span class="k1">return</span> _blender_func15<span class="k2">;</span></td></tr><tr><td class="number">85</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span></td></tr><tr><td class="number">86</td><td>      <span class="k1">return</span> _blender_func16<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span></td></tr><tr><td class="number">88</td><td>      <span class="k1">return</span> _blender_func24<span class="k2">;</span></td></tr><tr><td class="number">89</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span></td></tr><tr><td class="number">90</td><td>      <span class="k1">return</span> _blender_func32<span class="k2">;</span></td></tr><tr><td class="number">91</td><td>    default:</td></tr><tr><td class="number">92</td><td>      <span class="k1">return</span> blender_color_map<span class="k2">;</span></td></tr><tr><td class="number">93</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">94</td><td><span class="k2">}</span></td></tr><tr><td class="number">95</td><td>&#160;</td></tr><tr><td class="number">96</td><td><span class="k1">static</span> <span class="k1">int</span> get_blender_color<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> bitmap <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">97</td><td>  <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/bitmap_color_depth" target="_blank"><span class="a">bitmap_color_depth</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">98</td><td>    <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span> <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>    <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span> <span class="k1">return</span> _blender_col_15<span class="k2">;</span></td></tr><tr><td class="number">100</td><td>    <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span> <span class="k1">return</span> _blender_col_16<span class="k2">;</span></td></tr><tr><td class="number">101</td><td>    <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span> <span class="k1">return</span> _blender_col_24<span class="k2">;</span></td></tr><tr><td class="number">102</td><td>    <span class="k1">case</span> <span class="n">32</span><span class="k2">:</span> <span class="k1">return</span> _blender_col_32<span class="k2">;</span></td></tr><tr><td class="number">103</td><td>    default: <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>  <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>&#160;</td></tr><tr><td class="number">107</td><td><span class="c">/* generic method for drawing one line of a gouraud shaded sprite</span></td></tr><tr><td class="number">108</td><td><span class="c"> */</span></td></tr><tr><td class="number">109</td><td><span class="k1">static</span> <span class="k1">void</span> do_gouraud_line<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> destination, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> sprite, <span class="k1">int</span> dest_y, <span class="k1">int</span> sprite_y, <span class="k1">int</span> x1, <span class="k1">int</span> x2, <span class="k1">double</span> color, <span class="k1">double</span> horizontal_gradient <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">110</td><td>  uintptr_t addr <span class="k3">=</span> get_line<span class="k2">(</span> destination, dest_y, x1 <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">111</td><td>  <span class="k1">int</span> address_size <span class="k3">=</span> get_address_size<span class="k2">(</span> destination <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">112</td><td>  <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">113</td><td>  <span class="k1">int</span> pixel<span class="k2">;</span></td></tr><tr><td class="number">114</td><td>  BLENDER_FUNC blender <span class="k3">=</span> get_blender<span class="k2">(</span> destination <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>  <span class="k1">int</span> blender_color <span class="k3">=</span> get_blender_color<span class="k2">(</span> destination <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>  <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">117</td><td>    bmp_select<span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">118</td><td>    pixel <span class="k3">=</span> read_pixel<span class="k2">(</span>sprite,sprite_y,i-x1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>    <span class="k1">if</span> <span class="k2">(</span> pixel <span class="k3">!</span><span class="k3">=</span> destination-&gt;vtable-&gt;mask_color <span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>      pixel <span class="k3">=</span> blender<span class="k2">(</span>pixel, blender_color, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>      bmp_select<span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">122</td><td>      write_pixel<span class="k2">(</span>destination, addr, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">123</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">124</td><td>    color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">125</td><td>    addr <span class="k3">+</span><span class="k3">=</span> address_size<span class="k2">;</span></td></tr><tr><td class="number">126</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">127</td><td><span class="k2">}</span></td></tr><tr><td class="number">128</td><td>&#160;</td></tr><tr><td class="number">129</td><td><span class="c">/* draw_gouraud_sprite:</span></td></tr><tr><td class="number">130</td><td><span class="c"> *  Draws a lit or tinted sprite, interpolating the four corner colors</span></td></tr><tr><td class="number">131</td><td><span class="c"> *  over the surface of the image.</span></td></tr><tr><td class="number">132</td><td><span class="c"> *  destination - BITMAP where the sprite will be drawn to</span></td></tr><tr><td class="number">133</td><td><span class="c"> *  sprite - BITMAP of the sprite to draw</span></td></tr><tr><td class="number">134</td><td><span class="c"> *  x_ - upper left hand x coordinate on destination</span></td></tr><tr><td class="number">135</td><td><span class="c"> *  y_ - upper left hand y coordinate on destination</span></td></tr><tr><td class="number">136</td><td><span class="c"> *  color1 - upper left hand color</span></td></tr><tr><td class="number">137</td><td><span class="c"> *  color2 - upper right hand color</span></td></tr><tr><td class="number">138</td><td><span class="c"> *  color3 - lower left hand color</span></td></tr><tr><td class="number">139</td><td><span class="c"> *  color4 - lower right hand color</span></td></tr><tr><td class="number">140</td><td><span class="c"> */</span></td></tr><tr><td class="number">141</td><td><span class="k1">void</span> _soft_draw_gouraud_sprite<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> destination, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite, <span class="k1">int</span> x_, <span class="k1">int</span> y_, <span class="k1">int</span> color1, <span class="k1">int</span> color2, <span class="k1">int</span> color3, <span class="k1">int</span> color4<span class="k2">)</span></td></tr><tr><td class="number">142</td><td><span class="k2">{</span></td></tr><tr><td class="number">143</td><td>   <span class="k1">double</span> gradient1<span class="k2">;</span></td></tr><tr><td class="number">144</td><td>   <span class="k1">double</span> gradient2<span class="k2">;</span></td></tr><tr><td class="number">145</td><td>   <span class="k1">double</span> left_dx<span class="k2">;</span></td></tr><tr><td class="number">146</td><td>   <span class="k1">double</span> right_dx<span class="k2">;</span></td></tr><tr><td class="number">147</td><td>   <span class="k1">int</span> x1 <span class="k3">=</span> x_<span class="k2">;</span></td></tr><tr><td class="number">148</td><td>   <span class="k1">int</span> y1 <span class="k3">=</span> y_<span class="k2">;</span></td></tr><tr><td class="number">149</td><td>   <span class="k1">int</span> x2 <span class="k3">=</span> x_ <span class="k3">+</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">150</td><td>   <span class="k1">int</span> y2 <span class="k3">=</span> y_ <span class="k3">+</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">151</td><td>   <span class="k1">int</span> i, current_y<span class="k2">;</span></td></tr><tr><td class="number">152</td><td>   <span class="k1">int</span> pixel<span class="k2">;</span></td></tr><tr><td class="number">153</td><td>   uintptr_t addr<span class="k2">;</span></td></tr><tr><td class="number">154</td><td>&#160;</td></tr><tr><td class="number">155</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">156</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">157</td><td>   <a href="http://www.allegro.cc/manual/ASSERT" target="_blank"><span class="a">ASSERT</span></a><span class="k2">(</span>destination-&gt;vtable-&gt;color_depth <span class="k3">=</span><span class="k3">=</span> sprite-&gt;vtable-&gt;color_depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>&#160;</td></tr><tr><td class="number">159</td><td>   bmp_select<span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">160</td><td>&#160;</td></tr><tr><td class="number">161</td><td>   <span class="c">/* set up vertical gradients for left and right sides */</span></td></tr><tr><td class="number">162</td><td>   gradient1 <span class="k3">=</span> <span class="k2">(</span>color4 <span class="k3">-</span> color1<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">163</td><td>   gradient2 <span class="k3">=</span> <span class="k2">(</span>color3 <span class="k3">-</span> color2<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">164</td><td>   left_dx <span class="k3">=</span> color1<span class="k2">;</span></td></tr><tr><td class="number">165</td><td>   right_dx <span class="k3">=</span> color2<span class="k2">;</span></td></tr><tr><td class="number">166</td><td>&#160;</td></tr><tr><td class="number">167</td><td>   <span class="c">/* check clipping */</span></td></tr><tr><td class="number">168</td><td>   <span class="k1">if</span> <span class="k2">(</span>destination-&gt;clip<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">169</td><td>      <span class="k1">if</span> <span class="k2">(</span>y1 <span class="k3">&lt;</span> destination-&gt;ct<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">170</td><td>   left_dx <span class="k3">+</span><span class="k3">=</span> gradient1 <span class="k3">*</span> <span class="k2">(</span>destination-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">171</td><td>   right_dx <span class="k3">+</span><span class="k3">=</span> gradient2 <span class="k3">*</span> <span class="k2">(</span>destination-&gt;ct <span class="k3">-</span> y1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">172</td><td>   y1 <span class="k3">=</span> destination-&gt;ct<span class="k2">;</span></td></tr><tr><td class="number">173</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">174</td><td>      y2 <span class="k3">=</span> MIN<span class="k2">(</span>y2, destination-&gt;cb<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">175</td><td>      x1 <span class="k3">=</span> MAX<span class="k2">(</span>x1, destination-&gt;cl<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">176</td><td>      x2 <span class="k3">=</span> MIN<span class="k2">(</span>x2, destination-&gt;cr<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">177</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">178</td><td>&#160;</td></tr><tr><td class="number">179</td><td>   <span class="k1">for</span> <span class="k2">(</span>current_y<span class="k3">=</span>y1<span class="k2">;</span> current_y<span class="k3">&lt;</span>y2<span class="k2">;</span> current_y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">180</td><td>      <span class="c">/* set up horizontal gradient for line */</span></td></tr><tr><td class="number">181</td><td>      <span class="k1">double</span> horizontal_gradient <span class="k3">=</span> <span class="k2">(</span>right_dx <span class="k3">-</span> left_dx<span class="k2">)</span> <span class="k3">/</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">182</td><td>      <span class="k1">double</span> color <span class="k3">=</span> left_dx<span class="k2">;</span></td></tr><tr><td class="number">183</td><td>&#160;</td></tr><tr><td class="number">184</td><td>      <span class="c">/* more clip checking */</span></td></tr><tr><td class="number">185</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>destination-&gt;clip<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>x1 <span class="k3">&lt;</span> destination-&gt;cl<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">186</td><td>   color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient <span class="k3">*</span> <span class="k2">(</span>destination-&gt;cl <span class="k3">-</span> x1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">187</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">188</td><td>&#160;</td></tr><tr><td class="number">189</td><td>   <span class="p">#ifdef GFX_HAS_VGA</span></td></tr><tr><td class="number">190</td><td>&#160;</td></tr><tr><td class="number">191</td><td>      <span class="c">/* modex version */</span></td></tr><tr><td class="number">192</td><td>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/is_planar_bitmap" target="_blank"><span class="a">is_planar_bitmap</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">193</td><td>   addr <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">long</span><span class="k2">)</span>destination-&gt;line<span class="k2">[</span>current_y<span class="k2">]</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> x1<span class="k2">;</span></td></tr><tr><td class="number">194</td><td>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span>x1<span class="k2">;</span> i<span class="k3">&lt;</span>x2<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">195</td><td>      <span class="k1">if</span> <span class="k2">(</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">196</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_610.html" target="_blank">outportw</a><span class="k2">(</span><span class="n">0x3C4</span>, <span class="k2">(</span><span class="n">0x100</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="k2">(</span>i<span class="k3">&amp;</span><span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k3">|</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">197</td><td>         pixel <span class="k3">=</span> color_map-&gt;data<span class="k2">[</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>color<span class="k2">]</span><span class="k2">[</span>sprite-&gt;line<span class="k2">[</span>current_y-y1<span class="k2">]</span><span class="k2">[</span>i-x1<span class="k2">]</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">198</td><td>         bmp_write8<span class="k2">(</span>addr&gt;&gt;2, pixel<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">199</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">200</td><td>      color <span class="k3">+</span><span class="k3">=</span> horizontal_gradient<span class="k2">;</span></td></tr><tr><td class="number">201</td><td>      addr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">202</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">203</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">204</td><td>      <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">205</td><td>&#160;</td></tr><tr><td class="number">206</td><td>   <span class="p">#else</span></td></tr><tr><td class="number">207</td><td>&#160;</td></tr><tr><td class="number">208</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">209</td><td>&#160;</td></tr><tr><td class="number">210</td><td>   <span class="p">#endif</span></td></tr><tr><td class="number">211</td><td>        do_gouraud_line<span class="k2">(</span> destination, sprite, current_y, current_y <span class="k3">-</span> y1, x1, x2, color, horizontal_gradient <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">212</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">213</td><td>&#160;</td></tr><tr><td class="number">214</td><td>      left_dx <span class="k3">+</span><span class="k3">=</span> gradient1<span class="k2">;</span></td></tr><tr><td class="number">215</td><td>      right_dx <span class="k3">+</span><span class="k3">=</span> gradient2<span class="k2">;</span></td></tr><tr><td class="number">216</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">217</td><td>&#160;</td></tr><tr><td class="number">218</td><td>   <a href="http://www.allegro.cc/manual/bmp_unwrite_line" target="_blank"><span class="a">bmp_unwrite_line</span></a><span class="k2">(</span>destination<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">219</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Mon, 21 Aug 2006 07:55:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Unfortunately its about 5 times slower than the current version
</p></div></div><p>Forcing inlining might help but I&#39;m not too sure about this.</p><p>In general I agree with Peter Wang. 4.2 series is pretty much &quot;done&quot; and all energy should go to 4.3. Most people don&#39;t know anything about Allegro source anyway so for them it doesn&#39;t matter much if they work on 4.2 or 4.3. Perhaps only 4.3 is a bit easier because of less garbage.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Mon, 21 Aug 2006 11:55:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">HoHo said:</div><div class="quote"><p>
In general I agree with Peter Wang. 4.2 series is pretty much &quot;done&quot; and all energy should go to 4.3. Most people don&#39;t know anything about Allegro source anyway so for them it doesn&#39;t matter much if they work on 4.2 or 4.3. Perhaps only 4.3 is a bit easier because of less garbage.
</p></div></div><p>
For 4.3 the problem is that little is known about what has to be done, what is already there, what is currently being worked on etc.</p><p>I am sure that if some specific tasks were posted in allegro.cc (for example: &quot;implement the joystick driver for X&quot;) it would attract developers. If even one or two people responded and started contributing more seriously it would be worth it IMHO.</p><p>However, this means that a more or less finalised API is needed, at least for the core (event queues, error handling, driver API, I don&#39;t know what else). Unless this has been stabilized and made public somewhere, there is very little a non-developer can do to help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fiddler)</author>
		<pubDate>Mon, 21 Aug 2006 12:41:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, then.  If anyone wants to finish off the mouse API and implementation, especially the Windows implementation, please tell me.  It&#39;s sitting in a Subversion branch at the moment (I just need to merge the latest 4.3.0 changes into it).  Any takers?</p><p>Also, it would be nice to have a force feedback API.  Probably it will be a rather thin wrapper around whatever DirectX provides.  Anyone with such a device want to work on that?</p><p>Chris Robinson has half a sound API designed and prototyped (if I remember).  This would be quite a nice modular task to work on, I think.</p><p>The Mac port needs attention. Contact Peter Hull.</p><p>Thomas is working on his file hooks.</p><p>And then there&#39;s the display and graphics API... Elias and Evert seem to be jointly in charge of this.  We were just discussing it recently on [AD].
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 21 Aug 2006 13:03:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are there actually any API (proposal) documents anywhere?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 21 Aug 2006 15:36:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Take a look at the Allegro Wiki: <a href="http://awiki.tomasu.org/bin/view">http://awiki.tomasu.org/bin/view</a> Although it seems it has been hit by spam bots recently, there is quite a lot of useful information there.</p><p>Also, the Allegro 5 documents (I think there is a link in the wiki to them). However, I don&#39;t think these are followed closely, if at all.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fiddler)</author>
		<pubDate>Mon, 21 Aug 2006 16:30:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
However, I don&#39;t think these are followed closely, if at all.
</p></div></div><p>
It&#39;s certainly the idea that they&#39;re followed at least somewhat. I should point out though that some of the details were left blank or undecided in them.<br />It makes no sense to reinvent the wheel and try to come up with a new design if so much time, skill and discussion went into the existing documents.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 21 Aug 2006 18:24:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Actually, I think that the Allegro source could do with some more comments and clearer variable names. Although I think that re-writing the algorithms to be more readable, yet slower is going a bit too far. I recently fixed a bug in the Grabber, and found that I would have fixed it much faster had the source been more commented. Having a well-commented source would encourage more people to fiddle around with it.</p><p>Also, while we&#39;re on the subject of adding comments to Allegro source, now would be a good time to discuss the possibility of using a self-documenting sourcecode-comments based form of documentation such as Doxygen as a replacement for the current ._tx format. When I mentioned this on the [AD] list recently, I was told that Doxygen (along with it&#39;s alternatives) had already been discussed, so if anyone could link to the discussion, that would be appreciated.</p><p>The web page for Doxygen is at <a href="http://www.stack.nl/~dimitri/doxygen/">http://www.stack.nl/~dimitri/doxygen/</a>, and a liat of alternatives is <a href="http://www.stack.nl/~dimitri/doxygen/links.html">here</a></p><p>AE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Andrei Ellman)</author>
		<pubDate>Tue, 29 Aug 2006 01:22:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did this get sent to the top or something? Anyway, I havent done much with this because I was waiting for 4.2.1 to come out.</p><p>About doxygen, I have no idea. It sounds nice, but the allegro docs are already so well written!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Tue, 29 Aug 2006 03:29:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Although it seems it has been hit by spam bots recently
</p></div></div><p>Fixed all the ones I could find.</p><p>Please people, if you find any, TELL ME.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 29 Aug 2006 03:44:58 +0000</pubDate>
	</item>
</rss>
