<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to show the draw of subbitmap in screen</title>
		<link>http://www.allegro.cc/forums/view/618040</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 13 Feb 2020 20:28:35 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello,</p><p>I using two bitmaps, image (subbitmap) and grid (main bitmap)</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><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> grid <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 2</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> image <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 3</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> display <span class="k3">=</span> NULL<span class="k2">;</span>
</div></div><p>

</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="c">//Initialization</span>
<span class="number">  2</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><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">+</span> INFO_H<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>    grid <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/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">+</span> INFO_H<span class="k2">)</span><span class="k2">;</span> 
<span class="number">  4</span>
<span class="number">  5</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>grid<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</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>
<span class="number">  7</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>grid, <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">  9</span>
<span class="number"> 10</span>    <span class="c">//Creating a model</span>
<span class="number"> 11</span>    image <span class="k3">=</span> loadBitmapAtSize<span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>    <a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>grid, <span class="n">0</span>, <span class="n">0</span>, columns, rows<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Until here it is all going well, but If I draw directly to image(subbitmap) then I not found how to send the changes to display.</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>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number">  2</span>
<span class="number">  3</span>    <span class="c">//rows and cols are the height and width of subbitmap</span>
<span class="number">  4</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> rows<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>y<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</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> columns<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>x<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  6</span>            <span class="k1">if</span><span class="k2">(</span>x <span class="k3">=</span><span class="k3">=</span> y <span class="k3">|</span><span class="k3">|</span> x-1 <span class="k3">=</span><span class="k3">=</span> y <span class="k3">|</span><span class="k3">|</span> x<span class="k3">+</span><span class="n">1</span>  <span class="k3">=</span><span class="k3">=</span> y <span class="k3">|</span><span class="k3">|</span> x <span class="k3">=</span><span class="k3">=</span> y-1 <span class="k3">|</span><span class="k3">|</span> x <span class="k3">=</span><span class="k3">=</span> y<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  7</span>                <span class="c">//I test the condition and the program is entering to the if</span>
<span class="number">  8</span>                <a href="http://www.allegro.cc/manual/al_draw_pixel"><span class="a">al_draw_pixel</span></a><span class="k2">(</span>x, y, <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">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>            <span class="k2">}</span>
<span class="number"> 10</span>        <span class="k2">}</span>
<span class="number"> 11</span>    <span class="k2">}</span>
<span class="number"> 12</span>
<span class="number"> 13</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>grid<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</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>
</div></div><p>

Any idea how can I update the main bitmap after edit the subbitmap?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (temporadis)</author>
		<pubDate>Sun, 09 Feb 2020 17:49:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I cannot test this at the moment but it could help you:<br />al_create_sub_bitmap(...) actually returns a pointer value of ALLEGRO_BITMAP type which you (in your actual source) never store or use.<br />Once you obtain that pointer you need to use it with    al_set_target_bitmap command.</p><p>So something like this (instead of line 12):
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>sub <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>grid, <span class="n">0</span>, <span class="n">0</span>, columns, rows<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>sub<span class="k2">)</span><span class="k2">;</span>
<span class="c">//draw to sub</span>
<span class="c">//draw grid on screen</span>
</pre></div></div><p>

Also, you post parts of your source code (as opposed to full code of the example where you are reproducing the issue) so it is difficult to know what you are trying to do but for one, lines 5&amp;6 are kind of canceling eachother out:
</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>grid<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>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MikiZX)</author>
		<pubDate>Sun, 09 Feb 2020 19:19:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for your response!</p><p>I deleted the following lines:</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>grid<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>
</pre></div></div><p>

I try your recomendation for line 12:</p><div class="source-code snippet"><div class="inner"><pre>    subImage <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>grid, <span class="n">0</span>, <span class="n">0</span>, columns, rows<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>subImage<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>image, <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>

only obtain a black screen</p><p>But, when I try to draw the grid al_draw_bitmap(grid, 0, 0, 0), it produces an error:</p><p><b>_bitmap_drawer: Assertion `bitmap != dest &amp;&amp; bitmap != dest-&gt;parent&#39; failed.</b></p><p>Sorry for not post the entire code. The last part of the post sample code will run inside a while-loop.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (temporadis)</author>
		<pubDate>Sun, 09 Feb 2020 21:48:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t worry about not posting entire code. It is just that it would be easier to make it work for you if you did post a minimalistic example that reproduces the issue you have - you could get a better answer here if you did.</p><p>What is the issue at the moment, I believe, is that you are never drawing anything to &#39;display&#39;. Once your grid, sub, ... bitmaps have been drawn to, you will need to:<br /><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><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></span><br />and then draw those bitmaps on the screen (namely, I believe you need to draw the &#39;grid&#39; bitmap to &#39;display&#39;) and then do the <span class="source-code"><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>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MikiZX)</author>
		<pubDate>Mon, 10 Feb 2020 19:22:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can&#39;t draw a bitmap onto itself.</p><p>Also, I answered your question on Stack Overflow.</p><p>Note : The &#39;Allegro Development&#39; forum is for development of the Allegro library, not &#39;Programming Questions&#39; which is for questions about use of Allegro.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 13 Feb 2020 20:28:35 +0000</pubDate>
	</item>
</rss>
