<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to use draw_text to create mask?</title>
		<link>http://www.allegro.cc/forums/view/608992</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 07 Dec 2011 11:34:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do I &quot;cut out&quot; text from bitmap, so background would show through after this:</p><div class="source-code snippet"><div class="inner"><pre>render.ClearBackbuffer<span class="k2">(</span> Color<span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
render.DrawImage<span class="k2">(</span> mask, <span class="n">0</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

So far, I can&#39;t find the right blending mode. I always end up with the WHOLE glyph being transparent, not just where text is. So the end result looks like a set of red rectangles of varying height and width.</p><p>I thought that
</p><div class="source-code snippet"><div class="inner"><pre>render.SetBlender<span class="k2">(</span> ALLEGRO_ADD, ALLEGRO_ZERO, ALLEGRO_ZERO, ALLEGRO_ADD, ALLEGRO_INVERSE_ALPHA, ALLEGRO_ZERO <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
should do it with text being drawn with color (0,0,0,255), but it does not work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Max Savenkov)</author>
		<pubDate>Tue, 06 Dec 2011 13:07:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I haven&#39;t used the blenders before, but I think this will do what you want :
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD , ALLEGRO_ONE , ALLEGRO_ZERO<span class="k2">)</span><span class="k2">;</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>overlay<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><span class="c">/*...*/</span> , <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</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><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>overlay , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 06 Dec 2011 13:49:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Short version, the only way I know to do &quot;cut out&quot; text is by drawing the text to a texture and processing each pixel, inverting the alpha.  You might be able to do it with 5.1&#39;s new blenders.</p><p>Otherwise, this is the code I use to mask images:</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">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>create_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image, <span class="k1">int</span> op, <span class="k1">int</span> src, <span class="k1">int</span> dst, <span class="k1">int</span> alpha_op, <span class="k1">int</span> alpha_src, <span class="k1">int</span> alpha_dst, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>top_transform<span class="k3">=</span>NULL, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>bottom_transform<span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> identity_transform<span class="k2">;</span>
<span class="number">  4</span>  <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>top_image <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>bottom_image<span class="k2">)</span> <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</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">  8</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="k3">|</span> ALLEGRO_STATE_BLENDER <span class="k3">|</span> ALLEGRO_STATE_TRANSFORM<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>dest <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</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>top_image<span class="k2">)</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>top_image<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</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>dest<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  <span class="c">// draw the contents</span>
<span class="number"> 16</span>  <span class="k1">if</span> <span class="k2">(</span>bottom_transform<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>bottom_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <span class="k1">else</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bottom_image, <span class="n">0</span>, <span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <a href="http://www.allegro.cc/manual/al_set_separate_blender"><span class="a">al_set_separate_blender</span></a><span class="k2">(</span>op, src, dst, alpha_op, alpha_src, alpha_dst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">if</span> <span class="k2">(</span>top_transform<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>top_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>  <span class="k1">else</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>top_image, <span class="n">0</span>, <span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</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"> 24</span>
<span class="number"> 25</span>  <span class="k1">return</span> dest<span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span>
<span class="number"> 27</span>
<span class="number"> 28</span>
<span class="number"> 29</span>
<span class="number"> 30</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>create_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image<span class="k2">)</span>
<span class="number"> 31</span><span class="k2">{</span>
<span class="number"> 32</span>  <span class="k1">return</span> create_masked_image<span class="k2">(</span>top_image, bottom_image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">2</span>, <span class="n">2</span>, <span class="n">0</span>, <span class="n">2</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span><span class="k2">}</span>
<span class="number"> 34</span>
<span class="number"> 35</span>
<span class="number"> 36</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>create_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>top_transform, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>bottom_transform<span class="k2">)</span>
<span class="number"> 37</span><span class="k2">{</span>
<span class="number"> 38</span>  <span class="k1">return</span> create_masked_image<span class="k2">(</span>top_image, bottom_image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">2</span>, <span class="n">2</span>, <span class="n">0</span>, <span class="n">2</span>, top_transform, bottom_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span><span class="k2">}</span>
<span class="number"> 40</span>
<span class="number"> 41</span>
<span class="number"> 42</span><span class="k1">static</span> <span class="k1">void</span> draw_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>destination, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image, <span class="k1">int</span> op, <span class="k1">int</span> src, <span class="k1">int</span> dst, <span class="k1">int</span> alpha_op, <span class="k1">int</span> alpha_src, <span class="k1">int</span> alpha_dst, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>top_transform<span class="k3">=</span>NULL, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>bottom_transform<span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 43</span><span class="k2">{</span>
<span class="number"> 44</span>  <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> identity_transform<span class="k2">;</span>
<span class="number"> 45</span>  <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>destination <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>top_image <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>bottom_image<span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</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"> 49</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="k3">|</span> ALLEGRO_STATE_BLENDER <span class="k3">|</span> ALLEGRO_STATE_TRANSFORM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>
<span class="number"> 51</span>  <span class="c">//ALLEGRO_BITMAP *dest = al_create_bitmap(al_get_bitmap_width(top_image), al_get_bitmap_height(top_image));</span>
<span class="number"> 52</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>destination<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span>
<span class="number"> 55</span>
<span class="number"> 56</span>  <span class="c">// draw the contents</span>
<span class="number"> 57</span>  <span class="k1">if</span> <span class="k2">(</span>bottom_transform<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>bottom_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>  <span class="k1">else</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bottom_image, <span class="n">0</span>, <span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>  <a href="http://www.allegro.cc/manual/al_set_separate_blender"><span class="a">al_set_separate_blender</span></a><span class="k2">(</span>op, src, dst, alpha_op, alpha_src, alpha_dst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>  <span class="k1">if</span> <span class="k2">(</span>top_transform<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>top_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 62</span>  <span class="k1">else</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>identity_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>top_image, <span class="n">0</span>, <span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</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"> 65</span>
<span class="number"> 66</span>  <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 67</span><span class="k2">}</span>
<span class="number"> 68</span>
<span class="number"> 69</span>
<span class="number"> 70</span><span class="k1">static</span> <span class="k1">void</span> draw_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>destination, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image<span class="k2">)</span>
<span class="number"> 71</span><span class="k2">{</span>
<span class="number"> 72</span>  draw_masked_image<span class="k2">(</span>destination, top_image, bottom_image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">2</span>, <span class="n">2</span>, <span class="n">0</span>, <span class="n">2</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span><span class="k2">}</span>
<span class="number"> 74</span>
<span class="number"> 75</span>
<span class="number"> 76</span><span class="k1">static</span> <span class="k1">void</span> draw_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>destination, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>top_transform, <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>bottom_transform<span class="k2">)</span>
<span class="number"> 77</span><span class="k2">{</span>
<span class="number"> 78</span>  draw_masked_image<span class="k2">(</span>destination, top_image, bottom_image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">2</span>, <span class="n">2</span>, <span class="n">0</span>, <span class="n">2</span>, top_transform, bottom_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 79</span><span class="k2">}</span>
</div></div><p>

<span class="source-code"><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>create_masked_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>top_image, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bottom_image<span class="k2">)</span><span class="k2">;</span></span> creates an image by combining the opacity of both images, retaining the pixel colors of the bottom (top?) image.  <span class="source-code">draw_masked_image<span class="k2">(</span><span class="k2">)</span></span> does not create a new bitmap, but performs the same operation to a given destination bitmap.</p><p>However, this will not enable you to &quot;cut out&quot; text from a solid texture.  For that you will need to have 5.1, which includes more ALLEGRO_INVERSE_* operators.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 06 Dec 2011 14:40:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Nevermind, my way doesn&#39;t work. I&#39;ve tried just about every blender I can think of, but the problem is that ALLEGRO_INVERSE_ALPHA writes the zero alpha values of the glyph background onto the destination, so unless you want a black mask, I don&#39;t know what you can do.</p><p>The only way I can think of doing it is to write your own custom shader that ignores the glyphs background zero alpha values and writes zero alpha values for the text pixels that have non-zero alpha. (Use ALLEGRO_TTF_MONOCHROME when loading the font).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 07 Dec 2011 06:40:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you&#39;re using Open GL, you could use the stencil buffer.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 07 Dec 2011 06:43:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I thought Allegro 5.0 could do subtractive blending, isn&#39;t that essentially what needs to be done here?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Wed, 07 Dec 2011 07:07:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608992/939520#target">jmasterx</a> said:</div><div class="quote"><p>
I thought Allegro 5.0 could do subtractive blending, isn&#39;t that essentially what needs to be done here?
</p></div></div><p>
I think you&#39;re on to something there :</p><p>If you make src ALLEGRO_ONE and use ALLEGRO_DEST_MINUS_SRC, then you have
</p><pre>
ALLEGRO_DEST_MINUS_SRC :
r = dr * dst - sr
g = dg * dst - sg
b = db * dst - sb
a = da * dst - sa
</pre><p>
Clear black source pixels (like the glyph background) would have no effect. If you gave them an alpha of 255 and left them black, then they would essentially write zero alpha pixels, which is what you want.</p><p>This test program shows how to make a masked overlay using this method :
</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="p">#include &lt;cstdio&gt;</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro.h"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_font.h"</span>
<span class="number">   6</span><span class="p">#include "allegro5/allegro_ttf.h"</span>
<span class="number">   7</span><span class="p">#include "allegro5/allegro_direct3d.h"</span>
<span class="number">   8</span><span class="p">#include "allegro5/allegro_opengl.h"</span>
<span class="number">   9</span><span class="p">#include "allegro5/allegro_image.h"</span>
<span class="number">  10</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">class</span> AllegroSetup <span class="k2">{</span>
<span class="number">  13</span><span class="k1">private</span> <span class="k2">:</span>
<span class="number">  14</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> display<span class="k2">;</span>
<span class="number">  15</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> timer<span class="k2">;</span>
<span class="number">  16</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> event_queue<span class="k2">;</span>
<span class="number">  17</span>   <span class="k1">bool</span> ready<span class="k2">;</span>
<span class="number">  18</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number">  19</span>   AllegroSetup<span class="k2">(</span><span class="k1">int</span> w , <span class="k1">int</span> h , <span class="k1">double</span> tick_time<span class="k2">)</span> <span class="k2">:</span>
<span class="number">  20</span>      display<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number">  21</span>      timer<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number">  22</span>      event_queue<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number">  23</span>      ready<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number">  24</span>   <span class="k2">{</span>
<span class="number">  25</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to initialize Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span><span class="k1">return</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  26</span>      <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>w,h<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  28</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to create %i X %i display.\n"</span> , w , h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>         <span class="k1">return</span><span class="k2">;</span>
<span class="number">  30</span>      <span class="k2">}</span>
<span class="number">  31</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span>tick_time<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  32</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to create %lg paced timer.\n"</span> , tick_time<span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>         <span class="k1">return</span><span class="k2">;</span>
<span class="number">  34</span>      <span class="k2">}</span>
<span class="number">  35</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  36</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to initialize keyboard.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>         <span class="k1">return</span><span class="k2">;</span>
<span class="number">  38</span>      <span class="k2">}</span>
<span class="number">  39</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  40</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to install mouse.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>         <span class="k1">return</span><span class="k2">;</span>
<span class="number">  42</span>      <span class="k2">}</span>
<span class="number">  43</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><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>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to create event queue.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>         <span class="k1">return</span><span class="k2">;</span>
<span class="number">  46</span>      <span class="k2">}</span>
<span class="number">  47</span>      <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue , <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>      <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue , <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>      <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue , <a href="http://www.allegro.cc/manual/al_get_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>      <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue , <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>      ready <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  52</span>   <span class="k2">}</span>
<span class="number">  53</span>
<span class="number">  54</span>   ~AllegroSetup<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  55</span>      <span class="k1">if</span> <span class="k2">(</span>event_queue<span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  56</span>      <span class="k1">if</span> <span class="k2">(</span>display<span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  57</span>   <span class="k2">}</span>
<span class="number">  58</span>
<span class="number">  59</span>   <span class="k1">bool</span> Ready<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> ready<span class="k2">;</span><span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span>   <span class="k1">inline</span> <span class="k1">operator</span> <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> <span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> display<span class="k2">;</span><span class="k2">}</span>
<span class="number">  62</span>   <span class="k1">inline</span> <span class="k1">operator</span> <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> <span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> event_queue<span class="k2">;</span><span class="k2">}</span>
<span class="number">  63</span>   <span class="k1">inline</span> <span class="k1">operator</span> <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> <span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> timer<span class="k2">;</span><span class="k2">}</span>
<span class="number">  64</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span>
<span class="number">  67</span><span class="k1">int</span> <a href="http://www.allegro.cc/manual/readkey"><span class="a">readkey</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> eq<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  68</span>   <span class="k1">while</span> <span class="k2">(</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  69</span>      <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number">  70</span>      <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>eq , <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>      <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  72</span>         <span class="k1">return</span> ev.keyboard.keycode<span class="k2">;</span>
<span class="number">  73</span>      <span class="k2">}</span>
<span class="number">  74</span>   <span class="k2">}</span>
<span class="number">  75</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  76</span><span class="k2">}</span>
<span class="number">  77</span>
<span class="number">  78</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  79</span>   
<span class="number">  80</span>   AllegroSetup allegro<span class="k2">(</span><span class="n">800</span>,<span class="n">600</span>,<span class="n">1</span>.<span class="n">0</span><span class="k3">/</span><span class="n">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>   <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>   <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="s">"consola.ttf"</span> , <span class="k3">-</span><span class="n">54</span> , ALLEGRO_TTF_MONOCHROME<span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>   
<span class="number">  86</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> overlay <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</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>overlay<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>   <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD , ALLEGRO_ONE , ALLEGRO_ZERO<span class="k2">)</span><span class="k2">;</span><span class="c">// overwrite blender</span>
<span class="number">  89</span>   <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>   <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_DEST_MINUS_SRC , ALLEGRO_ONE , ALLEGRO_ONE<span class="k2">)</span><span class="k2">;</span><span class="c">// subtract source values</span>
<span class="number">  91</span>   <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> , <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span> , <span class="n">20</span> , <span class="n">377</span> , <span class="n">0</span> , <span class="s">"Invisible text overlay"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>   
<span class="number">  93</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><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>allegro<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>   <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD , ALLEGRO_ONE , ALLEGRO_ZERO<span class="k2">)</span><span class="k2">;</span><span class="c">// overwrite</span>
<span class="number">  95</span>   <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>   <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD , ALLEGRO_ALPHA , ALLEGRO_INVERSE_ALPHA<span class="k2">)</span><span class="k2">;</span><span class="c">// non-premultiplied alpha</span>
<span class="number">  97</span>   <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>overlay , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>   
<span class="number">  99</span>   <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>   <a href="http://www.allegro.cc/manual/readkey"><span class="a">readkey</span></a><span class="k2">(</span>allegro<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>   
<span class="number"> 102</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 103</span><span class="k2">}</span>
</div></div><p>
It creates a pure white bitmap with pixel values of 255,255,255,255 and then writes pixel values of 0,0,0,255 onto it using <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_DEST_MINUS_SRC , ALLEGRO_ONE , ALLEGRO_ONE<span class="k2">)</span><span class="k2">;</span></span>. It then clears the backbuffer to 0,0,0,0 and draws the white overlay onto it using non-premultiplied alpha. The black background then shows through where you have drawn the text :</p><p><span class="remote-thumbnail"><span class="json">{"name":"605172","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/c\/3cb230666cd77b71b1c0314fdcabbd14.png","w":812,"h":632,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/3\/c\/3cb230666cd77b71b1c0314fdcabbd14"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/3/c/3cb230666cd77b71b1c0314fdcabbd14-240.jpg" alt="605172" width="240" height="186" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 07 Dec 2011 08:30:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks! That works perfectly! It&#39;s a pity I still get confused by blending modes. I shouldn&#39;t be <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Max Savenkov)</author>
		<pubDate>Wed, 07 Dec 2011 11:34:54 +0000</pubDate>
	</item>
</rss>
