<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Images from buffer</title>
		<link>http://www.allegro.cc/forums/view/610850</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 18 Aug 2012 14:16:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How to load images from buffer in allegro5?</p><p>Or something like this, because i don&#39;t know even how to display this :/</p><p>I&#39;ve got this 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="p">#include &lt;ft2build.h&gt;</span>
<span class="number">  2</span><span class="p">#include FT_FREETYPE_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 10</span><span class="k2">{</span>
<span class="number"> 11</span>  FT_Library  library<span class="k2">;</span>
<span class="number"> 12</span>  FT_Face    face<span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>  FT_Init_FreeType<span class="k2">(</span> <span class="k3">&amp;</span>library <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  FT_New_Face<span class="k2">(</span> library, <span class="s">"DejaVuSans.ttf"</span>, <span class="n">0</span>, <span class="k3">&amp;</span>face <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>  FT_Set_Char_Size<span class="k2">(</span> face, <span class="n">0</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">64</span>, <span class="n">300</span>, <span class="n">300</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  FT_Set_Pixel_Sizes<span class="k2">(</span> face, <span class="n">0</span>, <span class="n">16</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>  FT_GlyphSlot slot <span class="k3">=</span> face-&gt;glyph<span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>  FT_UInt gindex <span class="k3">=</span> FT_Get_Char_Index<span class="k2">(</span> face, <span class="s">'W'</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  FT_Load_Glyph<span class="k2">(</span> face, gindex, FT_LOAD_NO_BITMAP <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>  FT_Render_Glyph<span class="k2">(</span> face-&gt;glyph, FT_RENDER_MODE_NORMAL <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</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="number"> 28</span>
<span class="number"> 29</span>  <span class="c">// slot-&gt;bitmap.buffer; ?? How to draw it in display?</span>
<span class="number"> 30</span>
<span class="number"> 31</span>  <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_384.html" target="_blank">getchar</a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span> display <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 37</span><span class="k2">}</span>
</div></div><p>

You could tell me, that is allegro_font extension...<br />this extension is... never mind<br />when i display text, where there are spaces between letters, this ... ( 400 letters ) get almost half processor usage<br />but normal text is drawing almost clearly -.-<br />my app has lags by this...</p><p>( EXAMPLE )
</p><pre>
[WITH SPACES]
A  B  C  D  E  F  G
[NO SPACES]
ABCDEFG
</pre><p>
Please, help <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Fri, 17 Aug 2012 20:03:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What are you trying to say is that you want to use FreeType directly because the Allegro Font addon is slow when you draw text with spaces?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Fri, 17 Aug 2012 21:30:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes</p><p>With spacing, example, between letters is 10px space,<br />so, I draw every letter alone and add 10 px space, and this cheating...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Fri, 17 Aug 2012 23:00:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, then it&#39;s true, it&#39;s better if you find a way to use FreeType directly. I don&#39;t know how to do it, though.</p><p>I have never heard this particular problem with spaces, but indeed Allegro has some problems when drawing fonts.</p><p>There is a way to cache the text you want to draw before drawing it, that should make everything faster but it&#39;s a hacky (not elegant) way of doing it.</p><p>It&#39;s a real hack: you just have to draw the text before using it... Yep take the drawing function and draw all the characters and numbers of your alphabet, after that, it should be faster...</p><p>Instead of drawing, you can also use the <span class="source-code"><a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span><span class="k2">)</span></span> function. Do something like this:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="s">"abcdefghijklmnñopqrstuvw123456789ABCDEFGHIJKLMNÑOPQRSTUW,.:;"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

That should improve a bit.</p><p>But If you&#39;re having problems with spaces... I really don&#39;t know...</p><p>Now, I know this may sound a little bit crazy, but at the same time if you&#39;re experiencing too much lag when drawing fonts using Allegro, it&#39;s because you&#39;re using text a lot, so for that reason it might be better to use SFML since it handles better the font drawing operations.</p><p>Because I don&#39;t know, using FreeType directly doesn&#39;t sound like a good idea to me.</p><p><b>Edit:</b></p><p>Have you created the font before or after creating the display?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Fri, 17 Aug 2012 23:23:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for your answer</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/610850/963335#target">AMCerasoli</a> said:</div><div class="quote"><p>you just have to draw the text before using it</p></div></div><p>

Yes, i now it...<br />Look at this ( cut from my 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">if</span><span class="k2">(</span> this-&gt;hspacing <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">if</span><span class="k2">(</span> text_width <span class="k3">&gt;</span> this-&gt;length <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number">  4</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_LEFT <span class="k2">)</span> text_width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  5</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_RIGHT <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number">  6</span>  <span class="k1">else</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> text_width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>, text_width, <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>, this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span><span class="k1">else</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>  std::string stext  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  std::string sbytes  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;bytes <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  this-&gt;bcolumn    <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  <span class="k1">if</span><span class="k2">(</span> text_width <span class="k3">+</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span> <span class="k3">&gt;</span> this-&gt;length <span class="k2">)</span>
<span class="number"> 17</span>  <span class="k2">{</span>
<span class="number"> 18</span>    text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width <span class="k3">-</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k2">}</span>
<span class="number"> 20</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_LEFT <span class="k2">)</span> text_width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 21</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_RIGHT <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number"> 22</span>  <span class="k1">else</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> text_width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>  <span class="k1">unsigned</span> <span class="k1">short</span> B <span class="k3">=</span> sbytes.size<span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="k1">for</span><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> A <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> A <span class="k3">&lt;</span> B<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>A <span class="k2">)</span>
<span class="number"> 26</span>  <span class="k2">{</span>
<span class="number"> 27</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>,
<span class="number"> 28</span>      text_width <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, stext.substr<span class="k2">(</span> <span class="n">0</span>, this-&gt;bcolumn <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> A <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span>,
<span class="number"> 29</span>      <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>,
<span class="number"> 30</span>      stext.substr<span class="k2">(</span> this-&gt;bcolumn, sbytes<span class="k2">[</span>A<span class="k2">]</span> <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>    this-&gt;bcolumn <span class="k3">+</span><span class="k3">=</span> sbytes<span class="k2">[</span>A<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 32</span>  <span class="k2">}</span>
<span class="number"> 33</span><span class="k2">}</span>
</div></div><p>

IF no spacing<br />ELSE spacing</p><p>From my provisional input</p><p>hmm... I could use sfml, as you say, but I like allegro <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>If you want to test this, have it:</p><p>CPP BInput.cpp
</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">// Copyright by CodeStepper</span>
<span class="number">   2</span><span class="p">#pragma once</span>
<span class="number">   3</span><span class="p">#include "BInput.hpp"</span>
<span class="number">   4</span>
<span class="number">   5</span>BInput::BInput<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> x, <span class="k1">unsigned</span> <span class="k1">short</span> y, <span class="k1">unsigned</span> <span class="k1">short</span> width, <span class="k1">unsigned</span> <span class="k1">short</span> height <span class="k2">)</span>
<span class="number">   6</span><span class="k2">{</span>
<span class="number">   7</span>  this-&gt;start_x  <span class="k3">=</span> x<span class="k2">;</span>
<span class="number">   8</span>  this-&gt;start_y  <span class="k3">=</span> y<span class="k2">;</span>
<span class="number">   9</span>  this-&gt;stop_x  <span class="k3">=</span> width <span class="k3">+</span> x<span class="k2">;</span>
<span class="number">  10</span>  this-&gt;stop_y  <span class="k3">=</span> height <span class="k3">+</span> y<span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span>  this-&gt;c_width  <span class="k3">=</span> width<span class="k2">;</span>
<span class="number">  13</span>  this-&gt;c_height  <span class="k3">=</span> height<span class="k2">;</span>
<span class="number">  14</span>
<span class="number">  15</span>  this-&gt;column  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  16</span>  this-&gt;bcolumn  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  17</span>  this-&gt;blink_pos  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span>  this-&gt;length    <span class="k3">=</span> width <span class="k3">-</span> <span class="n">20</span><span class="k2">;</span>
<span class="number">  20</span>  this-&gt;halign  <span class="k3">=</span> ALIGN_TO_LEFT<span class="k2">;</span>
<span class="number">  21</span>  this-&gt;valign  <span class="k3">=</span> ALIGN_TO_CENTER<span class="k2">;</span>
<span class="number">  22</span>  this-&gt;left_shift  <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  23</span>  this-&gt;top_shift    <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span>  this-&gt;insert  <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  26</span>  this-&gt;working  <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  27</span>  this-&gt;afterwork <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>  this-&gt;vspacing <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  30</span>  this-&gt;hspacing <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span>  this-&gt;text  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span> <span class="s">""</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>  this-&gt;bytes  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span> <span class="s">""</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>  this-&gt;view  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span> width <span class="k3">-</span> <span class="n">20</span>, height <span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span><span class="k2">}</span>
<span class="number">  36</span>
<span class="number">  37</span>
<span class="number">  38</span>BInput::~BInput<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number">  39</span><span class="k2">{</span>
<span class="number">  40</span>  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span> this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span> this-&gt;bytes <span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span> this-&gt;view <span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span><span class="k2">}</span>
<span class="number">  44</span>
<span class="number">  45</span>
<span class="number">  46</span><span class="k1">void</span> BInput::captureChar<span class="k2">(</span> ALLEGRO_KEYBOARD_EVENT <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a>, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k2">)</span>
<span class="number">  47</span><span class="k2">{</span>
<span class="number">  48</span>  <span class="k1">bool</span> change <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  49</span>  <span class="k1">if</span><span class="k2">(</span> key.unichar <span class="k3">&gt;</span> <span class="n">31</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> key.unichar <span class="k3">!</span><span class="k3">=</span> <span class="n">127</span> <span class="k2">)</span>
<span class="number">  50</span>  <span class="k2">{</span>
<span class="number">  51</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>unicode <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span> <span class="s">""</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <a href="http://www.allegro.cc/manual/al_ustr_append_chr"><span class="a">al_ustr_append_chr</span></a><span class="k2">(</span> unicode, key.unichar <span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span>    <span class="k1">if</span><span class="k2">(</span> this-&gt;insert <span class="k2">)</span>
<span class="number">  55</span>    <span class="k2">{</span>
<span class="number">  56</span>      <a href="http://www.allegro.cc/manual/al_ustr_insert"><span class="a">al_ustr_insert</span></a><span class="k2">(</span> this-&gt;text, this-&gt;bcolumn, unicode <span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>      <a href="http://www.allegro.cc/manual/al_ustr_insert_chr"><span class="a">al_ustr_insert_chr</span></a><span class="k2">(</span> this-&gt;bytes, this-&gt;column, <a href="http://www.allegro.cc/manual/al_ustr_size"><span class="a">al_ustr_size</span></a><span class="k2">(</span> unicode <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>    <span class="k2">}</span>
<span class="number">  59</span>    <span class="k1">else</span>
<span class="number">  60</span>    <span class="k2">{</span>
<span class="number">  61</span>      <a href="http://www.allegro.cc/manual/al_ustr_replace_range"><span class="a">al_ustr_replace_range</span></a><span class="k2">(</span> this-&gt;text, this-&gt;bcolumn, this-&gt;bcolumn <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_ustr_get"><span class="a">al_ustr_get</span></a><span class="k2">(</span> this-&gt;bytes, column <span class="k2">)</span>, unicode <span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>      <a href="http://www.allegro.cc/manual/al_ustr_set_chr"><span class="a">al_ustr_set_chr</span></a><span class="k2">(</span> this-&gt;bytes, this-&gt;column, <a href="http://www.allegro.cc/manual/al_ustr_size"><span class="a">al_ustr_size</span></a><span class="k2">(</span> unicode <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <span class="k2">}</span>
<span class="number">  64</span>
<span class="number">  65</span>    this-&gt;bcolumn <span class="k3">+</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_get"><span class="a">al_ustr_get</span></a><span class="k2">(</span> this-&gt;bytes, column <span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>    this-&gt;column<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</span>    <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span> unicode <span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>  <span class="k2">}</span>
<span class="number">  70</span>  <span class="k1">else</span>
<span class="number">  71</span>  <span class="k2">{</span>
<span class="number">  72</span>    <span class="k1">switch</span><span class="k2">(</span> key.keycode <span class="k2">)</span>
<span class="number">  73</span>    <span class="k2">{</span>
<span class="number">  74</span>    <span class="k1">case</span> ALLEGRO_KEY_BACKSPACE:
<span class="number">  75</span>      <span class="k1">if</span><span class="k2">(</span> this-&gt;column <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number">  76</span>      <span class="k2">{</span>
<span class="number">  77</span>        this-&gt;column--<span class="k2">;</span>
<span class="number">  78</span>        this-&gt;bcolumn <span class="k3">-</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_get"><span class="a">al_ustr_get</span></a><span class="k2">(</span> this-&gt;bytes, column <span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>        <a href="http://www.allegro.cc/manual/al_ustr_remove_range"><span class="a">al_ustr_remove_range</span></a><span class="k2">(</span> this-&gt;text, this-&gt;bcolumn, this-&gt;bcolumn <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_ustr_get"><span class="a">al_ustr_get</span></a><span class="k2">(</span> this-&gt;bytes, column <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>        <a href="http://www.allegro.cc/manual/al_ustr_remove_chr"><span class="a">al_ustr_remove_chr</span></a><span class="k2">(</span> this-&gt;bytes, this-&gt;column <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">break</span><span class="k2">;</span>
<span class="number">  84</span>    default: change <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  85</span>    <span class="k2">}</span>
<span class="number">  86</span>  <span class="k2">}</span>
<span class="number">  87</span>
<span class="number">  88</span>  <span class="c">//////////////////////////////////////////////////////////////////////////</span>
<span class="number">  89</span>  <span class="k1">if</span><span class="k2">(</span> change <span class="k2">)</span>
<span class="number">  90</span>  <span class="k2">{</span>
<span class="number">  91</span>    <span class="k1">short</span> text_width  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_ustr_width"><span class="a">al_get_ustr_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, this-&gt;text <span class="k2">)</span>,
<span class="number">  92</span>        <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  93</span>
<span class="number">  94</span>    <span class="k1">if</span><span class="k2">(</span> this-&gt;valign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_TOP <span class="k2">)</span> <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  95</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;valign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_BOTTOM <span class="k2">)</span> <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a> <span class="k3">=</span> this-&gt;c_height <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>    <span class="k1">else</span> <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a> <span class="k3">=</span> this-&gt;c_height <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  97</span>
<span class="number">  98</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span> this-&gt;view <span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span> <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><span class="k2">;</span>
<span class="number"> 100</span>
<span class="number"> 101</span>    <span class="k1">if</span><span class="k2">(</span> this-&gt;hspacing <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number"> 102</span>    <span class="k2">{</span>
<span class="number"> 103</span>      <span class="k1">if</span><span class="k2">(</span> text_width <span class="k3">&gt;</span> this-&gt;length <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number"> 104</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_LEFT <span class="k2">)</span> text_width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 105</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_RIGHT <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number"> 106</span>      <span class="k1">else</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> text_width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 107</span>
<span class="number"> 108</span>      <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>, text_width, <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>, this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>    <span class="k2">}</span>
<span class="number"> 110</span>    <span class="k1">else</span>
<span class="number"> 111</span>    <span class="k2">{</span>
<span class="number"> 112</span>      std::string stext  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>      std::string sbytes  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;bytes <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>      this-&gt;bcolumn    <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 115</span>
<span class="number"> 116</span>      <span class="k1">if</span><span class="k2">(</span> text_width <span class="k3">+</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span> <span class="k3">&gt;</span> this-&gt;length <span class="k2">)</span>
<span class="number"> 117</span>      <span class="k2">{</span>
<span class="number"> 118</span>        text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width <span class="k3">-</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>      <span class="k2">}</span>
<span class="number"> 120</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_LEFT <span class="k2">)</span> text_width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 121</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_RIGHT <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number"> 122</span>      <span class="k1">else</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> text_width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 123</span>
<span class="number"> 124</span>      <span class="k1">unsigned</span> <span class="k1">short</span> B <span class="k3">=</span> sbytes.size<span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>      <span class="k1">for</span><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> A <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> A <span class="k3">&lt;</span> B<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>A <span class="k2">)</span>
<span class="number"> 126</span>      <span class="k2">{</span>
<span class="number"> 127</span>        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>,
<span class="number"> 128</span>          text_width <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, stext.substr<span class="k2">(</span> <span class="n">0</span>, this-&gt;bcolumn <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> A <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span>,
<span class="number"> 129</span>          <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>,
<span class="number"> 130</span>          stext.substr<span class="k2">(</span> this-&gt;bcolumn, sbytes<span class="k2">[</span>A<span class="k2">]</span> <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>        this-&gt;bcolumn <span class="k3">+</span><span class="k3">=</span> sbytes<span class="k2">[</span>A<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 132</span>      <span class="k2">}</span>
<span class="number"> 133</span>    <span class="k2">}</span>
<span class="number"> 134</span>
<span class="number"> 135</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span> display <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>
<span class="number"> 137</span>    this-&gt;working  <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 138</span>    this-&gt;afterwork <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 139</span>  <span class="k2">}</span>
<span class="number"> 140</span><span class="k2">}</span>
<span class="number"> 141</span>
<span class="number"> 142</span><span class="c">/////////////////////</span>
<span class="number"> 143</span><span class="k1">void</span> BInput::display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span>
<span class="number"> 144</span><span class="k2">{</span>
<span class="number"> 145</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span> this-&gt;start_x, this-&gt;start_y, this-&gt;stop_x, this-&gt;stop_y, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">170</span>, <span class="n">170</span>, <span class="n">170</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span> this-&gt;start_x <span class="k3">+</span> <span class="n">1</span>, this-&gt;start_y <span class="k3">+</span> <span class="n">1</span>, this-&gt;stop_x <span class="k3">-</span> <span class="n">1</span>, this-&gt;stop_y <span class="k3">-</span> <span class="n">1</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">230</span>, <span class="n">230</span>, <span class="n">230</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span> this-&gt;view, this-&gt;start_x <span class="k3">+</span> this-&gt;left_shift, this-&gt;start_y <span class="k3">+</span> this-&gt;top_shift, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>
<span class="number"> 149</span>  <span class="k1">if</span><span class="k2">(</span> this-&gt;working <span class="k2">)</span>
<span class="number"> 150</span>  <span class="k2">{</span>
<span class="number"> 151</span>    <span class="k1">unsigned</span> <span class="k1">short</span> reaper <span class="k3">=</span> <span class="k2">(</span> this-&gt;column <span class="k2">)</span> ? this-&gt;hspacing <span class="k3">/</span> <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 152</span>    this-&gt;blink_pos <span class="k3">=</span> this-&gt;start_x <span class="k3">+</span> this-&gt;left_shift <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_ustr_width"><span class="a">al_get_ustr_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, this-&gt;text <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span> <span class="k3">-</span>
<span class="number"> 153</span>      reaper<span class="k2">;</span>
<span class="number"> 154</span>    
<span class="number"> 155</span>    <span class="k1">if</span><span class="k2">(</span> this-&gt;blink_pos <span class="k3">&gt;</span> this-&gt;start_x <span class="k3">+</span> this-&gt;length <span class="k3">+</span> this-&gt;left_shift <span class="k2">)</span>
<span class="number"> 156</span>      this-&gt;blink_pos <span class="k3">=</span> this-&gt;start_x <span class="k3">+</span> this-&gt;length <span class="k3">+</span> this-&gt;left_shift<span class="k2">;</span>
<span class="number"> 157</span>
<span class="number"> 158</span>    this-&gt;working  <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 159</span>  <span class="k2">}</span>
<span class="number"> 160</span>  <span class="k1">if</span><span class="k2">(</span> this-&gt;blink_pos <span class="k2">)</span>
<span class="number"> 161</span>  <span class="k2">{</span>
<span class="number"> 162</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a>
<span class="number"> 163</span>    <span class="k2">(</span>
<span class="number"> 164</span>      this-&gt;blink_pos,
<span class="number"> 165</span>      this-&gt;start_y <span class="k3">+</span> this-&gt;c_height <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> this-&gt;vspacing,
<span class="number"> 166</span>      this-&gt;blink_pos <span class="k3">+</span> <span class="n">1</span>,
<span class="number"> 167</span>      this-&gt;start_y <span class="k3">+</span> this-&gt;c_height <span class="k3">/</span> <span class="n">2</span> <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span> <span class="k3">+</span> this-&gt;vspacing,
<span class="number"> 168</span>      <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>
<span class="number"> 169</span>    <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 170</span>  <span class="k2">}</span>
<span class="number"> 171</span><span class="k2">}</span>
<span class="number"> 172</span>
<span class="number"> 173</span><span class="k1">void</span> BInput::blinker<span class="k2">(</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span>
<span class="number"> 174</span><span class="k2">{</span>
<span class="number"> 175</span>  <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span>this-&gt;working <span class="k2">)</span>
<span class="number"> 176</span>  <span class="k2">{</span>
<span class="number"> 177</span>    <span class="k1">unsigned</span> <span class="k1">short</span> reaper <span class="k3">=</span> <span class="k2">(</span> this-&gt;column <span class="k2">)</span> ? this-&gt;hspacing <span class="k3">/</span> <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 178</span>    this-&gt;blink_pos <span class="k3">=</span> <span class="k2">(</span> this-&gt;blink_pos <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>this-&gt;afterwork <span class="k2">)</span>
<span class="number"> 179</span>      ? <span class="n">0</span>
<span class="number"> 180</span>      <span class="k2">:</span> this-&gt;start_x <span class="k3">+</span> this-&gt;left_shift <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_ustr_width"><span class="a">al_get_ustr_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, this-&gt;text <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span> <span class="k3">-</span>
<span class="number"> 181</span>        reaper<span class="k2">;</span>
<span class="number"> 182</span>
<span class="number"> 183</span>    <span class="k1">if</span><span class="k2">(</span> this-&gt;blink_pos <span class="k3">&gt;</span> this-&gt;start_x <span class="k3">+</span> this-&gt;length <span class="k3">+</span> this-&gt;left_shift <span class="k2">)</span>
<span class="number"> 184</span>      this-&gt;blink_pos <span class="k3">=</span> this-&gt;start_x <span class="k3">+</span> this-&gt;length <span class="k3">+</span> this-&gt;left_shift<span class="k2">;</span>
<span class="number"> 185</span>
<span class="number"> 186</span>    this-&gt;afterwork <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 187</span>  <span class="k2">}</span>
<span class="number"> 188</span><span class="k2">}</span>
<span class="number"> 189</span><span class="c">/////////////////////</span>
<span class="number"> 190</span>
<span class="number"> 191</span><span class="k1">void</span> BInput::textShift<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> width, <span class="k1">char</span> vertical_align, <span class="k1">char</span> horizontal_align, <span class="k1">char</span> top, <span class="k1">char</span> left <span class="k2">)</span>
<span class="number"> 192</span><span class="k2">{</span>
<span class="number"> 193</span>  this-&gt;length    <span class="k3">=</span> width<span class="k2">;</span>
<span class="number"> 194</span>  this-&gt;halign    <span class="k3">=</span> horizontal_align<span class="k2">;</span>
<span class="number"> 195</span>  this-&gt;valign    <span class="k3">=</span> vertical_align<span class="k2">;</span>
<span class="number"> 196</span>  this-&gt;left_shift  <span class="k3">=</span> left<span class="k2">;</span>
<span class="number"> 197</span>  this-&gt;top_shift    <span class="k3">=</span> top<span class="k2">;</span>
<span class="number"> 198</span><span class="k2">}</span>
<span class="number"> 199</span>
<span class="number"> 200</span><span class="k1">void</span> BInput::spaceChange<span class="k2">(</span> <span class="k1">char</span> vertical_spacing, <span class="k1">char</span> horizontal_spacing <span class="k2">)</span>
<span class="number"> 201</span><span class="k2">{</span>
<span class="number"> 202</span>  this-&gt;hspacing <span class="k3">=</span> horizontal_spacing<span class="k2">;</span>
<span class="number"> 203</span>  this-&gt;vspacing <span class="k3">=</span> vertical_spacing<span class="k2">;</span>
<span class="number"> 204</span><span class="k2">}</span>
</div></div><p>

HEADER BInput.hpp
</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">// Copyright by CodeStepper</span>
<span class="number">  2</span><span class="p">#pragma once</span>
<span class="number">  3</span><span class="p">#include "BlackGUI.hpp"</span>
<span class="number">  4</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">enum</span> CONTROL_ALIGN
<span class="number">  7</span><span class="k2">{</span>
<span class="number">  8</span>  ALIGN_TO_LEFT,
<span class="number">  9</span>  ALIGN_TO_RIGHT,
<span class="number"> 10</span>  ALIGN_TO_CENTER,
<span class="number"> 11</span>  ALIGN_TO_TOP,
<span class="number"> 12</span>  ALIGN_TO_BOTTOM
<span class="number"> 13</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">class</span> BInput <span class="k2">:</span> <span class="k1">private</span> BlackGUI
<span class="number"> 17</span><span class="k2">{</span>
<span class="number"> 18</span>private:
<span class="number"> 19</span>  <span class="k1">unsigned</span> <span class="k1">short</span> column<span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">unsigned</span> <span class="k1">short</span> bcolumn<span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>  <span class="k1">unsigned</span> <span class="k1">short</span> blink_pos<span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>  <span class="k1">unsigned</span> <span class="k1">short</span> length<span class="k2">;</span>
<span class="number"> 25</span>  <span class="k1">char</span> top_shift<span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">char</span> left_shift<span class="k2">;</span>
<span class="number"> 27</span>  <span class="k1">char</span> halign<span class="k2">;</span>
<span class="number"> 28</span>  <span class="k1">char</span> valign<span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span>  <span class="k1">char</span> vspacing<span class="k2">;</span>
<span class="number"> 31</span>  <span class="k1">char</span> hspacing<span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>  <span class="k1">bool</span> insert<span class="k2">;</span>
<span class="number"> 34</span>  <span class="k1">bool</span> working<span class="k2">;</span>
<span class="number"> 35</span>  <span class="k1">bool</span> afterwork<span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>text<span class="k2">;</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>bytes<span class="k2">;</span>
<span class="number"> 39</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>view<span class="k2">;</span>
<span class="number"> 40</span>public:
<span class="number"> 41</span>  BInput<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> x, <span class="k1">unsigned</span> <span class="k1">short</span> y, <span class="k1">unsigned</span> <span class="k1">short</span> width, <span class="k1">unsigned</span> <span class="k1">short</span> height <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>  ~BInput<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>
<span class="number"> 44</span>  <span class="k1">void</span> captureChar<span class="k2">(</span> ALLEGRO_KEYBOARD_EVENT <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a>, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="k1">void</span> textShift<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> width, <span class="k1">char</span> vertical_align, <span class="k1">char</span> horizontal_align, <span class="k1">char</span> top, <span class="k1">char</span> left <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>  <span class="k1">void</span> spaceChange<span class="k2">(</span> <span class="k1">char</span> vertical_spacing, <span class="k1">char</span> horizontal_spacing <span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 47</span>
<span class="number"> 48</span>  <span class="k1">void</span> display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>  <span class="k1">void</span> blinker<span class="k2">(</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

CPP BlackGUI:
</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">// Copyright by CodeStepper</span>
<span class="number">  2</span><span class="p">#pragma once</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  8</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">class</span> BlackGUI
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>protected:
<span class="number"> 13</span>  <span class="k1">unsigned</span> <span class="k1">short</span> start_x<span class="k2">;</span>
<span class="number"> 14</span>  <span class="k1">unsigned</span> <span class="k1">short</span> start_y<span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">unsigned</span> <span class="k1">short</span> stop_x<span class="k2">;</span>
<span class="number"> 16</span>  <span class="k1">unsigned</span> <span class="k1">short</span> stop_y<span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  <span class="k1">unsigned</span> <span class="k1">short</span> c_width<span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">unsigned</span> <span class="k1">short</span> c_height<span class="k2">;</span>
<span class="number"> 20</span>public:
<span class="number"> 21</span>  <span class="k1">void</span> LoadTheme<span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>theme_name <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  <span class="k1">void</span> UnloadTheme<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

HEADER BlackGUI
</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="p">#pragma once</span>
<span class="number">  2</span><span class="p">#include "BlackGUI.hpp"</span>
<span class="number">  3</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">void</span> BlackGUI::LoadTheme<span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>theme_name <span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span>
<span class="number"> 10</span>
<span class="number"> 11</span><span class="k1">void</span> BlackGUI::UnloadTheme<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 12</span><span class="k2">{</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k2">}</span>
</div></div><p>

and of course main.cpp
</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">// Copyright by CodeStepper</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="p">#include "BlackGUI.hpp"</span>
<span class="number">  9</span><span class="p">#include "BInput.hpp"</span>
<span class="number"> 10</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 13</span><span class="k2">{</span>
<span class="number"> 14</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a>    <span class="k3">*</span>display  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</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="number"> 21</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a>    <span class="k3">*</span>timer    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a>    <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span> <span class="s">"DejaVuSans.ttf"</span>, <span class="n">14</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <span class="k1">bool</span> run    <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">bool</span> redraw    <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="k1">char</span> counter  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>  <span class="c">// Input allocation</span>
<span class="number"> 30</span>  BInput input<span class="k2">(</span> <span class="n">50</span>, <span class="n">50</span>, <span class="n">500</span>, <span class="n">40</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>  <span class="c">// Spacing</span>
<span class="number"> 33</span>  input.spaceChange<span class="k2">(</span> <span class="n">5</span>, <span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span>  <span class="c">// Text shift ( blinker does not work correct now :P )</span>
<span class="number"> 36</span>  <span class="c">//input.textShift( 300, ALIGN_TO_CENTER, ALIGN_TO_CENTER, 10, 40 );</span>
<span class="number"> 37</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span> timer <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span> display <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span> timer <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>  <span class="k1">while</span><span class="k2">(</span> run <span class="k2">)</span>
<span class="number"> 44</span>  <span class="k2">{</span>
<span class="number"> 45</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number"> 46</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span> queue, <span class="k3">&amp;</span>event <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</span>    <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER <span class="k2">)</span>
<span class="number"> 49</span>    <span class="k2">{</span>
<span class="number"> 50</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 51</span>    <span class="k2">}</span>
<span class="number"> 52</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP <span class="k2">)</span>
<span class="number"> 53</span>    <span class="k2">{</span>
<span class="number"> 54</span>      <span class="k1">if</span><span class="k2">(</span> event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE <span class="k2">)</span>
<span class="number"> 55</span>        run <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 56</span>    <span class="k2">}</span>
<span class="number"> 57</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR <span class="k2">)</span>
<span class="number"> 58</span>    <span class="k2">{</span>
<span class="number"> 59</span>      input.captureChar<span class="k2">(</span> event.keyboard, <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, display <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>    <span class="k2">}</span>
<span class="number"> 61</span>
<span class="number"> 62</span>    <span class="k1">if</span><span class="k2">(</span> redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span> queue <span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 63</span>    <span class="k2">{</span>
<span class="number"> 64</span>      <span class="k1">if</span><span class="k2">(</span> counter <span class="k3">=</span><span class="k3">=</span> <span class="n">30</span> <span class="k2">)</span>
<span class="number"> 65</span>      <span class="k2">{</span>
<span class="number"> 66</span>        input.blinker<span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>        counter <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 68</span>      <span class="k2">}</span>
<span class="number"> 69</span>      counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 70</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 71</span>
<span class="number"> 72</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">240</span>, <span class="n">240</span>, <span class="n">240</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span>
<span class="number"> 74</span>      input.display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 75</span>
<span class="number"> 76</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 77</span>    <span class="k2">}</span>
<span class="number"> 78</span>  <span class="k2">}</span>
<span class="number"> 79</span>
<span class="number"> 80</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 81</span><span class="k2">}</span>
</div></div><p>

In this case i couldn&#39;t draw text before using it <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I minimize the CPU usage to minimum (at least I think so)</p><p>If you want to help me with GUI creating, write on PM <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Fri, 17 Aug 2012 23:48:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Wow. Too much code, I can&#39;t read it right now (working). </p><p>Maybe this in your code but as I said I can&#39;t read it right now. How are you measuring the speed of your program?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Fri, 17 Aug 2012 23:54:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>cheating only if i write something ( only if i write a lot of letters - small lag from 200, i think ), because then the function starts drawing, a picture to a bitmap, and finally a bitmap is displaying ( bitmap is changing when a letter is captured ) <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>hmm... this code is only on copy - paste - debug <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><br />I gave this code for test if you want</p><p>My CPU is AMD Athlon 64 ( 2,4 Ghz ), so this new he is not ( I don&#39;t know, if I translate this correct <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> )</p><p>I check usage of processor with process manager ( windows )</p><p>/// EDIT:<br />I&#39;ve got one idea, how to improve performance <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Sat, 18 Aug 2012 00:02:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know man... I think you&#39;re not measuring the speed of your program correctly... Do you have a FPS (Frames Per Second) algorithm there? I can&#39;t see it in your code.</p><p>You have your timer variable set to 60FPS, how many FPS are you getting?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Sat, 18 Aug 2012 02:19:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have 28 when i put 400 letters</p><p>This is my algorithm:
</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="p">#include "BlackGUI.hpp"</span>
<span class="number">  8</span><span class="p">#include "BInput.hpp"</span>
<span class="number">  9</span>
<span class="number"> 10</span>
<span class="number"> 11</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 12</span><span class="k2">{</span>
<span class="number"> 13</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a>    <span class="k3">*</span>display  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</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="number"> 20</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a>    <span class="k3">*</span>timer    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a>    <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>    <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span> <span class="s">"DejaVuSans.ttf"</span>, <span class="n">14</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>  <span class="k1">bool</span> run    <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="k1">bool</span> redraw    <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">char</span> counter  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span><span class="c">// Here ------</span>
<span class="number"> 29</span>  <span class="k1">float</span> cout <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">float</span> bp <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 31</span><span class="c">// -------</span>
<span class="number"> 32</span>  <span class="c">// Input allocation</span>
<span class="number"> 33</span>  BInput input<span class="k2">(</span> <span class="n">50</span>, <span class="n">50</span>, <span class="n">500</span>, <span class="n">40</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span>  <span class="c">// Spacing</span>
<span class="number"> 36</span>  input.spaceChange<span class="k2">(</span> <span class="n">5</span>, <span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span> timer <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span> queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span> display <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span> timer <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>  <span class="k1">while</span><span class="k2">(</span> run <span class="k2">)</span>
<span class="number"> 44</span>  <span class="k2">{</span>
<span class="number"> 45</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number"> 46</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span> queue, <span class="k3">&amp;</span>event <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</span>    <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER <span class="k2">)</span>
<span class="number"> 49</span>    <span class="k2">{</span>
<span class="number"> 50</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 51</span>    <span class="k2">}</span>
<span class="number"> 52</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP <span class="k2">)</span>
<span class="number"> 53</span>    <span class="k2">{</span>
<span class="number"> 54</span>      <span class="k1">if</span><span class="k2">(</span> event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE <span class="k2">)</span>
<span class="number"> 55</span>        run <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 56</span>    <span class="k2">}</span>
<span class="number"> 57</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR <span class="k2">)</span>
<span class="number"> 58</span>    <span class="k2">{</span>
<span class="number"> 59</span>      input.captureChar<span class="k2">(</span> event.keyboard, <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, display <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>    <span class="k2">}</span>
<span class="number"> 61</span>
<span class="number"> 62</span>    <span class="k1">if</span><span class="k2">(</span> redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span> queue <span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 63</span>    <span class="k2">{</span>
<span class="number"> 64</span><span class="c">// And here ----------------------------</span>
<span class="number"> 65</span>      <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span> <span class="k2">)</span> <span class="k3">-</span> bp <span class="k3">&lt;</span> <span class="n">1</span> <span class="k2">)</span>
<span class="number"> 66</span>      <span class="k2">{</span>
<span class="number"> 67</span>        cout<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 68</span>      <span class="k2">}</span>
<span class="number"> 69</span>      <span class="k1">else</span>
<span class="number"> 70</span>      <span class="k2">{</span>
<span class="number"> 71</span>        std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> cout<span class="k2">;</span>
<span class="number"> 72</span>        cout <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 73</span>        bp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>      <span class="k2">}</span>
<span class="number"> 75</span><span class="c">// ------------------------------------</span>
<span class="number"> 76</span>      <span class="k1">if</span><span class="k2">(</span> counter <span class="k3">=</span><span class="k3">=</span> <span class="n">30</span> <span class="k2">)</span>
<span class="number"> 77</span>      <span class="k2">{</span>
<span class="number"> 78</span>        input.blinker<span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 79</span>        counter <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 80</span>      <span class="k2">}</span>
<span class="number"> 81</span>      counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 82</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 83</span>
<span class="number"> 84</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">240</span>, <span class="n">240</span>, <span class="n">240</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 85</span>
<span class="number"> 86</span>      input.display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 87</span>
<span class="number"> 88</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 89</span>    <span class="k2">}</span>
<span class="number"> 90</span>  <span class="k2">}</span>
<span class="number"> 91</span>
<span class="number"> 92</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 93</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Sat, 18 Aug 2012 02:29:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Now I see... Your problem is in here:</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>      std::string stext  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number">  2</span>      std::string sbytes  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> this-&gt;bytes <span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>      this-&gt;bcolumn    <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>      <span class="k1">if</span><span class="k2">(</span> text_width <span class="k3">+</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span> <span class="k3">&gt;</span> this-&gt;length <span class="k2">)</span>
<span class="number">  6</span>      <span class="k2">{</span>
<span class="number">  7</span>        text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width <span class="k3">-</span> <span class="k2">(</span> this-&gt;column <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>      <span class="k2">}</span>
<span class="number">  9</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_LEFT <span class="k2">)</span> text_width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 10</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> this-&gt;halign <span class="k3">=</span><span class="k3">=</span> ALIGN_TO_RIGHT <span class="k2">)</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">-</span> text_width<span class="k2">;</span>
<span class="number"> 11</span>      <span class="k1">else</span> text_width <span class="k3">=</span> this-&gt;length <span class="k3">/</span> <span class="n">2</span> <span class="k3">-</span> text_width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>      <span class="k1">unsigned</span> <span class="k1">short</span> B <span class="k3">=</span> sbytes.size<span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>      <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>, text_width, <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>, this-&gt;text <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>      <span class="k1">for</span><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> A <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> A <span class="k3">&lt;</span> B<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>A <span class="k2">)</span>
<span class="number"> 16</span>      <span class="k2">{</span>
<span class="number"> 17</span>        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>,
<span class="number"> 18</span>          text_width <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, stext.substr<span class="k2">(</span> <span class="n">0</span>, this-&gt;bcolumn <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> A <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span>,
<span class="number"> 19</span>          <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>,
<span class="number"> 20</span>          stext.substr<span class="k2">(</span> this-&gt;bcolumn, sbytes<span class="k2">[</span>A<span class="k2">]</span> <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>        this-&gt;bcolumn <span class="k3">+</span><span class="k3">=</span> sbytes<span class="k2">[</span>A<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 22</span>      <span class="k2">}</span>
<span class="number"> 23</span>    <span class="k2">}</span>
</div></div><p>

But more precisely here:</p><div class="source-code snippet"><div class="inner"><pre>      <span class="k1">for</span><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">short</span> A <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> A <span class="k3">&lt;</span> B<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>A <span class="k2">)</span>
      <span class="k2">{</span>
        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">90</span>, <span class="n">90</span>, <span class="n">90</span> <span class="k2">)</span>,
          text_width <span class="k3">+</span> <a href="http://www.allegro.cc/manual/al_get_text_width"><span class="a">al_get_text_width</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, stext.substr<span class="k2">(</span> <span class="n">0</span>, this-&gt;bcolumn <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span> A <span class="k3">*</span> this-&gt;hspacing <span class="k2">)</span>,
          <a href="http://www.allegro.cc/manual/text_height"><span class="a">text_height</span></a>, <span class="n">0</span>,
          stext.substr<span class="k2">(</span> this-&gt;bcolumn, sbytes<span class="k2">[</span>A<span class="k2">]</span> <span class="k2">)</span>.c_str<span class="k2">(</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
        this-&gt;bcolumn <span class="k3">+</span><span class="k3">=</span> sbytes<span class="k2">[</span>A<span class="k2">]</span><span class="k2">;</span>
      <span class="k2">}</span>
</pre></div></div><p>

That is what is causing the lag when appending new characters and not when drawing them.</p><p>If FreeType allows you to set the character spacing then it could help you.</p><p>I don&#39;t know, have you tried creating the ALLEGRO_BITMAP from a file using <span class="source-code"><a href="http://www.allegro.cc/manual/al_load_bitmap_f"><span class="a">al_load_bitmap_f</span></a><span class="k2">(</span><span class="k2">)</span></span>? You could try to load the FreeType bitmap into an <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_FILE"><span class="a">ALLEGRO_FILE</span></a></span> struct, and then use the function I just mentioned to create an <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a></span>. But I&#39;m not sure if that bitmap will be a video bitmap or a memory bitmap.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Sat, 18 Aug 2012 03:57:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for your answer.</p><p>I try to write what you said, but it&#39;s not working :/</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="p">#include &lt;ft2build.h&gt;</span>
<span class="number">  2</span><span class="p">#include FT_FREETYPE_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_memfile.h&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  8</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>  FT_Library  library<span class="k2">;</span>
<span class="number"> 13</span>  FT_Face    face<span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  FT_Init_FreeType<span class="k2">(</span> <span class="k3">&amp;</span>library <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  FT_New_Face<span class="k2">(</span> library, <span class="s">"DejaVuSans.ttf"</span>, <span class="n">0</span>, <span class="k3">&amp;</span>face <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  FT_Set_Char_Size<span class="k2">(</span> face, <span class="n">0</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">64</span>, <span class="n">300</span>, <span class="n">300</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  FT_Set_Pixel_Sizes<span class="k2">(</span> face, <span class="n">0</span>, <span class="n">16</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  FT_GlyphSlot slot <span class="k3">=</span> face-&gt;glyph<span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>  FT_UInt gindex <span class="k3">=</span> FT_Get_Char_Index<span class="k2">(</span> face, <span class="s">'W'</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>  FT_Load_Glyph<span class="k2">(</span> face, gindex, FT_LOAD_NO_BITMAP <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>  FT_Render_Glyph<span class="k2">(</span> face-&gt;glyph, FT_RENDER_MODE_NORMAL <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>
<span class="number"> 27</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span><span class="c">// Opening memfile ( am I doing this right? )</span>
<span class="number"> 30</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FILE"><span class="a">ALLEGRO_FILE</span></a> <span class="k3">*</span>file <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_open_memfile"><span class="a">al_open_memfile</span></a><span class="k2">(</span> slot-&gt;bitmap.buffer, <span class="k1">sizeof</span><span class="k2">(</span> slot-&gt;bitmap.buffer <span class="k2">)</span>, <span class="s">"r"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="c">// Loading bitmap font</span>
<span class="number"> 32</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>fontft <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap_f"><span class="a">al_load_bitmap_f</span></a><span class="k2">(</span> file, <span class="s">".png"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</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="number"> 35</span>
<span class="number"> 36</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span> <span class="n">50</span>, <span class="n">50</span>, <span class="n">120</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span><span class="c">// This doesn't working</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span> fontft, <span class="n">50</span>, <span class="n">50</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>  <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_384.html" target="_blank">getchar</a><span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>
<span class="number"> 43</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span> display <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 45</span><span class="k2">}</span>
</div></div><p>

Error in CMD:
</p><div class="source-code snippet"><div class="inner"><pre>Assertion failed: bitmap, file allegro-5.0.x\src\bitmap.c, <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a> <span class="n">315</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Sat, 18 Aug 2012 12:43:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p> sizeof( slot-&gt;bitmap.buffer )</p></div></div><p>You can&#39;t get the size of dynamically allocated arrays like that. You&#39;ll need to find where FreeType stores the actual size of that array.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 18 Aug 2012 12:59:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am looking, looking and I don&#39;t see anything...</p><p>Maybe I try something else, because because i don&#39;t see any sense at this time to loading this liblary to script...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CodeStepper)</author>
		<pubDate>Sat, 18 Aug 2012 14:16:27 +0000</pubDate>
	</item>
</rss>
