<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Copy bitmap to a struct.</title>
		<link>http://www.allegro.cc/forums/view/586075</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 24 Jun 2006 20:28:14 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The compiler says: &quot;which is of non-class type BITMAP*&quot;<br />My code:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//DEFINITION</span>
<span class="k1">struct</span> sprite<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
<span class="c">//The code with error</span>
<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"test.bmp"</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">struct</span> sprite.sprite <span class="k3">=</span> sprite<span class="k2">;</span>
</pre></div></div><p>
I also wanted to write some information to a textfile:
</p><div class="source-code snippet"><div class="inner"><pre>debug<span class="k3">&lt;</span><span class="k3">&lt;</span>nh<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>nv<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>spritesize<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span><span class="c">//works</span>
debug<span class="k3">&lt;</span><span class="k3">&lt;</span>sprite-&gt;w<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>sprite-&gt;h<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>spritesize<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span><span class="c">//doesn't work, it's placed after the line above.</span>
</pre></div></div><p>

Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sat, 24 Jun 2006 13:34:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You need to create an object of type sprite. What you have right now is just a sprite struct, not an actual physical object.</p><p>Code:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// DECLARATION of type sprite</span>
<span class="k1">struct</span> sprite<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="c">// DEFINITION of an object of type sprite</span>
sprite my_sprite<span class="k2">;</span>

<span class="c">// The code with no error</span>
<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"test.bmp"</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
my_sprite.sprite <span class="k3">=</span> sprite<span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 24 Jun 2006 13:41:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmmm, my real code:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>str.c_str<span class="k2">(</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>

<span class="k1">struct</span> sprite a_sprite<span class="k2">;</span>

sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_sub_bitmap" target="_blank"><span class="a">create_sub_bitmap</span></a><span class="k2">(</span>tile,nh,nv,spritesize,spritesize<span class="k2">)</span><span class="k2">;</span>

sprite.sprite <span class="k3">=</span> sprite<span class="k2">;</span><span class="c">//Now, when writing a post I see not "a_sprite"...</span>
</pre></div></div><p>

Ok, <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>My second question, I also made 2 ints that hold the width and height of the sprite, but the program crashes (&quot;A problem occured&quot;):
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> tempx, temy<span class="k2">;</span>

tempx<span class="k3">=</span>sprite-&gt;x<span class="k2">;</span>
tempy<span class="k3">=</span>sprite-&gt;y<span class="k2">;</span>

debug<span class="k3">&lt;</span><span class="k3">&lt;</span>sprite-&gt;w<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>sprite-&gt;h<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>spritesize<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span>
</pre></div></div><p>

And aslo, when I don&#39;t use the debug line (last line) the program crashes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sat, 24 Jun 2006 13:52:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why are you using the -&gt; operator? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /> And why on sprite? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>Working code:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> tempx, temy<span class="k2">;</span>

tempx<span class="k3">=</span>a_sprite.x<span class="k2">;</span>
tempy<span class="k3">=</span>a_sprite.y
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 24 Jun 2006 13:54:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I thought they are the same, not?<br />And I wanted to have the width and height of the sprite (I wrote temp_x,...), for debug purpose, I&#39;m writing a tile loader (with create_sub_bitmap from tile).<br />(still with &quot;.&quot; same problem);
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sat, 24 Jun 2006 14:00:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You seriously need to sit down with a good C/C++ book (even online tutorial will do) and learn the basics of programming in C.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I thought they are the same, not?
</p></div></div><p>
No.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 24 Jun 2006 14:01:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Next year I&#39;ll study informatics (high school).</p><p>About my second question:<br />I think that I can&#39;t get the width and height because getting create_sub_bitmap() didn&#39;t work well.
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>Tiles::Tiles<span class="k2">(</span><span class="k1">int</span> spritesize, <span class="k1">const</span> std::string <span class="k3">&amp;</span>str<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>str.c_str<span class="k2">(</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span><span class="c">//This must be destroyed at the beginning</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>    <span class="k1">int</span> h <span class="k3">=</span> tile-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">int</span> v <span class="k3">=</span> tile-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>    <span class="k1">int</span> nh<span class="k3">=</span><span class="n">0</span>, nv<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">int</span> id <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>    <span class="k1">struct</span> sprite a_sprite<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>    ofstream debug <span class="k2">(</span><span class="s">"debug.txt"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">while</span><span class="k2">(</span>nv<span class="k3">&lt;</span>v<span class="k3">+</span>spritesize<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>        <span class="k1">while</span><span class="k2">(</span>nh<span class="k3">&lt;</span>h<span class="k3">+</span>spritesize<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>            sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_sub_bitmap" target="_blank"><span class="a">create_sub_bitmap</span></a><span class="k2">(</span>tile,nh,nv,<span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>            a_sprite.sprite <span class="k3">=</span> sprite<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>            a_sprite.id<span class="k3">=</span>id, id<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>            sprites_list.push_back<span class="k2">(</span>a_sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>            debug<span class="k3">&lt;</span><span class="k3">&lt;</span>nh<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>nv<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"-"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>nh<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>            debug<span class="k3">&lt;</span><span class="k3">&lt;</span>sprites_list.size<span class="k2">(</span><span class="k2">)</span><span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>            nh<span class="k3">+</span><span class="k3">=</span>spritesize<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>            <span class="c">//debug&lt;&lt;sprite-&gt;w&lt;&lt;"-"&lt;&lt;sprite-&gt;h&lt;&lt;"-"&lt;&lt;spritesize&lt;&lt;"\n";</span></td></tr><tr><td class="number">31</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>        nv<span class="k3">+</span><span class="k3">=</span>spritesize<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>        nh <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">36</td><td>    debug.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
sprite = create_sub_bitmap(tile,nh,nv,32,32);//I used this code in the main loop and it worked.<br />I also used bit();, I only get one bitmap drawed in the vector.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sat, 24 Jun 2006 14:04:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>1) Check return values. Both <tt>load_bitmap</tt> and <tt>create_bitmap</tt> can return 0. The moment you try to dereference a null-pointer, you&#39;re doomed.</p><p>2) <tt>struct sprite a_sprite;</tt>: Since you&#39;re using C++, you won&#39;t need the <tt>struct</tt> here - but you can, of course.</p><p>3) <tt>a_sprite.id=id, id++;</tt>: Please don&#39;t do that. This is filled with side-effects and thus, error-prone. Just to check, please explain <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Sat, 24 Jun 2006 18:32:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Indeterminatus&lt;&lt;Just to be able to search them, each struct own id...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sat, 24 Jun 2006 20:00:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t think you can have a struct name &quot;sprite&quot; and have an instance named &quot;sprite&quot; at the same time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Sat, 24 Jun 2006 20:28:14 +0000</pubDate>
	</item>
</rss>
