<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>al_autocrop_bitmap() ?</title>
		<link>http://www.allegro.cc/forums/view/611795</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 10 Jan 2013 04:15:58 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How would one have a function such as al_autocrop_bitmap() that would get rid of extra space if all pixels are transparent? I think I would use something like </p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> crop_bmp<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k3">*</span> bmp, <span class="k1">int</span> ix, <span class="k1">int</span> iy, <span class="k1">int</span> fx , <span class="k1">int</span> fy<span class="k2">)</span><span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span> temp<span class="k2">;</span>

  temp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap"><span class="a">create_bitmap</span></a><span class="k2">(</span>fx-ix, fy-iy<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/clear_to_color"><span class="a">clear_to_color</span></a><span class="k2">(</span>temp, MAGENTA<span class="k2">)</span><span class="k2">;</span>

  <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span>temp,<span class="k3">*</span>bmp,<span class="k3">-</span>ix,<span class="k3">-</span>iy<span class="k2">)</span><span class="k2">;</span>

  <a href="http://www.allegro.cc/manual/destroy_bitmap"><span class="a">destroy_bitmap</span></a><span class="k2">(</span><span class="k3">*</span>bmp<span class="k2">)</span><span class="k2">;</span>
  <span class="k3">*</span>bmp <span class="k3">=</span> temp<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>found at <a href="https://www.allegro.cc/forums/thread/607897">https://www.allegro.cc/forums/thread/607897</a></p><p>But I want to remove edge line by line from top,bottom, left, and right if it is transparent. How can I check if a pixel is transparent in allegro? Should I draw onto a FrameBuffer and then get pixel from that? Is this the right way of doing this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Wed, 09 Jan 2013 21:50:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have some old code from a Bitmap triangulator that found the contour of a bitmap by seeking through its transparent pixels:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>  <span class="k1">void</span> ImagePolygon::computeContour<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span>  <span class="k2">{</span>
