<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>savepng and transparency</title>
		<link>http://www.allegro.cc/forums/view/577955</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 10 Apr 2006 16:33:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want to create a png file with alpha transparency. I&#39;ve downloaded loadpng and it loads png files ok, but when I try to save a BITMAP, I get a rgba image with nothing in the channels. How should I create the BITMAP in my Allegro app and how should I use the save functions in loadpng to get what I want.</p><p>My application is an update of my Eggifyer, which reads an image and mapps it on an egg. Now I want a transparent surrounding for the egg and a semi-transparent shadow that fades to the edges. All that looks fine in the application on my screen, but I want it saved so that I could place the egg on a web site.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Sat, 08 Apr 2006 22:48:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you made sure the image is 32-bit?  I don&#39;t remember whether it works but it looks like I put in code to specifically deal with 32-bit BITMAPs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Sun, 09 Apr 2006 13:22:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well I think it is 32 bit. I do set_color_depth(32), then I do set_gfx_mode(). After that each create_bitmap() should create a 32 bit bitmap, right? The saved png has four channels but the alpha is black. I managed to separate the channels, revealing the image in the rgb channels. I guess my problem is drawing the image in the first place. I&#39;ve been RTFM, but I haven&#39;t figured out when the drawing functions actually change the alpha value for a pixel in the bitmap. </p><p>I draw the image pixel by pixel. For the background I imagine I could do:
</p><div class="source-code snippet"><div class="inner"><pre>a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
col <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makeacol32" target="_blank"><span class="a">makeacol32</span></a><span class="k2">(</span>r, g, b, a<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>bmp, x, y, col<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
and for the object I have methods for calculating r, g, b and a. a is 255 except for the edge, where I interpolate to get rid of crispiness, kind of anti-aliasing.</p><p>But the result looks like if a would calculate to 0 for the whole image.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Mon, 10 Apr 2006 14:11:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro&#39;s alpha support is pretty... idiosyncratic.  I managed to get the following program to work though.  The trick was to set_color_depth(32);  Otherwise you might look into set_write_alpha_blender().</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">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;loadpng.h&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</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="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> x, y<span class="k2">;</span></td></tr><tr><td class="number">8</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">9</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">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/set_color_conversion" target="_blank"><span class="a">set_color_conversion</span></a><span class="k2">(</span>COLORCONV_NONE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap_ex" target="_blank"><span class="a">create_bitmap_ex</span></a><span class="k2">(</span><span class="n">32</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">for</span> <span class="k2">(</span>y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <span class="n">256</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>        <span class="k1">for</span> <span class="k2">(</span>x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> <span class="n">256</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>            <span class="k1">int</span> r <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>            <span class="k1">int</span> g <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>            <span class="k1">int</span> b <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>            <span class="k1">int</span> a <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>            <span class="k1">int</span> c <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makeacol" target="_blank"><span class="a">makeacol</span></a><span class="k2">(</span>r, g, b, a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>            <a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>bmp, x, y, c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>        <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>    save_png<span class="k2">(</span><span class="s">"test.png"</span>, bmp, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 10 Apr 2006 14:36:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for that!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Mon, 10 Apr 2006 16:33:45 +0000</pubDate>
	</item>
</rss>
