<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Pink is not Transparent with Grabber and Bitmaps</title>
		<link>http://www.allegro.cc/forums/view/585347</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 19 May 2006 02:07:42 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hey all, I used to be pretty good with Allegro, but this was about 4 or 5 years ago.  A few days ago I decided to get back into it, but I&#39;m having some issues.  Basically what I&#39;m tryin to do right now is display a basic tiled map and my character.  However, when I display the character to be on top of the map, transparency does not work, and the pink surrounding box is still there. here&#39;s some code:</p><p>This is my main function where things are initialized and the character is loaded (it&#39;ll be broken down into more functions at a later time):
</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> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">int</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><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>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">24</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="c">//Defaulted to 800x600, may make scalable later</span></td></tr><tr><td class="number">7</td><td>    abort_on_error<span class="k2">(</span><span class="s">"Couldn't set graphic mode!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  </td></tr><tr><td class="number">9</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp <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">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//main screen</span></td></tr><tr><td class="number">10</td><td>  <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>character_data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"PCs.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>character_buffer<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  string versionNumber <span class="k3">=</span> <span class="s">"v0.01-alpha1"</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>character_data<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>           <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <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></td></tr><tr><td class="number">16</td><td>           <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading Character Datafile"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>           <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>  <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  draw_map<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        character_buffer <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></td></tr><tr><td class="number">23</td><td>  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>character_buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  <span class="c">//draw_sprite(bmp, (BITMAP *)character_data[0].dat, 0, 0);</span></td></tr><tr><td class="number">25</td><td>  <span class="c">/* Blit to screen */</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>  <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>character_data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>  </td></tr><tr><td class="number">29</td><td>        <span class="k1">int</span> size <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_length" target="_blank"><span class="a">text_length</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, versionNumber.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//display version number</span></td></tr><tr><td class="number">30</td><td>        <a href="http://www.allegro.cc/manual/textout_right_ex" target="_blank"><span class="a">textout_right_ex</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, versionNumber.c_str<span class="k2">(</span><span class="k2">)</span>, SCREEN_W-10, SCREEN_H-10, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>       <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>       <span class="c">/* wait for a keypress */</span></td></tr><tr><td class="number">33</td><td>       <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>       <span class="k1">return</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></tbody></table></div></div><p>

and here&#39;s the code for loading the map:
</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">void</span> draw_map<span class="k2">(</span><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>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>land <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></td></tr><tr><td class="number">4</td><td>  <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>landFile<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  landFile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"map.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>land<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>landFile<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>           <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <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></td></tr><tr><td class="number">9</td><td>           <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading Map\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>           <span class="k1">return</span><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>  <span class="k1">int</span> mapXtotal <span class="k3">=</span> <span class="n">20</span> <span class="k3">*</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>  <span class="k1">int</span> mapYtotal <span class="k3">=</span> <span class="n">18</span> <span class="k3">*</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  <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> mapXtotal<span class="k2">;</span> x <span class="k3">=</span> x<span class="k3">+</span><span class="n">32</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    <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><span class="k3">=</span> mapYtotal<span class="k2">;</span> y <span class="k3">=</span> y<span class="k3">+</span><span class="n">32</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>land,<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>landFile<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat,x,y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>land,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,x,y,<span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>  </td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

I&#39;ve double checked grabber, and all images are listed being 24 bit, and according to photoshop the pink is (255,0,255).  So does anyone know why the program displays this still: </p><p><span class="remote-thumbnail"><span class="json">{"name":"screen.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/2\/5263c0d496c025ef6133c2b1003fab27.jpg","w":808,"h":631,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/2\/5263c0d496c025ef6133c2b1003fab27"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/5/2/5263c0d496c025ef6133c2b1003fab27-240.jpg" alt="screen.jpg" width="240" height="187" /></span></p><p>any help would be greatly appreciated!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Justin Slowik)</author>
		<pubDate>Thu, 18 May 2006 22:18:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
blit((BITMAP *)character_data[0].dat, screen, 0, 0,0,0,32,32);
</p></div></div><p>
Is this the line that is drawing the guy? It needs to be a masked blit or draw sprite.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 18 May 2006 22:22:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i originally had that, but i had some variables wrong.  Now im getting closer, but instead of displaying Pink now, it displays black!</p><p>this is what i changed that snippet to:
</p><div class="source-code snippet"><div class="inner"><pre>  draw_map<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        character_buffer <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>
  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>character_buffer<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>character_buffer, <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>character_data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <span class="c">/* Blit to screen */</span>

  <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>character_buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

any idea why all the pink area is black now? am I deleting that tile somehow?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Justin Slowik)</author>
		<pubDate>Thu, 18 May 2006 22:27:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think clear_bitmap is making the background of the character_buffer black... try clear_to_color(character_buffer, makecol(255, 0, 255)) and draw_sprite&#39;ing that to the screen. I suggest just having one buffer instead of a buffer for the character only though...</p><p>EDIT: Code:</p><div class="source-code snippet"><div class="inner"><pre>draw_map<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
character_buffer <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>
<a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>character_buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</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/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>character_buffer, <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>character_data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="c">/* Blit to screen */</span>

<a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, character_buffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

EDIT2: Or, for your case, why not just draw_sprite directly to the screen..? Why&#39;re you using a buffer for the character?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mokkan)</author>
		<pubDate>Thu, 18 May 2006 22:40:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Mokkan!  You&#39;re fix worked.  I changed my code to </p><div class="source-code snippet"><div class="inner"><pre>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>character_data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

and it worked perfectly!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Justin Slowik)</author>
		<pubDate>Fri, 19 May 2006 00:34:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is so special about draw_sprite over masked_blit? I&#39;ve always wondered that myself.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 19 May 2006 00:47:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">2.0 changelog said:</div><div class="quote"><p>
There is no longer such a thing as a SPRITE structure. The sprite drawing code now draws bitmaps onto other bitmaps, which is a much more flexible way of doing things. The datafile reader will convert all your old sprites to bitmaps as it loads them in, so the only practical difference this is likely to make is that the sprite drawing routines can&#39;t draw opaque sprites any more (but you can use a blit instead).
</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 19 May 2006 01:02:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What is so special about draw_sprite over masked_blit?
</p></div></div><p>
Less variables to pass that you don&#39;t normally care about (the values I typically pass to masked_blit() are those that make it behave the same as draw_sprite()) and being able to do 8bit-&gt;any depth blits (masked_blit() cannot do colour conversions at all).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Fri, 19 May 2006 02:07:42 +0000</pubDate>
	</item>
</rss>
