<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Failed to get bitmap font with alx wrapper for Allegro 5</title>
		<link>http://www.allegro.cc/forums/view/616017</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 30 Jan 2016 11:58:32 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi!<br />Decided to try new features offered by alx wrapper for Allegro 5. All works fine except getting bitmap font. <br />alx::Font normalfont; and<br />alx::Font titlefont; <br />is declared in the game.h file;<br />Commented out is my old code which works. Code:
</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="k1">void</span> Game::load_fonts<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="c">//ALLEGRO_BITMAP *temp;</span>
<span class="number">  4</span>  <span class="c">//const int ranges[] = { 32, 126 };</span>
<span class="number">  5</span>
<span class="number">  6</span>  <span class="c">////normalfont</span>
<span class="number">  7</span>  <span class="c">//temp = al_load_bitmap("Media/Fonts/ex06.pcx");</span>
<span class="number">  8</span>  <span class="c">//al_convert_mask_to_alpha(temp, al_map_rgb(255, 0, 255));</span>
<span class="number">  9</span>  <span class="c">//normalfont = al_grab_font_from_bitmap(temp, 1, ranges);</span>
<span class="number"> 10</span>  
<span class="number"> 11</span>  <span class="c">////titlefont</span>
<span class="number"> 12</span>  <span class="c">//temp = al_load_bitmap("Media/Fonts/TITLE_FONT.pcx");</span>
<span class="number"> 13</span>  <span class="c">//al_convert_mask_to_alpha(temp, al_map_rgb(0, 0, 0));</span>
<span class="number"> 14</span>  <span class="c">//titlefont = al_grab_font_from_bitmap(temp, 1, ranges);</span>
<span class="number"> 15</span>  
<span class="number"> 16</span>  alx::Bitmap temp<span class="k2">;</span>
<span class="number"> 17</span>  std::vector<span class="k3">&lt;</span>std::tuple<span class="k3">&lt;</span><span class="k1">int</span>, int&gt;&gt; ranges<span class="k2">;</span>
<span class="number"> 18</span>  ranges.push_back<span class="k2">(</span>std::make_tuple<span class="k2">(</span><span class="n">32</span>, <span class="n">126</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  
<span class="number"> 20</span>  <span class="c">//normalfont</span>
<span class="number"> 21</span>  temp.load<span class="k2">(</span><span class="s">"Media/Fonts/ex06.pcx"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  temp.convertMaskToAlpha<span class="k2">(</span>alx::Color<span class="k2">(</span><span class="n">0xFF00FFFF</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  normalfont.grab<span class="k2">(</span>temp, ranges<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <span class="c">//titlefont</span>
<span class="number"> 26</span>  temp.load<span class="k2">(</span><span class="s">"Media/Fonts/TITLE_FONT.pcx"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  temp.convertMaskToAlpha<span class="k2">(</span>alx::Color<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  titlefont.grab<span class="k2">(</span>temp, ranges<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><span class="k2">}</span>
</div></div><p>
A grabber function from Font.hpp (namespace alx)
</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">/**</span>
<span class="number">  2</span><span class="c">        Creates a font from a bitmap.</span>
<span class="number">  3</span><span class="c">        @param bmp bitmap.</span>
<span class="number">  4</span><span class="c">        @param ranges ranges.</span>
<span class="number">  5</span><span class="c">        @return true on success.</span>
<span class="number">  6</span><span class="c">     */</span>
<span class="number">  7</span>    <span class="k1">bool</span> grab<span class="k2">(</span><span class="k1">const</span> Bitmap <span class="k3">&amp;</span>bmp, <span class="k1">const</span> std::vector<span class="k3">&lt;</span>std::tuple<span class="k3">&lt;</span><span class="k1">int</span>, int&gt;&gt; <span class="k3">&amp;</span>ranges<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  8</span>        std::vector<span class="k3">&lt;</span>int&gt; rangeBuffer<span class="k2">;</span>
<span class="number">  9</span>        <span class="k1">for</span><span class="k2">(</span><span class="k1">auto</span> t <span class="k2">:</span> ranges<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span>            rangeBuffer.push_back<span class="k2">(</span>std::get<span class="k3">&lt;</span><span class="n">0</span><span class="k3">&gt;</span><span class="k2">(</span>t<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>            rangeBuffer.push_back<span class="k2">(</span>std::get<span class="k3">&lt;</span><span class="n">1</span><span class="k3">&gt;</span><span class="k2">(</span>t<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>        <span class="k2">}</span>
<span class="number"> 13</span>        reset<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_grab_font_from_bitmap"><span class="a">al_grab_font_from_bitmap</span></a><span class="k2">(</span>bmp.get<span class="k2">(</span><span class="k2">)</span>, rangeBuffer.size<span class="k2">(</span><span class="k2">)</span>, rangeBuffer.data<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>        <span class="k1">return</span> <span class="k2">(</span><span class="k1">bool</span><span class="k2">)</span><span class="k2">(</span><span class="k3">*</span><span class="k1">this</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>    <span class="k2">}</span>
</div></div><p>
I tried to debugger the code and all works until debugger brakes when returning from this function in a &lt;memory&gt;file
</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>_Ty <span class="k3">*</span>get<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span> _NOEXCEPT
<span class="number"> 2</span>    <span class="k2">{</span>  <span class="c">// return pointer to resource</span>
<span class="number"> 3</span>    <span class="k1">return</span> <span class="k2">(</span>this-&gt;_Get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>    <span class="k2">}</span>
</div></div><p>
It mean that there is not a resource from what return a pointer. Temp file is loaded correctly with a pointer to it.<br />Where then there is the problem?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ojars_L)</author>
		<pubDate>Fri, 29 Jan 2016 16:39:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This line is wrong:</p><p><span class="source-code">reset<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_grab_font_from_bitmap"><span class="a">al_grab_font_from_bitmap</span></a><span class="k2">(</span>bmp.get<span class="k2">(</span><span class="k2">)</span>, rangeBuffer.size<span class="k2">(</span><span class="k2">)</span>, rangeBuffer.data<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">)</span><span class="k2">;</span></span></p><p>It should be <span class="source-code">ranges.size<span class="k2">(</span><span class="k2">)</span></span> rather than <span class="source-code">rangeBuffer.size<span class="k2">(</span><span class="k2">)</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sat, 30 Jan 2016 11:00:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you. </p><p>Now it works.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ojars_L)</author>
		<pubDate>Sat, 30 Jan 2016 11:58:32 +0000</pubDate>
	</item>
</rss>
