<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Pointing to a Bitmap</title>
		<link>http://www.allegro.cc/forums/view/588776</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 29 Nov 2006 04:56:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have a problem. I make a class that use two BITMAPS objects in private ambit. But also I want to use the same objects in the public ambit. To your understanding, the code:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef _FGB_BCK</span></td></tr><tr><td class="number">2</td><td><span class="p">#define _FGB_BCK</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">class</span> fbackground <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>      private:</td></tr><tr><td class="number">8</td><td>              <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> background, <span class="k3">*</span>maskedbackground<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>              <a href="http://www.allegro.cc/manual/SAMPLE" target="_blank"><span class="a">SAMPLE</span></a><span class="k3">*</span> explode<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>          </td></tr><tr><td class="number">11</td><td>      public:</td></tr><tr><td class="number">12</td><td>             <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>fbackg, <span class="k3">*</span>fmaskedbackg<span class="k2">;</span> </td></tr><tr><td class="number">13</td><td>             </td></tr><tr><td class="number">14</td><td>             <span class="k1">int</span> loadbackground<span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span><span class="k2">;</span>             </td></tr><tr><td class="number">15</td><td>             <span class="k1">int</span> loadmaskedbackground<span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">16</td><td>             <span class="k1">void</span> explodeterrain<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> radius<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>             fbackground<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>              </td></tr><tr><td class="number">18</td><td>             <span class="k1">void</span> dumptoscreen<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>             ~fbackground<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>             </td></tr><tr><td class="number">20</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="p">#endif //_FGB_BCK</span></td></tr></tbody></table></div></div><p>

Basicaly I want the pointers <b>fbackg</b> y <b>fmaskedbackg</b>, pointing to <b>background</b> and <b>maskedbackground</b> respectively. I need your help.</p><p>Thanks for your time. (I include the declaration and the implementation of the class as an attachments.)</p><p><a href="http://www.allegro.cc/files/attachment/590609">http://www.allegro.cc/files/attachment/590609</a> -&gt; fbackground.h<br /><a href="http://www.allegro.cc/files/attachment/590610">http://www.allegro.cc/files/attachment/590610</a> -&gt; fbackground.cpp
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BrunoProg64)</author>
		<pubDate>Tue, 28 Nov 2006 09:18:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are a variety of solutions. The simplest would be to make a public function you could call that would assign the pointers. Another, more advanced method, would be to overload the = operator so that when you use it when loading a bitmap, the bitmap pointer is assigned to both variables.</p><p>Though quite frankly, why do you need to keep track of both a private and public copy of the same pointer? It would be much simpler just to have the public bitmap pointers instead of both.</p><p>Remember that when you create a bitmap, you&#39;re <i>still</i> assigning a pointer to it, not the data itself. For example, this is legal:</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>bitmap_one, <span class="k3">*</span>bitmap_two<span class="k2">;</span>

bitmap_one <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">64</span>,<span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
bitmap_two <span class="k3">=</span> bitmap_one<span class="k2">;</span>
bitmap_one <span class="k3">=</span> NULL<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmap_two<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Tue, 28 Nov 2006 10:12:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why not make two &quot;getter&quot; functions?</p><div class="source-code snippet"><div class="inner"><pre>public:
  <span class="k1">inline</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> getBackground<span class="k2">(</span><span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">return</span> this-&gt;background<span class="k2">;</span>
  <span class="k2">}</span>
  <span class="k1">inline</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> getMaskedBackground<span class="k2">(</span><span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">return</span> this-&gt;maskedbackground<span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Tue, 28 Nov 2006 14:33:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> fbackground::explodeterrain<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> radius<span class="k2">)</span>
<span class="k2">{</span>
     <span class="c">//...</span>
     <span class="c">//Suena un .wav (requiere que la opción de sonido esté activa)</span>
     explode <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_sample" target="_blank"><span class="a">load_sample</span></a><span class="k2">(</span><span class="s">"explode.wav"</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// this line</span>
     <a href="http://www.allegro.cc/manual/play_sample" target="_blank"><span class="a">play_sample</span></a><span class="k2">(</span>explode, <span class="n">255</span>, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

you shouldn&#39;t use load_sample each time you want to play a sample.<br />I suggest you load it the same way you load a BITMAP :</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> fbackground::loadExplosionSample<span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    explode <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_sample" target="_blank"><span class="a">load_sample</span></a><span class="k2">(</span><span class="s">"explode.wav"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>explode <span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>                      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="c">//error</span></td></tr><tr><td class="number">6</td><td>                      <span class="k2">}</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">8</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>        <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> <span class="c">//éxito</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>fbackground::~fbackground<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>      <span class="c">//liberamos memoria de los 2 bitmaps</span></td></tr><tr><td class="number">16</td><td>      <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>background<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>maskedbackground<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>      <span class="k1">if</span><span class="k2">(</span>explode<span class="k3">!</span><span class="k3">=</span>NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>            <a href="http://www.allegro.cc/manual/destroy_sample" target="_blank"><span class="a">destroy_sample</span></a><span class="k2">(</span>explode<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>            explode<span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Basicaly I want the pointers fbackg y fmaskedbackg, pointing to background and maskedbackground respectively.
</p></div></div><p>



I can&#39;t see the reason why you want to do this, but you have to do it after<br />loading the BITMAP :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> fbackground::loadbackground<span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span>
<span class="k2">{</span>
    background<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>filename,NULL<span class="k2">)</span><span class="k2">;</span>
    
    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>background<span class="k2">)</span> <span class="k2">{</span>
                      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="c">//error</span>
                      <span class="k2">}</span>
    <span class="k1">else</span>
    <span class="k2">{</span>
        fbackg<span class="k3">=</span>background<span class="k2">;</span>
        <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> <span class="c">//éxito</span>
    <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jamal)</author>
		<pubDate>Tue, 28 Nov 2006 16:33:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for your sugestions. Really I going to change to a public variable instead of pointing twice. Your code works! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BrunoProg64)</author>
		<pubDate>Wed, 29 Nov 2006 04:56:08 +0000</pubDate>
	</item>
</rss>
