<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Drawing UTF8 text</title>
		<link>http://www.allegro.cc/forums/view/613180</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 29 Aug 2013 03:46:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, I have problem with al_draw_text, I can draw it perfectly, but I want to draw UTF8 characters such as ěščřžýáíé. Is it possible to draw these characters in Allegro 5?</p><p>Tahnk you
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 13:09:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve had the problem of the text editor used on the source files not saving as UTF-8, double check it with a hex editor or something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Sun, 25 Aug 2013 13:27:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m using visual studio 2010 express, i think it saves everythig in utf8 or not?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 13:35:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know, I use mingw with the SciTech editor on windows.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Sun, 25 Aug 2013 13:36:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>too bad <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />.... i&#39;ve searched internet anf found this:<br />stackoverflow.com/questions/279673/save-all-files-in-visual-studio-project-as-utf-8</p><p>but didn&#39;t helped
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 14:54:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="https://www.allegro.cc/forums/thread/606889">From the other thread Allegro 5 Unicode Textdraw</a>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So, unfortunately, for portability to MSVC, we have to externalise UTF-8<br /> strings or write them out using escape codes.
</p></div></div><p>
So load your strings in from a file saved as utf8.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 25 Aug 2013 15:28:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i can&#39;t because strings are generated in run time
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 15:36:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How are they generated at run time? Are any parts of them embedded in the source? Allegro itself is pure UTF8, so if you pass it UTF8 text, it&#39;ll draw it. If any of the text is in the source file, your editor could be messing with it.</p><p>If what you&#39;re doing is concatenating bits of text at run time, take those bits of text from a file.</p><p>Or if you want to, I think you can use escape codes in your literal strings, ie: &quot;\xCDFEBA01&quot; to encode the utf8 directly into a literal string, and get around the fact that MSVC is broken. But its a royal pain to have to hand encode the utf8 into hex escape codes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 25 Aug 2013 18:01:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>it&#39;s history of changes
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 18:26:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Meaning what exactly?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 25 Aug 2013 19:02:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i&#39;m programming board game and it shows hystiry of moves and some words are still the same, do you think that it would be good to load those words from file like suggested other guys?<br />i would like to avoid that way
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Sun, 25 Aug 2013 20:41:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Unfortunately it doesn&#39;t look like you can avoid that, if you want to include non ASCII characters.</p><p>One bonus to loading from a file, is it&#39;ll be easier to translate the game into other languages.</p><p>All you really need to do is load the file into an array of strings at program startup, and use that array.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 25 Aug 2013 20:45:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here is the simple language manager for my game:</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>LanguageManager.hpp
<span class="number">   2</span>
<span class="number">   3</span><span class="p">#ifndef CGE_LANGUAGE_MANAGER_HPP</span>
<span class="number">   4</span><span class="p">#define CGE_LANGUAGE_MANAGER_HPP</span>
<span class="number">   5</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;string&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;map&gt;</span>
<span class="number">   8</span><span class="k1">namespace</span> cge
<span class="number">   9</span><span class="k2">{</span>
<span class="number">  10</span>  <span class="k1">class</span> LanguageManager
<span class="number">  11</span>  <span class="k2">{</span>
<span class="number">  12</span>    std::map<span class="k3">&lt;</span>std::string,std::string&gt; m_strings<span class="k2">;</span>
<span class="number">  13</span>    std::string m_textNotFound<span class="k2">;</span>
<span class="number">  14</span>    <span class="k1">bool</span> _loadTexts<span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span>  public:
<span class="number">  16</span>    <span class="k1">void</span> mapElement<span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> elementName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> text<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>    <span class="k1">const</span> std::string<span class="k3">&amp;</span> getElement<span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> elementName<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>    LanguageManager<span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> path<span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span>    <span class="k1">virtual</span> ~LanguageManager<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number">  21</span><span class="k2">}</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="p">#endif</span>
<span class="number">  24</span>
<span class="number">  25</span>LanguageManager.cpp
<span class="number">  26</span>
<span class="number">  27</span><span class="p">#include "Game/Engine/LanguageManager.hpp"</span>
<span class="number">  28</span><span class="p">#include "Game/Utility/File.hpp"</span>
<span class="number">  29</span><span class="k1">namespace</span> cge
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>  LanguageManager::~LanguageManager<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  32</span>  <span class="k2">{</span>
<span class="number">  33</span>  <span class="k2">}</span>
<span class="number">  34</span>
<span class="number">  35</span>  <span class="k1">const</span> std::string<span class="k3">&amp;</span> LanguageManager::getElement<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> elementName <span class="k2">)</span>
<span class="number">  36</span>  <span class="k2">{</span>
<span class="number">  37</span>    <span class="k1">if</span><span class="k2">(</span>m_strings.find<span class="k2">(</span>elementName<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> m_strings.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  38</span>    <span class="k2">{</span>
<span class="number">  39</span>      <span class="k1">return</span> m_textNotFound<span class="k2">;</span>
<span class="number">  40</span>    <span class="k2">}</span>
<span class="number">  41</span>    <span class="k1">else</span>
<span class="number">  42</span>    <span class="k2">{</span>
<span class="number">  43</span>      <span class="k1">return</span> m_strings<span class="k2">[</span>elementName<span class="k2">]</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="k2">}</span>
<span class="number">  45</span>  <span class="k2">}</span>
<span class="number">  46</span>
<span class="number">  47</span>  <span class="k1">void</span> LanguageManager::mapElement<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> elementName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> text <span class="k2">)</span>
<span class="number">  48</span>  <span class="k2">{</span>
<span class="number">  49</span>    m_strings<span class="k2">[</span>elementName<span class="k2">]</span> <span class="k3">=</span> text<span class="k2">;</span>
<span class="number">  50</span>  <span class="k2">}</span>
<span class="number">  51</span>
<span class="number">  52</span>  <span class="k1">bool</span> LanguageManager::_loadTexts<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> path <span class="k2">)</span>
<span class="number">  53</span>  <span class="k2">{</span>
<span class="number">  54</span>    <span class="c">//open the file</span>
<span class="number">  55</span>    File ifs<span class="k2">(</span> path <span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>    <span class="c">//ensure it is open</span>
<span class="number">  58</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ifs.isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  59</span>    <span class="k2">{</span>
<span class="number">  60</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  61</span>    <span class="k2">}</span>
<span class="number">  62</span>    std::string <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">;</span>
<span class="number">  63</span>
<span class="number">  64</span>    <span class="c">//read each line</span>
<span class="number">  65</span>    <span class="k1">while</span><span class="k2">(</span> ifs.readLine<span class="k2">(</span><a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">)</span> <span class="k2">)</span>
<span class="number">  66</span>    <span class="k2">{</span>
<span class="number">  67</span>
<span class="number">  68</span>      <span class="k1">if</span><span class="k2">(</span>line.length<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  69</span>      <span class="k2">{</span>
<span class="number">  70</span>        <span class="k1">continue</span><span class="k2">;</span>
<span class="number">  71</span>      <span class="k2">}</span>
<span class="number">  72</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>line.length<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'#'</span><span class="k2">)</span>
<span class="number">  73</span>      <span class="k2">{</span>
<span class="number">  74</span>        <span class="k1">continue</span><span class="k2">;</span>
<span class="number">  75</span>      <span class="k2">}</span>
<span class="number">  76</span>
<span class="number">  77</span>      <span class="k1">int</span> lineAt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  78</span>      std::string elemName<span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>      <span class="c">//extract until space</span>
<span class="number">  81</span>      <span class="k1">while</span><span class="k2">(</span>lineAt <span class="k3">&lt;</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>line.length<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  82</span>      <span class="k2">{</span>
<span class="number">  83</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span>lineAt<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> <span class="s">' '</span><span class="k2">)</span>
<span class="number">  84</span>        <span class="k2">{</span>
<span class="number">  85</span>          elemName <span class="k3">+</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span>lineAt<span class="k2">]</span><span class="k2">;</span>
<span class="number">  86</span>          lineAt<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  87</span>        <span class="k2">}</span>
<span class="number">  88</span>        <span class="k1">else</span> 
<span class="number">  89</span>        <span class="k2">{</span>
<span class="number">  90</span>          lineAt <span class="k3">+</span><span class="k3">=</span> <span class="n">3</span><span class="k2">;</span> <span class="c">//' = '</span>
<span class="number">  91</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number">  92</span>        <span class="k2">}</span>
<span class="number">  93</span>      <span class="k2">}</span>
<span class="number">  94</span>
<span class="number">  95</span>      std::string elemVal<span class="k2">;</span>
<span class="number">  96</span>      <span class="c">//extract until end</span>
<span class="number">  97</span>      <span class="k1">while</span><span class="k2">(</span>lineAt <span class="k3">&lt;</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>line.length<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  98</span>      <span class="k2">{</span>
<span class="number">  99</span>        <span class="c">//filter newline</span>
<span class="number"> 100</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span>lineAt<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'\\'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> lineAt <span class="k3">+</span> <span class="n">1</span> <span class="k3">&lt;</span> 
<span class="number"> 101</span>          <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>line.length<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span>lineAt <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'n'</span><span class="k2">)</span>
<span class="number"> 102</span>        <span class="k2">{</span>
<span class="number"> 103</span>          elemVal <span class="k3">+</span><span class="k3">=</span> <span class="s">'\n'</span><span class="k2">;</span>
<span class="number"> 104</span>          lineAt <span class="k3">+</span><span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 105</span>        <span class="k2">}</span>
<span class="number"> 106</span>        <span class="k1">else</span> 
<span class="number"> 107</span>        <span class="k2">{</span>
<span class="number"> 108</span>          elemVal <span class="k3">+</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">[</span>lineAt<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 109</span>          lineAt<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 110</span>        <span class="k2">}</span>
<span class="number"> 111</span>      <span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</span>      mapElement<span class="k2">(</span>elemName, elemVal<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>    <span class="k2">}</span>
<span class="number"> 115</span>
<span class="number"> 116</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 117</span>  <span class="k2">}</span>
<span class="number"> 118</span>
<span class="number"> 119</span>  LanguageManager::LanguageManager<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> path <span class="k2">)</span>
<span class="number"> 120</span>    <span class="k2">:</span> m_textNotFound<span class="k2">(</span><span class="s">"Error: Text not found."</span><span class="k2">)</span>
<span class="number"> 121</span>  <span class="k2">{</span>
<span class="number"> 122</span>    _loadTexts<span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>  <span class="k2">}</span>
<span class="number"> 124</span>
<span class="number"> 125</span><span class="k2">}</span>
<span class="number"> 126</span>
<span class="number"> 127</span>
<span class="number"> 128</span>File.hpp
<span class="number"> 129</span><span class="p">#ifndef CGE_FILE_HPP</span>
<span class="number"> 130</span><span class="p">#define CGE_FILE_HPP</span>
<span class="number"> 131</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number"> 132</span><span class="p">#include &lt;allegro5/allegro5.h&gt;</span>
<span class="number"> 133</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number"> 134</span><span class="p">#include &lt;string&gt;</span>
<span class="number"> 135</span><span class="k1">namespace</span> cge
<span class="number"> 136</span><span class="k2">{</span>
<span class="number"> 137</span>  <span class="k1">class</span> File
<span class="number"> 138</span>  <span class="k2">{</span>
<span class="number"> 139</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FILE"><span class="a">ALLEGRO_FILE</span></a><span class="k3">*</span> m_file<span class="k2">;</span>
<span class="number"> 140</span>  public:
<span class="number"> 141</span>    File<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>    <span class="k1">bool</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_104.html" target="_blank">close</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>    <span class="k1">bool</span> isOpen<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>
<span class="number"> 144</span>    <span class="k1">bool</span> readLine<span class="k2">(</span>std::string<span class="k3">&amp;</span> buff<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>    <span class="k1">bool</span> readAll<span class="k2">(</span>std::string<span class="k3">&amp;</span> buff<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>    <span class="k1">bool</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_600.html" target="_blank">open</a><span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> fileName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> openMode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>    File<span class="k2">(</span><span class="k1">const</span> std::string<span class="k3">&amp;</span> fileName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> openMode <span class="k3">=</span> <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>    <span class="k1">bool</span> eof<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>
<span class="number"> 149</span>    ~File<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 151</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 152</span>
<span class="number"> 153</span><span class="p">#endif</span>
<span class="number"> 154</span>
<span class="number"> 155</span>File.cpp
<span class="number"> 156</span>
<span class="number"> 157</span><span class="p">#include "Game/Utility/File.hpp"</span>
<span class="number"> 158</span><span class="k1">namespace</span> cge
<span class="number"> 159</span><span class="k2">{</span>
<span class="number"> 160</span>  File::File<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 161</span>    <span class="k2">:</span> m_file<span class="k2">(</span>NULL<span class="k2">)</span>
<span class="number"> 162</span>  <span class="k2">{</span>
<span class="number"> 163</span>  <span class="k2">}</span>
<span class="number"> 164</span>
<span class="number"> 165</span>  File::File<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> fileName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> openMode <span class="c">/*= "r"*/</span> <span class="k2">)</span>
<span class="number"> 166</span>    <span class="k2">:</span> m_file<span class="k2">(</span>NULL<span class="k2">)</span>
<span class="number"> 167</span>  <span class="k2">{</span>
<span class="number"> 168</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_600.html" target="_blank">open</a><span class="k2">(</span>fileName,openMode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>  <span class="k2">}</span>
<span class="number"> 170</span>
<span class="number"> 171</span>  File::~File<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 172</span>  <span class="k2">{</span>
<span class="number"> 173</span>  <span class="k2">}</span>
<span class="number"> 174</span>
<span class="number"> 175</span>  <span class="k1">bool</span> File::isOpen<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>
<span class="number"> 176</span>  <span class="k2">{</span>
<span class="number"> 177</span>    <span class="k1">return</span> m_file <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 178</span>  <span class="k2">}</span>
<span class="number"> 179</span>
<span class="number"> 180</span>  <span class="k1">bool</span> File::open<span class="k2">(</span> <span class="k1">const</span> std::string<span class="k3">&amp;</span> fileName, <span class="k1">const</span> std::string<span class="k3">&amp;</span> openMode <span class="k2">)</span>
<span class="number"> 181</span>  <span class="k2">{</span>
<span class="number"> 182</span>    <span class="k1">if</span><span class="k2">(</span>isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 183</span>    <span class="k2">{</span>
<span class="number"> 184</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_104.html" target="_blank">close</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>    <span class="k2">}</span>
<span class="number"> 186</span>
<span class="number"> 187</span>    m_file <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fopen"><span class="a">al_fopen</span></a><span class="k2">(</span>fileName.c_str<span class="k2">(</span><span class="k2">)</span>,openMode.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>
<span class="number"> 189</span>    <span class="k1">return</span> m_file <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 190</span>  <span class="k2">}</span>
<span class="number"> 191</span>
<span class="number"> 192</span>  <span class="k1">bool</span> File::close<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 193</span>  <span class="k2">{</span>
<span class="number"> 194</span>    <span class="k1">if</span><span class="k2">(</span>isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 195</span>    <span class="k2">{</span>
<span class="number"> 196</span>      <a href="http://www.allegro.cc/manual/al_fclose"><span class="a">al_fclose</span></a><span class="k2">(</span>m_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>      m_file <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 198</span>      <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 199</span>    <span class="k2">}</span>
<span class="number"> 200</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 201</span>  <span class="k2">}</span>
<span class="number"> 202</span>
<span class="number"> 203</span>  <span class="k1">bool</span> File::eof<span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>
<span class="number"> 204</span>  <span class="k2">{</span>
<span class="number"> 205</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 206</span>    <span class="k2">{</span>
<span class="number"> 207</span>      <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 208</span>    <span class="k2">}</span>
<span class="number"> 209</span>    <span class="k1">else</span>
<span class="number"> 210</span>    <span class="k2">{</span>
<span class="number"> 211</span>      <span class="k1">return</span> <a href="http://www.allegro.cc/manual/al_feof"><span class="a">al_feof</span></a><span class="k2">(</span>m_file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>    <span class="k2">}</span>
<span class="number"> 213</span>  <span class="k2">}</span>
<span class="number"> 214</span>
<span class="number"> 215</span>  <span class="k1">bool</span> File::readLine<span class="k2">(</span> std::string<span class="k3">&amp;</span> buff <span class="k2">)</span>
<span class="number"> 216</span>  <span class="k2">{</span>
<span class="number"> 217</span>    buff <span class="k3">=</span> <span class="s">""</span><span class="k2">;</span>
<span class="number"> 218</span>    <span class="k1">if</span><span class="k2">(</span>eof<span class="k2">(</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 219</span>    <span class="k2">{</span>
<span class="number"> 220</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 221</span>    <span class="k2">}</span>
<span class="number"> 222</span>
<span class="number"> 223</span>    
<span class="number"> 224</span>    <span class="k1">int</span> c <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 225</span>    <span class="k1">while</span><span class="k2">(</span><span class="k2">(</span>c <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fgetc"><span class="a">al_fgetc</span></a><span class="k2">(</span>m_file<span class="k2">)</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> EOF <span class="k3">&amp;</span><span class="k3">&amp;</span> c <span class="k3">!</span><span class="k3">=</span> <span class="s">'\n'</span><span class="k2">)</span>
<span class="number"> 226</span>    <span class="k2">{</span>
<span class="number"> 227</span>      <span class="k1">if</span><span class="k2">(</span>c <span class="k3">&gt;</span> <span class="n">13</span><span class="k2">)</span>
<span class="number"> 228</span>      buff <span class="k3">+</span><span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>c<span class="k2">;</span>
<span class="number"> 229</span>    <span class="k2">}</span>
<span class="number"> 230</span>
<span class="number"> 231</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 232</span>  <span class="k2">}</span>
<span class="number"> 233</span>
<span class="number"> 234</span>  <span class="k1">bool</span> File::readAll<span class="k2">(</span> std::string<span class="k3">&amp;</span> buff <span class="k2">)</span>
<span class="number"> 235</span>  <span class="k2">{</span>
<span class="number"> 236</span>    buff <span class="k3">=</span> <span class="s">""</span><span class="k2">;</span>
<span class="number"> 237</span>    <span class="k1">if</span><span class="k2">(</span>eof<span class="k2">(</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>isOpen<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 238</span>    <span class="k2">{</span>
<span class="number"> 239</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 240</span>    <span class="k2">}</span>
<span class="number"> 241</span>
<span class="number"> 242</span>
<span class="number"> 243</span>    <span class="k1">int</span> c <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 244</span>    <span class="k1">while</span><span class="k2">(</span><span class="k2">(</span>c <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fgetc"><span class="a">al_fgetc</span></a><span class="k2">(</span>m_file<span class="k2">)</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> EOF<span class="k2">)</span>
<span class="number"> 245</span>    <span class="k2">{</span>
<span class="number"> 246</span>      <span class="k1">if</span><span class="k2">(</span>c <span class="k3">&gt;</span> <span class="n">13</span> <span class="k3">|</span><span class="k3">|</span> c <span class="k3">=</span><span class="k3">=</span> <span class="s">'\n'</span><span class="k2">)</span>
<span class="number"> 247</span>        buff <span class="k3">+</span><span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>c<span class="k2">;</span>
<span class="number"> 248</span>    <span class="k2">}</span>
<span class="number"> 249</span>
<span class="number"> 250</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 251</span>  <span class="k2">}</span>
<span class="number"> 252</span>
<span class="number"> 253</span><span class="k2">}</span>
<span class="number"> 254</span>
<span class="number"> 255</span>
<span class="number"> 256</span>Sample File:
<span class="number"> 257</span>nav.back <span class="k3">=</span> 
<span class="number"> 258</span>nav.sound <span class="k3">=</span> 
<span class="number"> 259</span>pass.across <span class="k3">=</span> Pass\n2\nAcross
<span class="number"> 260</span>chat.send <span class="k3">=</span> Send
<span class="number"> 261</span>chat.mute <span class="k3">=</span> Mute...
<span class="number"> 262</span>chat.censor <span class="k3">=</span> Censor
<span class="number"> 263</span>chat.emoticon <span class="k3">=</span> 
<span class="number"> 264</span>
<span class="number"> 265</span>
<span class="number"> 266</span>Sample usage:
<span class="number"> 267</span>
<span class="number"> 268</span>  <span class="c">//init language manager</span>
<span class="number"> 269</span>      m_languageManager <span class="k3">=</span> <span class="k1">new</span> LanguageManager<span class="k2">(</span><span class="s">"res/language/english.lang"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 270</span>
<span class="number"> 271</span><span class="c">//set button text</span>
<span class="number"> 272</span>m_filterButton-&gt;setText<span class="k2">(</span>language-&gt;getElement<span class="k2">(</span><span class="s">"filter.button"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

It looks like a.cc&#39;s code blocks don&#39;t support unicode so<br />nav.back = ←<br />nav.sound = ♪<br />chat.emoticon = ☺<br />look empty.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Sun, 25 Aug 2013 21:04:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thank you for your answers, i will use the file
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReVolt)</author>
		<pubDate>Mon, 26 Aug 2013 11:40:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can save the file in UTF8 in Visual Studio by going to File-&gt;Advanced Save Options... and selecting Encoding Unicode (UTF-8 without signature) - Codepage 65001.<br />That works for me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Aikei_c)</author>
		<pubDate>Thu, 29 Aug 2013 03:46:08 +0000</pubDate>
	</item>
</rss>