<span class="number">  3</span>    m_contour.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>    <span class="c">//2 extra for invisible border</span>
<span class="number">  6</span>    std::vector<span class="k3">&lt;</span>std::vector<span class="k3">&lt;</span>bool&gt; <span class="k3">&gt;</span> boolVec <span class="k3">=</span>
<span class="number">  7</span>      std::vector<span class="k3">&lt;</span>std::vector<span class="k3">&lt;</span>bool&gt; <span class="k3">&gt;</span><span class="k2">(</span>m_bitmapDimensions.x <span class="k3">+</span> <span class="n">2</span>, 
<span class="number">  8</span>      std::vector<span class="k3">&lt;</span>bool&gt;<span class="k2">(</span>m_bitmapDimensions.y <span class="k3">+</span> <span class="n">2</span>, <span class="k1">false</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="c">//lock the bitmap</span>
<span class="number"> 11</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_LOCKED_REGION"><span class="a">ALLEGRO_LOCKED_REGION</span></a><span class="k3">*</span> region<span class="k2">;</span>
<span class="number"> 12</span>    region <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a>
<span class="number"> 13</span>      <span class="k2">(</span>m_bitmap,
<span class="number"> 14</span>      ALLEGRO_PIXEL_FORMAT_ABGR_8888,
<span class="number"> 15</span>      ALLEGRO_LOCK_READONLY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    
<span class="number"> 17</span>    m_floodQ.push<span class="k2">(</span>b2Vec2<span class="k2">(</span><span class="k3">-</span><span class="n">1</span>,<span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>    <span class="c">//flood fill</span>
<span class="number"> 20</span>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>m_floodQ.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 21</span>    <span class="k2">{</span>
<span class="number"> 22</span>     b2Vec2 vert <span class="k3">=</span> m_floodQ.front<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>      m_floodQ.pop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    
<span class="number"> 25</span>      <span class="c">//no going past the 1px invisible border</span>
<span class="number"> 26</span>      <span class="k1">if</span><span class="k2">(</span>boolVec<span class="k2">[</span>vert.x <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span><span class="k2">[</span>vert.y <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 27</span>      <span class="k2">{</span>
<span class="number"> 28</span>        <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 29</span>      <span class="k2">}</span>
<span class="number"> 30</span>
<span class="number"> 31</span>      <span class="k1">if</span><span class="k2">(</span>vert.x <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> vert.y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span>     <span class="k3">&amp;</span><span class="k3">&amp;</span> 
<span class="number"> 32</span>        vert.x <span class="k3">&lt;</span> m_bitmapDimensions.x <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 33</span>        vert.y <span class="k3">&lt;</span> m_bitmapDimensions.y<span class="k2">)</span>
<span class="number"> 34</span>      <span class="k2">{</span>
<span class="number"> 35</span>        <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span>row <span class="k3">=</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>region-&gt;data<span class="k2">;</span>
<span class="number"> 36</span>        row <span class="k3">+</span><span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>vert.y <span class="k3">*</span> region-&gt;pitch<span class="k2">;</span>
<span class="number"> 37</span>        <span class="k1">uint32_t</span> <span class="k3">*</span>pixel <span class="k3">=</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span><span class="k3">*</span><span class="k2">)</span>row <span class="k3">+</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>vert.x<span class="k2">;</span>
<span class="number"> 38</span>        <span class="k1">int</span> alpha <span class="k3">=</span> <span class="k3">*</span>pixel <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">24</span><span class="k2">;</span>
<span class="number"> 39</span>        <span class="c">//add pixel if alpha matches</span>
<span class="number"> 40</span>        <span class="k1">if</span><span class="k2">(</span>alpha <span class="k3">&gt;</span><span class="k3">=</span> m_alpha<span class="k2">)</span>
<span class="number"> 41</span>        <span class="k2">{</span>
<span class="number"> 42</span>          m_contour.push_back<span class="k2">(</span>b2Vec2<span class="k2">(</span><span class="k2">(</span>vert.x <span class="k3">-</span> <span class="k2">(</span>m_bitmapDimensions.x <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">)</span> ,
<span class="number"> 43</span>           <span class="k2">(</span> vert.y <span class="k3">-</span> <span class="k2">(</span>m_bitmapDimensions.y <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>          <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 45</span>        <span class="k2">}</span>
<span class="number"> 46</span>    
<span class="number"> 47</span>      <span class="k2">}</span>
<span class="number"> 48</span>
<span class="number"> 49</span>      boolVec<span class="k2">[</span>vert.x <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span><span class="k2">[</span>vert.y <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 50</span>
<span class="number"> 51</span>      <span class="c">//iterate the 8 corners</span>
<span class="number"> 52</span>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">2</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
<span class="number"> 53</span>      <span class="k2">{</span>
<span class="number"> 54</span>        <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> j <span class="k3">&lt;</span> <span class="n">2</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span>
<span class="number"> 55</span>        <span class="k2">{</span>
<span class="number"> 56</span>          <span class="c">//do not iterate yourself</span>
<span class="number"> 57</span>          <span class="k1">if</span><span class="k2">(</span>i <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> j <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 58</span>          <span class="k2">{</span>
<span class="number"> 59</span>            <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 60</span>          <span class="k2">}</span>
<span class="number"> 61</span>
<span class="number"> 62</span>           b2Vec2 curVert <span class="k3">=</span> vert<span class="k2">;</span>
<span class="number"> 63</span>          curVert.x <span class="k3">+</span><span class="k3">=</span> i<span class="k2">;</span>
<span class="number"> 64</span>          curVert.y <span class="k3">+</span><span class="k3">=</span> j<span class="k2">;</span>
<span class="number"> 65</span>
<span class="number"> 66</span>          <span class="c">//no going past 1px invisible border</span>
<span class="number"> 67</span>          <span class="k1">if</span><span class="k2">(</span>curVert.x <span class="k3">&lt;</span> <span class="k3">-</span><span class="n">1</span> <span class="k3">|</span><span class="k3">|</span> curVert.y <span class="k3">&lt;</span> <span class="k3">-</span><span class="n">1</span>
<span class="number"> 68</span>            <span class="k3">|</span><span class="k3">|</span> curVert.x <span class="k3">&gt;</span> m_bitmapDimensions.x 
<span class="number"> 69</span>            <span class="k3">|</span><span class="k3">|</span> curVert.y <span class="k3">&gt;</span> m_bitmapDimensions.y<span class="k2">)</span>
<span class="number"> 70</span>          <span class="k2">{</span>
<span class="number"> 71</span>            <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 72</span>          <span class="k2">}</span>
<span class="number"> 73</span>          <span class="c">//if it has not been processed, process the pixel</span>
<span class="number"> 74</span>          <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>boolVec<span class="k2">[</span>curVert.x <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span><span class="k2">[</span>curVert.y <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 75</span>          <span class="k2">{</span>
<span class="number"> 76</span>            m_floodQ.push<span class="k2">(</span>b2Vec2<span class="k2">(</span>curVert.x,curVert.y<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 77</span>          <span class="k2">}</span>
<span class="number"> 78</span>
<span class="number"> 79</span>        <span class="k2">}</span>
<span class="number"> 80</span>      <span class="k2">}</span>
<span class="number"> 81</span>    <span class="k2">}</span>
<span class="number"> 82</span>
<span class="number"> 83</span>    <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>m_bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 84</span>  <span class="k2">}</span>
</div></div><p>

Basically you lock it.<br />Then do:
</p><div class="source-code snippet"><div class="inner"><pre>       <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span>row <span class="k3">=</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>region-&gt;data<span class="k2">;</span>
        row <span class="k3">+</span><span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>YOUR_Y_COORDINATE_HERE <span class="k3">*</span> region-&gt;pitch<span class="k2">;</span>
        <span class="k1">uint32_t</span> <span class="k3">*</span>pixel <span class="k3">=</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span><span class="k3">*</span><span class="k2">)</span>row <span class="k3">+</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>YOUR_X_COORDINATE_HERE<span class="k2">;</span>
        <span class="k1">int</span> alpha <span class="k3">=</span> <span class="k3">*</span>pixel <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">24</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Wed, 09 Jan 2013 22:22:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you using A4 or A5? Your example code is A4, but me thinks you are using A5? IDK.</p><p>If A4 - <span class="source-code"><a href="http://www.allegro.cc/manual/getpixel"><span class="a">getpixel</span></a></span><br />If A5 - <span class="source-code"><a href="http://www.allegro.cc/manual/al_lock_bitmap_region"><span class="a">al_lock_bitmap_region</span></a></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 09 Jan 2013 22:26:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A5
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Wed, 09 Jan 2013 22:42:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What about using this to check if a pixel is transparent:  <a href="https://www.allegro.cc/forums/thread/608076/927864">https://www.allegro.cc/forums/thread/608076/927864</a> ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (No God Mode Required)</author>
		<pubDate>Thu, 10 Jan 2013 01:25:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This takes an image, pulls the top left color, and draws a green rectangle showing trim region that is made of up that color.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>
<span class="number">  2</span><span class="k1">void</span> show_trim_region<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>  <span class="k1">int</span> top_most <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  <span class="k1">int</span> right_most <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  6</span>  <span class="k1">int</span> bottom_most <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  7</span>  <span class="k1">int</span> left_most <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span>bmp, ALLEGRO_PIXEL_FORMAT_ANY, ALLEGRO_LOCK_READWRITE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> top_left_color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_pixel"><span class="a">al_get_pixel</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 13</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> x<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 14</span>    <span class="k2">{</span>
<span class="number"> 15</span>      <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> this_color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_pixel"><span class="a">al_get_pixel</span></a><span class="k2">(</span>bmp, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>color::basically_equal<span class="k2">(</span>this_color, top_left_color<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 17</span>      <span class="k2">{</span>
<span class="number"> 18</span>        <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&lt;</span> left_most<span class="k2">)</span> left_most <span class="k3">=</span> x<span class="k2">;</span> 
<span class="number"> 19</span>        <span class="k1">if</span> <span class="k2">(</span>y <span class="k3">&lt;</span> top_most<span class="k2">)</span> top_most <span class="k3">=</span> y<span class="k2">;</span> 
<span class="number"> 20</span>        <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&gt;</span> right_most<span class="k2">)</span> right_most <span class="k3">=</span> x<span class="k2">;</span> 
<span class="number"> 21</span>        <span class="k1">if</span> <span class="k2">(</span>y <span class="k3">&lt;</span> left_most<span class="k2">)</span> top_most <span class="k3">=</span> y<span class="k2">;</span> 
<span class="number"> 22</span>      <span class="k2">}</span>
<span class="number"> 23</span>    <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>
<span class="number"> 27</span>
<span class="number"> 28</span>  <span class="c">// draw a rectangle around the trim area</span>
<span class="number"> 29</span>
<span class="number"> 30</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_STATE"><span class="a">ALLEGRO_STATE</span></a> state<span class="k2">;</span>
<span class="number"> 31</span>  <a href="http://www.allegro.cc/manual/al_store_state"><span class="a">al_store_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>state, ALLEGRO_STATE_TARGET_BITMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>  <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span>left_most, top_most, right_most, bottom_most, color::green, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span>  <a href="http://www.allegro.cc/manual/al_restore_state"><span class="a">al_restore_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>state<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span><span class="k2">}</span>
</div></div><p>

(You&#39;ll use this too):</p><div class="source-code snippet"><div class="inner"><pre>
<span class="k1">namespace</span> color
<span class="k2">{</span>
<span class="k1">bool</span> basically_equal<span class="k2">(</span><span class="k1">const</span> <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> <span class="k3">&amp;</span>col1, <span class="k1">const</span> <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> <span class="k3">&amp;</span>col2, <span class="k1">float</span> threshold<span class="k3">=</span><span class="n">0</span>.<span class="n">0001</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>col1.a <span class="k3">-</span> col2.a<span class="k2">)</span> <span class="k3">&gt;</span> threshold<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>col1.g <span class="k3">-</span> col2.g<span class="k2">)</span> <span class="k3">&gt;</span> threshold<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>col1.b <span class="k3">-</span> col2.b<span class="k2">)</span> <span class="k3">&gt;</span> threshold<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>col1.r <span class="k3">-</span> col2.r<span class="k2">)</span> <span class="k3">&gt;</span> threshold<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Thu, 10 Jan 2013 04:15:58 +0000</pubDate>
	</item>
</rss>
