<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[Allegro 4.9.22] Drawing extended ASCII characters with the TTF addon</title>
		<link>http://www.allegro.cc/forums/view/605129</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 26 Sep 2010 07:16:28 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m writing a simple program to write characters 0-255 on the screen with the TTF addon. It is the first time I use the TTF addon so I&#39;m a bit confused.</p><p>If I hardcode a string with extended ASCII characters as in: </p><div class="source-code snippet"><div class="inner"><pre>al_draw_text<span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, al_map_rgb<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="s">"ÁÉÍÓÚÜ"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

it works fine. But if try to initialize a <span class="source-code"><span class="k1">char</span></span> array and then draw the resulting string as in:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">for</span> <span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">256</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  text<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> i <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span>
al_draw_text<span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, al_map_rgb<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, text<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

it only draws characters up to 127.</p><p>So, what&#39;s the trick here?.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kenmasters1976)</author>
		<pubDate>Sun, 26 Sep 2010 03:23:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did you declare text as unsigned char[]?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Sun, 26 Sep 2010 03:27:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro uses UTF-8 as its text representation, not ASCII. The first 127 characters are the same in UTF-8 and ASCII, but anything above 127 is different. In fact, a byte the value of which is &gt; 127 signifies many different things in UTF-8, none of which are single-byte characters. See <a href="http://en.wikipedia.org/wiki/UTF-8#Description">this</a> for more info.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sun, 26 Sep 2010 05:48:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OK. Thanks SiegeLord.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kenmasters1976)</author>
		<pubDate>Sun, 26 Sep 2010 05:59:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That said, this works:</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> ii <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> ii <span class="k3">&lt;</span> <span class="n">256</span><span class="k2">;</span> ii<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">char</span> str<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
    <span class="k1">int</span> num_bytes <span class="k3">=</span> al_utf8_encode<span class="k2">(</span>str, ii<span class="k2">)</span><span class="k2">;</span>
    str<span class="k2">[</span>num_bytes<span class="k2">]</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span>
    al_draw_text<span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, al_map_rgb<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="k2">(</span>ii % <span class="n">32</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">15</span>, <span class="k2">(</span>ii <span class="k3">/</span> <span class="n">32</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">25</span> <span class="k3">+</span> <span class="n">10</span>, <span class="n">0</span>, str<span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>

Supposedly that set of characters corresponds to a particular extended ASCII set of characters.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sun, 26 Sep 2010 06:04:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, great!. I was just looking for a way to do this.</p><p>Thanks again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kenmasters1976)</author>
		<pubDate>Sun, 26 Sep 2010 07:16:28 +0000</pubDate>
	</item>
</rss>
