<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[Allegro 5] Bitmap does not appear, unless clear_to_color is called</title>
		<link>http://www.allegro.cc/forums/view/612670</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 28 May 2013 01:30:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>SoilColorDict soilcolorDict<span class="k2">;</span>
  bitmap <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>soilGrid-&gt;getWidth<span class="k2">(</span><span class="k2">)</span>, soilGrid-&gt;getHeight<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span>bitmap, <a href="http://www.allegro.cc/manual/al_get_bitmap_format"><span class="a">al_get_bitmap_format</span></a><span class="k2">(</span>bitmap<span class="k2">)</span>, ALLEGRO_LOCK_READWRITE<span class="k2">)</span><span class="k2">;</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> soilGrid-&gt;getHeight<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</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> soilGrid-&gt;getWidth<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
      <span class="k2">{</span>
      <a href="http://www.allegro.cc/manual/al_put_pixel"><span class="a">al_put_pixel</span></a><span class="k2">(</span>x, y, soilcolorDict.getColor<span class="k2">(</span>soilGrid-&gt;ref<span class="k2">(</span>x, y<span class="k2">)</span>.getTopsoilType<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>
    <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Here, an object that stores ALLEGRO_COLORs in a std::map is created (<tt>soilcolorDict</tt>). The bitmap, which is a global variable, is assigned an ALLEGRO_BITMAP and is filled by fetching colors from soilcolorDict. A delve with debugger confirms that ALLEGRO_COLOR objects are being retrieved, each filled with color information. </p><p>The constructor for soilcolorDict looks like</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>SoilColorDict<span class="k2">(</span><span class="k2">)</span>  <span class="c">/// MUST BE CREATED __AFTER__ al_primatives IS INSTALLED o_O</span>
<span class="number">  2</span>      <span class="k2">{</span>
<span class="number">  3</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stCLAY, <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">240</span>,<span class="n">190</span>,<span class="n">153</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSANDYCLAY, <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">220</span>, <span class="n">217</span>, <span class="n">198</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSILTYCLAY, <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">200</span>, <span class="n">173</span>, <span class="n">152</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stCLAYLOAM, <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">192</span>, <span class="n">161</span>, <span class="n">140</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSILTYCLAYLOAM, <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">187</span>, <span class="n">174</span>, <span class="n">168</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSANDYCLAYLOAM, <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">211</span>,<span class="n">193</span>,<span class="n">157</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stLOAM, <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">202</span>, <span class="n">195</span>, <span class="n">169</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSILTLOAM, <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">227</span>, <span class="n">226</span>, <span class="n">214</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSANDYLOAM, <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">209</span>, <span class="n">204</span>, <span class="n">162</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stLOAMYSAND, <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">194</span>, <span class="n">187</span>, <span class="n">159</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSAND, <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">239</span>, <span class="n">236</span>, <span class="n">205</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>      colors.insert<span class="k2">(</span>pair<span class="k3">&lt;</span><span class="k1">int</span>, ALLEGRO_COLOR&gt;<span class="k2">(</span>stSILT, <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">166</span>, <span class="n">168</span>, <span class="n">167</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>      <span class="k2">}</span>
</div></div><p>

A bunch of key-color pairs are inserted into the map, <i>after</i> al_init() and the other functions are called.</p><p>Next, in the rendering part of the function,</p><div class="source-code snippet"><div class="inner"><pre><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>root<span class="k2">)</span><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">250</span>, <span class="n">0</span>,<span class="n">254</span><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>bitmap, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

is executed. The backbuffer, which is cleared to a magenta just so I can see the contrast, gets blitted to by a bitmap.</p><p>Finally,
</p><div class="source-code snippet"><div class="inner"><pre><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>

Problem: the screen looks like this.</p><p><span class="remote-thumbnail"><span class="json">{"name":"iGRJBWr.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/7\/d73e3ad75f78d73dc875fa99314b540d.png","w":656,"h":518,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/7\/d73e3ad75f78d73dc875fa99314b540d"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/d/7/d73e3ad75f78d73dc875fa99314b540d-240.jpg" alt="iGRJBWr.png" width="240" height="189" /></span></p><p>When I add
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bitmap<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">0</span>,<span class="n">255</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

before setting the target to the backbuffer, the screen looks like</p><p><span class="remote-thumbnail"><span class="json">{"name":"HVchHqc.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/4\/c47f3f1a7bdcdbe64e56ef2a9cefdc2e.png","w":656,"h":518,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/4\/c47f3f1a7bdcdbe64e56ef2a9cefdc2e"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/c/4/c47f3f1a7bdcdbe64e56ef2a9cefdc2e-240.jpg" alt="HVchHqc.png" width="240" height="189" /></span></p><p>It leads me to guess that I&#39;m doing something wrong when drawing to the bitmap, but I can&#39;t tell why. Been at this a couple of hours and I can&#39;t really make progress :&lt;</p><p>The exact way the functions are implemented is that there is a framework that provides the functions</p><div class="source-code snippet"><div class="inner"><pre>init<span class="k2">(</span><span class="k2">)</span> <span class="c">// Installing keyboards, setting FPS, installing addons...</span>
  userDefinedInit<span class="k2">(</span><span class="k2">)</span> <span class="c">// Anything else you want to do before starting the game loop.</span>
<span class="k1">while</span> loop
  catchEvents<span class="k2">(</span><span class="k2">)</span>
    update<span class="k2">(</span><span class="k2">)</span>
    render<span class="k2">(</span><span class="k2">)</span>
destroy<span class="k2">(</span><span class="k2">)</span>
</pre></div></div><p>

Everything except the render code is in init(). Help would be greatly appreciated! D:
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Skyrunner)</author>
		<pubDate>Mon, 27 May 2013 19:01:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Seems to me that you&#39;re missing <span class="source-code"><a href="http://www.allegro.cc/manual/al_put_pixel"><span class="a">al_put_pixel</span></a></span> needs the target bitmap to be set to <tt>bitmap</tt>....try <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span></span> before you nested <span class="source-code"><span class="k1">for</span></span> loops.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pkrcel)</author>
		<pubDate>Mon, 27 May 2013 19:31:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>... That seems like quite the stupid mistake. In fact, I&#39;be done exactly the same loop but WITH the set_target done in another project &gt;_&gt; Not at PC, but I&#39; pretty sure that&#39;ll fix it. Will return if it doesn&#39;t, within 25 hours ;3
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Skyrunner)</author>
		<pubDate>Mon, 27 May 2013 20:11:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m still looking at your code, but I did notice 2 things at least - you don&#39;t need to use insert on a std::map - using the map indexing method is cleaner. Same code behind the scenes, but it looks better to use <span class="source-code">colors<span class="k2">[</span>stClay<span class="k2">]</span> <span class="k3">=</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">64</span>,<span class="n">127</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></span>. The second pkrcel already pointed out - you have to set the target bitmap before drawing to it, or you will be drawing to whatever was set to the target bitmap previously.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 28 May 2013 01:30:08 +0000</pubDate>
	</item>
</rss>
