<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Text input.</title>
		<link>http://www.allegro.cc/forums/view/589667</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 26 Jan 2007 05:21:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just wondering how everyone here deals with inputting text to the screen when your using graphics.</p><p>I was trying to use gstream but it didn&#39;t seem to work very well.. Whenever I tried normal output the characters would just flash as if they weren&#39;t being buffered properly, then when I tried input, it would just be a black screen until I mashed a bunch of keys then my graphics would show.  The characters always went over my mouse too no matter where I put the functions.</p><p>Before gstream, I was looking at this: <a href="http://www.gamedev.net/reference/articles/article2130.asp">http://www.gamedev.net/reference/articles/article2130.asp</a></p><p>It seemed to work pretty good, but I was just curious to see other ideas.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Sun, 21 Jan 2007 22:02:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t see any better way of handling text input other than using keypressed and the scancode/ascii code of the key pressed.  The methods in the article are correct, if you are seeing text written over your cursor than that is a problem with how you are drawing things to the screen, draw text, then cursor, not the other way around.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Sun, 21 Jan 2007 22:32:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This guy&#39;s example is a little difficult for me to use.  What I was trying to do with it was make it into a class, then use it in my game state classes like this:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>titlescreen::logic<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>textbuffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>     cText name<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>     name.key_input<span class="k2">(</span>textBuffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>     name.set_coords<span class="k2">(</span><span class="n">100</span>,<span class="n">100</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- hopefully</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>     cText pass<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>     pass.key_input<span class="k2">(</span>textBuffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>     pass.set_coords<span class="k2">(</span><span class="n">100</span>,<span class="n">100</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- hopefully</span></td></tr><tr><td class="number">12</td><td><span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>titlescreen::draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>     <span class="c">// various graphics</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

But I think the buffers are kinda conflicting and it&#39;s making the entire screen flash..  Even if I could get this to work I have no idea how I&#39;d be able to choose and input text between &quot;name&quot; and &quot;pass&quot; with the mouse.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 22 Jan 2007 00:01:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why would you create a new cText object each time you called logic that makes no sense.  Just make a name and pass object in your constructor, then in your logic you can do an if(needs_login){ name.set_coords(100, 100); pass.set_coords(100, 150); }  Your class should get input only when needed so I&#39;m guessing set_coords would activate the input box or you could have a separate activate object.  When the user clicks OK or whatever then you call name.get_text() and pass.get_text() which will return the buffers in those classes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Mon, 22 Jan 2007 02:40:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not really sure what you mean..  I had always created different instances of interface stuff if I wanted them to have different properties and do different things.</p><p>I also managed to sorta get the text to stop flashing by putting it in with my draw function.. Which kinda annoys me because basically everything has to be in the draw function since its the only one thats blitting the buffer.  If i try to blit the buffer in a different function then try to run it through the game loop it&#39;ll flicker again, ugh.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 22 Jan 2007 04:29:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What I am trying to say is that you should not have your text input functions stop the program and loop within, instead your functions should simply check for a keypress, if so then add or subtract a character and blit to the buffer, otherwise blit to the buffer the text and return.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Mon, 22 Jan 2007 05:36:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think I know what your trying to get at now, goina try it out.  Also, does anyone know how I could go about setting the capacity or coordinates of the text? Was looking at some Allegro functions for text, but I&#39;m 95% sure this ISN&#39;T how they&#39;re suppose to be used, because it&#39;s not working. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> text::set_coords<span class="k2">(</span><span class="k1">int</span> w, <span class="k1">int</span> h<span class="k2">)</span>
<span class="k2">{</span>
  w <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_length" target="_blank"><span class="a">text_length</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
  h <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_height" target="_blank"><span class="a">text_height</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

No idea how I make a function for capacity though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Mon, 22 Jan 2007 07:51:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>void text::set_coords(int <b>&amp;</b>w, int <b>&amp;</b>h)
</p><div class="source-code snippet"><div class="inner"><pre><span class="k2">{</span>
  w <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_length" target="_blank"><span class="a">text_length</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
  h <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_height" target="_blank"><span class="a">text_height</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Hmm that would be a get_coords function anyway and it&#39;s not coords but bounds.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Mon, 22 Jan 2007 19:09:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro GUI. d_edit_proc() to be more specific. You define the max length, placement of the text box, font colours etc. You have the backspace functionality, and delete, I think. And you can customise it. I made a customised thing that works with non-even coloured fonts. My Christmashack entry uses it for name input in the score list. Check there how it works. </p><p>Does it echo here? Feels like a dejavu.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Mon, 22 Jan 2007 21:37:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the help guys. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> NOW I&#39;m trying to combine a button class and the text code into one class on its own.  I have the text code in a seperate function (and the code for drawing the text inside the draw function for the button/textfield.)</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#define SELECTED 0</span></td></tr><tr><td class="number">2</td><td><span class="p">#define NOT_SELECTED 1</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>  ...</td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  selection status<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>text::init<span class="k2">(</span> ... <span class="k2">)</span></td></tr><tr><td class="number">11</td><td><span class="k2">{</span></td></tr><tr><td class="number">12</td><td>  ...</td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  selection_status <span class="k3">=</span> NOT_SELECTED<span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>text::text_logic<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>  <span class="k1">if</span><span class="k2">(</span>selection_status <span class="k3">=</span><span class="k3">=</span> SELECTED<span class="k2">)</span></td></tr><tr><td class="number">20</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>      <span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>      <span class="k1">int</span>  newkey   <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">char</span> ASCII    <span class="k3">=</span> newkey <span class="k3">&amp;</span> <span class="n">0xff</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>      <span class="k1">char</span> scancode <span class="k3">=</span> newkey <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  ...</td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

So! Inside the logic function for the new/converted button class called text, I had it set selection_status to SELECTED only if the textfield is pressed.  For some reason, if I mash a bunch of keys THEN press the textfield, even though it&#39;s set to NOT_SELECTED (yet), all the keys that I pressed will appear.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Tue, 23 Jan 2007 09:09:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sounds like you just need to clear the keyboard buffer.</p><p>clear_keybuf() before readkey() and prossibly before keypressed() too.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jeff Bernard)</author>
		<pubDate>Tue, 23 Jan 2007 11:19:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I went with &quot;else if(selection_status == NOT_SELECTED) { clear_keybuf(); }&quot; and it seems to work sorta okay.  Now I want it so, when you click the text field it sets the status to selected and keeps it that way until I say otherwise! Because right now I have to hold in the text field with my mouse to type, then when I let go it stops me from polling the text.  For the record I&#039;m using the code for the Loomsoft Button (which can be found here: <a href="http://www.loomsoft.net/util_lsbutton.shtml">http://www.loomsoft.net/util_lsbutton.shtml</a>)</p><p>Here&#039;s what I&#039;m working with now:</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 "text.h"</span>
<span class="number">   2</span><span class="p">#define WHITE makecol(255, 255, 255)</span>
<span class="number">   3</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;string&gt;</span>
<span class="number">   5</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">   6</span>
<span class="number">   7</span>string edittext<span class="k2">;</span>
<span class="number">   8</span>string::iterator iter <span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   9</span><span class="k1">int</span> caret  <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">bool</span> insert <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>    
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">void</span> text::initialize<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap_on, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap_down, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap_off, <span class="k1">int</span> MOUSE_DETECTION_MODE, <span class="k1">int</span> MOUSE_CLICK_MODE<span class="k2">)</span>
<span class="number">  13</span><span class="k2">{</span>
<span class="number">  14</span>    <span class="c">// Set the bitmap pointers</span>
<span class="number">  15</span>    on_bitmap <span class="k3">=</span> bitmap_on<span class="k2">;</span>
<span class="number">  16</span>    down_bitmap <span class="k3">=</span> bitmap_down<span class="k2">;</span>
<span class="number">  17</span>    off_bitmap <span class="k3">=</span> bitmap_off<span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span>    <span class="c">// Set all the modes that were passed.</span>
<span class="number">  20</span>    mouse_detection_mode <span class="k3">=</span> MOUSE_DETECTION_MODE<span class="k2">;</span>
<span class="number">  21</span>    mouse_status <span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">;</span>
<span class="number">  22</span>    mouse_click_mode <span class="k3">=</span> MOUSE_CLICK_MODE<span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span>    <span class="c">// Set the bounding box to be the dimensions of the off_bitmap.</span>
<span class="number">  25</span>    bound_left <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  26</span>    bound_top <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  27</span>    bound_right <span class="k3">=</span> off_bitmap-&gt;w<span class="k2">;</span>
<span class="number">  28</span>    bound_bottom <span class="k3">=</span> off_bitmap-&gt;h<span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span>    <span class="c">// Set the x/y position to 0,0</span>
<span class="number">  31</span>    x_position <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  32</span>    y_position <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  33</span>
<span class="number">  34</span>    <span class="c">// Set the masking color to the default "magic pink".</span>
<span class="number">  35</span>    masking_color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>
<span class="number">  37</span>    <span class="c">// Turn off the bounding box display feature</span>
<span class="number">  38</span>    show_bbox <span class="k3">=</span> FALSE<span class="k2">;</span>
<span class="number">  39</span>
<span class="number">  40</span>    <span class="c">// Set the original frame to draw the button to off_bitmap</span>
<span class="number">  41</span>    draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_OFF<span class="k2">;</span>
<span class="number">  42</span>
<span class="number">  43</span>    <span class="c">// Set the button to an active state.</span>
<span class="number">  44</span>    is_active <span class="k3">=</span> TRUE<span class="k2">;</span>
<span class="number">  45</span>    
<span class="number">  46</span>    selection_status <span class="k3">=</span> BUTTON_NOT_SELECTED<span class="k2">;</span>
<span class="number">  47</span><span class="k2">}</span>
<span class="number">  48</span>
<span class="number">  49</span><span class="k1">void</span> text::set_bounds<span class="k2">(</span><span class="k1">int</span> left_bound, <span class="k1">int</span> right_bound, <span class="k1">int</span> top_bound, <span class="k1">int</span> bottom_bound<span class="k2">)</span>
<span class="number">  50</span><span class="k2">{</span>
<span class="number">  51</span>  <span class="k1">if</span><span class="k2">(</span>mouse_detection_mode <span class="k3">=</span><span class="k3">=</span> BUTTON_BOUNDING_BOX<span class="k2">)</span>
<span class="number">  52</span>  <span class="k2">{</span>
<span class="number">  53</span>    bound_left <span class="k3">=</span> left_bound<span class="k2">;</span>
<span class="number">  54</span>    bound_right <span class="k3">=</span> right_bound<span class="k2">;</span>
<span class="number">  55</span>    bound_top <span class="k3">=</span> top_bound<span class="k2">;</span>
<span class="number">  56</span>    bound_bottom <span class="k3">=</span> bottom_bound<span class="k2">;</span>
<span class="number">  57</span>  <span class="k2">}</span>
<span class="number">  58</span><span class="k2">}</span>
<span class="number">  59</span>
<span class="number">  60</span><span class="k1">void</span> text::set_masking_color<span class="k2">(</span><span class="k1">int</span> red, <span class="k1">int</span> blue, <span class="k1">int</span> green<span class="k2">)</span>
<span class="number">  61</span><span class="k2">{</span>
<span class="number">  62</span>  <span class="k1">if</span><span class="k2">(</span>red <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  63</span>    red <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  64</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>red <span class="k3">&gt;</span> <span class="n">255</span><span class="k2">)</span>
<span class="number">  65</span>    red <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number">  66</span>
<span class="number">  67</span>  <span class="k1">if</span><span class="k2">(</span>blue <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  68</span>    blue <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  69</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>blue <span class="k3">&gt;</span> <span class="n">255</span><span class="k2">)</span>
<span class="number">  70</span>    blue <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>  <span class="k1">if</span><span class="k2">(</span>green <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  73</span>    green <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  74</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>green <span class="k3">&gt;</span> <span class="n">255</span><span class="k2">)</span>
<span class="number">  75</span>    green <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number">  76</span>
<span class="number">  77</span>  masking_color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span>red,blue,green<span class="k2">)</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="c">//Sets if the drawing function should show the bounding box.</span>
<span class="number">  81</span><span class="k1">void</span> text::set_show_bounding_box<span class="k2">(</span><span class="k1">int</span> value<span class="k2">)</span>
<span class="number">  82</span><span class="k2">{</span>
<span class="number">  83</span>  show_bbox <span class="k3">=</span> value<span class="k2">;</span>
<span class="number">  84</span><span class="k2">}</span>
<span class="number">  85</span>
<span class="number">  86</span><span class="c">//Sets the active state for the button</span>
<span class="number">  87</span><span class="k1">void</span> text::set_active<span class="k2">(</span><span class="k1">int</span> value<span class="k2">)</span>
<span class="number">  88</span><span class="k2">{</span>
<span class="number">  89</span>  is_active <span class="k3">=</span> value<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">void</span> text::set_coords<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span>
<span class="number">  93</span><span class="k2">{</span>
<span class="number">  94</span>  x_position <span class="k3">=</span> x<span class="k2">;</span>
<span class="number">  95</span>  y_position <span class="k3">=</span> y<span class="k2">;</span>
<span class="number">  96</span><span class="k2">}</span>
<span class="number">  97</span>
<span class="number">  98</span><span class="k1">void</span> text::poll<span class="k2">(</span><span class="k2">)</span>
<span class="number">  99</span><span class="k2">{</span>
<span class="number"> 100</span>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&gt;</span> bound_left<span class="k3">+</span>x_position <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&lt;</span> bound_right<span class="k3">+</span>x_position <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 101</span>     <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&gt;</span> bound_top<span class="k3">+</span>y_position <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&lt;</span> bound_bottom<span class="k3">+</span>y_position<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>is_active <span class="k3">&amp;</span><span class="k3">&amp;</span> selection_status <span class="k3">=</span><span class="k3">=</span> BUTTON_SELECTED<span class="k2">)</span>
<span class="number"> 104</span>    <span class="k2">{</span>    
<span class="number"> 105</span>      <span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 106</span>      <span class="k2">{</span>
<span class="number"> 107</span>        <span class="k1">int</span>  newkey   <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>        <span class="k1">char</span> ASCII    <span class="k3">=</span> newkey <span class="k3">&amp;</span> <span class="n">0xff</span><span class="k2">;</span>
<span class="number"> 109</span>        <span class="k1">char</span> scancode <span class="k3">=</span> newkey <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span>        <span class="k1">if</span><span class="k2">(</span>ASCII <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">32</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ASCII <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">126</span><span class="k2">)</span>
<span class="number"> 112</span>        <span class="k2">{</span>
<span class="number"> 113</span>          <span class="k1">if</span><span class="k2">(</span>insert <span class="k3">|</span><span class="k3">|</span> iter <span class="k3">=</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 114</span>            iter <span class="k3">=</span> edittext.insert<span class="k2">(</span>iter, ASCII<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>        
<span class="number"> 116</span>          <span class="k1">else</span>
<span class="number"> 117</span>            edittext.replace<span class="k2">(</span>caret, <span class="n">1</span>, <span class="n">1</span>, ASCII<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>            caret<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 119</span>            iter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 120</span>        <span class="k2">}</span>
<span class="number"> 121</span>
<span class="number"> 122</span>        <span class="k1">else</span>
<span class="number"> 123</span>          <span class="k1">switch</span><span class="k2">(</span>scancode<span class="k2">)</span>
<span class="number"> 124</span>          <span class="k2">{</span>
<span class="number"> 125</span>            <span class="k1">case</span> KEY_DEL:
<span class="number"> 126</span>            <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> iter <span class="k3">=</span> edittext.erase<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 128</span>
<span class="number"> 129</span>            <span class="k1">case</span> KEY_BACKSPACE:
<span class="number"> 130</span>            <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 131</span>            <span class="k2">{</span>
<span class="number"> 132</span>              caret--<span class="k2">;</span>
<span class="number"> 133</span>              iter--<span class="k2">;</span>
<span class="number"> 134</span>              iter <span class="k3">=</span> edittext.erase<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>            <span class="k2">}</span><span class="k1">break</span><span class="k2">;</span>
<span class="number"> 136</span>            
<span class="number"> 137</span>            <span class="k1">case</span> KEY_RIGHT:
<span class="number"> 138</span>            <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>   caret<span class="k3">+</span><span class="k3">+</span>, iter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 139</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 140</span>            
<span class="number"> 141</span>            <span class="k1">case</span> KEY_LEFT:
<span class="number"> 142</span>            <span class="k1">if</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> edittext.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> caret--, iter--<span class="k2">;</span>
<span class="number"> 143</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 144</span>            
<span class="number"> 145</span>            <span class="k1">case</span> KEY_INSERT:
<span class="number"> 146</span>            insert <span class="k3">=</span> <span class="k3">!</span>insert<span class="k2">;</span>
<span class="number"> 147</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 148</span>
<span class="number"> 149</span>            default:
<span class="number"> 150</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 151</span>          <span class="k2">}</span>
<span class="number"> 152</span>      <span class="k2">}</span>
<span class="number"> 153</span>    <span class="k2">}</span>
<span class="number"> 154</span>  
<span class="number"> 155</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>selection_status <span class="k3">=</span><span class="k3">=</span> BUTTON_NOT_SELECTED<span class="k2">)</span> <span class="k2">{</span> <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 156</span>
<span class="number"> 157</span>    <span class="k1">if</span><span class="k2">(</span>mouse_detection_mode <span class="k3">=</span><span class="k3">=</span> BUTTON_PIXEL_PERFECT<span class="k2">)</span>
<span class="number"> 158</span>    <span class="k2">{</span>
<span class="number"> 159</span>            
<span class="number"> 160</span>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>off_bitmap, mouse_x-x_position,mouse_y-y_position<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 161</span>      <span class="k2">{</span>
<span class="number"> 162</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 163</span>        <span class="k2">{</span>
<span class="number"> 164</span>          selection_status <span class="k3">=</span> BUTTON_SELECTED<span class="k2">;</span>      
<span class="number"> 165</span>                    draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_DOWN<span class="k2">;</span>
<span class="number"> 166</span>        <span class="k2">}</span>
<span class="number"> 167</span>        
<span class="number"> 168</span>        <span class="k1">else</span>
<span class="number"> 169</span>        <span class="k2">{</span>
<span class="number"> 170</span>                    selection_status <span class="k3">=</span> BUTTON_NOT_SELECTED<span class="k2">;</span>
<span class="number"> 171</span>                    draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_ON<span class="k2">;</span>
<span class="number"> 172</span>        <span class="k2">}</span>
<span class="number"> 173</span>      <span class="k2">}</span>
<span class="number"> 174</span>      
<span class="number"> 175</span>      <span class="k1">else</span>
<span class="number"> 176</span>      <span class="k2">{</span>                
<span class="number"> 177</span>                selection_status <span class="k3">=</span> BUTTON_NOT_SELECTED<span class="k2">;</span>
<span class="number"> 178</span>                draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_OFF<span class="k2">;</span>
<span class="number"> 179</span>                  
<span class="number"> 180</span>        <span class="k1">if</span><span class="k2">(</span>mouse_status <span class="k3">!</span><span class="k3">=</span> BUTTON_MOUSE_STATUS_DOWN<span class="k2">)</span>
<span class="number"> 181</span>        <span class="k2">{</span>
<span class="number"> 182</span>                    mouse_status <span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">;</span>
<span class="number"> 183</span>        <span class="k2">}</span>
<span class="number"> 184</span>      <span class="k2">}</span>    
<span class="number"> 185</span>    <span class="k2">}</span>
<span class="number"> 186</span>    
<span class="number"> 187</span>    <span class="k1">else</span>
<span class="number"> 188</span>    <span class="k2">{</span>
<span class="number"> 189</span>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 190</span>      <span class="k2">{</span>
<span class="number"> 191</span>        draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_DOWN<span class="k2">;</span>
<span class="number"> 192</span>      <span class="k2">}</span>
<span class="number"> 193</span>      
<span class="number"> 194</span>      <span class="k1">else</span>
<span class="number"> 195</span>      <span class="k2">{</span>
<span class="number"> 196</span>        draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_ON<span class="k2">;</span>
<span class="number"> 197</span>      <span class="k2">}</span>
<span class="number"> 198</span>    <span class="k2">}</span>
<span class="number"> 199</span>  <span class="k2">}</span>
<span class="number"> 200</span>  
<span class="number"> 201</span>  <span class="k1">else</span>
<span class="number"> 202</span>  <span class="k2">{</span>
<span class="number"> 203</span>    draw_frame <span class="k3">=</span> BUTTON_DRAW_FRAME_OFF<span class="k2">;</span>
<span class="number"> 204</span>    
<span class="number"> 205</span>    <span class="k1">if</span><span class="k2">(</span>mouse_status <span class="k3">!</span><span class="k3">=</span> BUTTON_MOUSE_STATUS_DOWN<span class="k2">)</span>
<span class="number"> 206</span>    <span class="k2">{</span>
<span class="number"> 207</span>      mouse_status <span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">;</span>
<span class="number"> 208</span>    <span class="k2">}</span>
<span class="number"> 209</span>  <span class="k2">}</span>
<span class="number"> 210</span><span class="k2">}</span>
<span class="number"> 211</span>
<span class="number"> 212</span><span class="k1">int</span> text::is_clicked<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 213</span><span class="k2">{</span>
<span class="number"> 214</span>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&gt;</span> <span class="k2">(</span>bound_left<span class="k3">+</span>x_position<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&lt;</span> <span class="k2">(</span>bound_right<span class="k3">+</span>x_position<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 215</span>     <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&gt;</span> <span class="k2">(</span>bound_top<span class="k3">+</span>y_position<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">&lt;</span> <span class="k2">(</span>bound_bottom<span class="k3">+</span>y_position<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 216</span>  <span class="k2">{</span>
<span class="number"> 217</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_status <span class="k3">=</span><span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">)</span>
<span class="number"> 218</span>    <span class="k2">{</span>
<span class="number"> 219</span>      mouse_status <span class="k3">=</span> BUTTON_MOUSE_STATUS_UP<span class="k2">;</span>
<span class="number"> 220</span>    <span class="k2">}</span>
<span class="number"> 221</span>    
<span class="number"> 222</span>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_click_mode <span class="k3">=</span><span class="k3">=</span> BUTTON_CLICK_MODE_CONSTANT<span class="k2">)</span>
<span class="number"> 223</span>    <span class="k2">{</span>
<span class="number"> 224</span>      <span class="k1">return</span> TRUE<span class="k2">;</span>
<span class="number"> 225</span>    <span class="k2">}</span>
<span class="number"> 226</span>
<span class="number"> 227</span>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_status <span class="k3">!</span><span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">)</span>
<span class="number"> 228</span>    <span class="k2">{</span>
<span class="number"> 229</span>      mouse_status <span class="k3">=</span> BUTTON_MOUSE_STATUS_DOWN<span class="k2">;</span>        
<span class="number"> 230</span>    <span class="k2">}</span>
<span class="number"> 231</span>    
<span class="number"> 232</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_status <span class="k3">=</span><span class="k3">=</span> BUTTON_MOUSE_STATUS_DOWN<span class="k2">)</span>
<span class="number"> 233</span>    <span class="k2">{</span>
<span class="number"> 234</span>      mouse_status <span class="k3">=</span> BUTTON_MOUSE_STATUS_UP<span class="k2">;</span>
<span class="number"> 235</span>        
<span class="number"> 236</span>      <span class="k1">if</span><span class="k2">(</span>mouse_detection_mode <span class="k3">=</span><span class="k3">=</span> BUTTON_PIXEL_PERFECT<span class="k2">)</span>
<span class="number"> 237</span>        <span class="k2">{</span>
<span class="number"> 238</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>off_bitmap, mouse_x-x_position,mouse_y-y_position<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> masking_color<span class="k2">)</span>
<span class="number"> 239</span>        <span class="k2">{</span>
<span class="number"> 240</span>          <span class="k1">return</span> TRUE<span class="k2">;</span>
<span class="number"> 241</span>        <span class="k2">}</span>
<span class="number"> 242</span>      <span class="k2">}</span>
<span class="number"> 243</span>      
<span class="number"> 244</span>      <span class="k1">else</span> 
<span class="number"> 245</span>      <span class="k2">{</span>
<span class="number"> 246</span>        <span class="k1">return</span> TRUE<span class="k2">;</span>
<span class="number"> 247</span>      <span class="k2">}</span>
<span class="number"> 248</span>    <span class="k2">}</span>
<span class="number"> 249</span>  <span class="k2">}</span>
<span class="number"> 250</span>    
<span class="number"> 251</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 252</span>  <span class="k2">{</span>
<span class="number"> 253</span>     mouse_status <span class="k3">=</span> BUTTON_NOT_ON_FOCUS<span class="k2">;</span>
<span class="number"> 254</span>  <span class="k2">}</span>
<span class="number"> 255</span>
<span class="number"> 256</span>  <span class="k1">return</span> FALSE<span class="k2">;</span>
<span class="number"> 257</span><span class="k2">}</span>
<span class="number"> 258</span>
<span class="number"> 259</span><span class="k1">void</span> text::draw_button<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap_buffer<span class="k2">)</span>
<span class="number"> 260</span><span class="k2">{</span>
<span class="number"> 261</span>  <span class="k1">if</span><span class="k2">(</span>draw_frame <span class="k3">=</span><span class="k3">=</span> BUTTON_DRAW_FRAME_DOWN<span class="k2">)</span>
<span class="number"> 262</span>  <span class="k2">{</span>
<span class="number"> 263</span>    <span class="k1">if</span><span class="k2">(</span>down_bitmap <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 264</span>    <span class="k2">{</span>
<span class="number"> 265</span>      <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 266</span>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>bitmap_buffer, down_bitmap, x_position, y_position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 267</span>      <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 268</span>      <a href="http://www.allegro.cc/manual/vline" target="_blank"><span class="a">vline</span></a><span class="k2">(</span>bitmap_buffer, caret<span class="k3">*</span> <span class="n">8</span>, <span class="n">8</span>, <span class="n">18</span>, WHITE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 269</span>    <span class="k2">}</span>
<span class="number"> 270</span>  <span class="k2">}</span>
<span class="number"> 271</span>    
<span class="number"> 272</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>draw_frame <span class="k3">=</span><span class="k3">=</span> BUTTON_DRAW_FRAME_ON<span class="k2">)</span>
<span class="number"> 273</span>  <span class="k2">{</span>
<span class="number"> 274</span>    <span class="k1">if</span><span class="k2">(</span>on_bitmap <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 275</span>    <span class="k2">{</span>
<span class="number"> 276</span>      <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 277</span>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>bitmap_buffer, on_bitmap, x_position, y_position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 278</span>      <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 279</span>    <span class="k2">}</span>
<span class="number"> 280</span>  <span class="k2">}</span>
<span class="number"> 281</span>    
<span class="number"> 282</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>draw_frame <span class="k3">=</span><span class="k3">=</span> BUTTON_DRAW_FRAME_OFF<span class="k2">)</span>
<span class="number"> 283</span>  <span class="k2">{</span>
<span class="number"> 284</span>    <span class="k1">if</span><span class="k2">(</span>off_bitmap <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 285</span>    <span class="k2">{</span>
<span class="number"> 286</span>      <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 287</span>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>bitmap_buffer, off_bitmap, x_position, y_position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 288</span>      <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 289</span>    <span class="k2">}</span>
<span class="number"> 290</span>  <span class="k2">}</span>
<span class="number"> 291</span>          
<span class="number"> 292</span>  <span class="k1">if</span><span class="k2">(</span>show_bbox<span class="k2">)</span>
<span class="number"> 293</span>  <span class="k2">{</span>
<span class="number"> 294</span>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span>bitmap_buffer, bound_left<span class="k3">+</span>x_position, bound_top<span class="k3">+</span>y_position, bound_right<span class="k3">+</span>x_position, bound_bottom<span class="k3">+</span>y_position, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</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"> 295</span>  <span class="k2">}</span>
<span class="number"> 296</span>    
<span class="number"> 297</span>  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>bitmap_buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, edittext.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span>, <span class="n">10</span>, WHITE, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 298</span><span class="k2">}</span>
</div></div><p>

The string edittext stuff is put right under where I include allegro, the header, etc. I tried to put it somewhere else though it doesn&#039;t seem to like it when I do that.  Which is sorta a problem because it&#039;s always storing the information in the same things.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Thu, 25 Jan 2007 07:07:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nice globals <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>You just need an active flag which simply is turned on when you move the mouse inside the bounds of the box and click.  The only way it will not be active is if you loose focus to that edit box and into another.  For that purpose you can have a text manager which stores a list of all edit boxes you have active at any given time so that when one gains focus you can deactivate the other one.  You can even capture TAB as a key to toggle through your list of text objects.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span>green <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
    green <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>green <span class="k3">&gt;</span> <span class="n">255</span><span class="k2">)</span>
    green <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
</pre></div></div><p>
You can use MID for this purpose, MID(0, green, 255) <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Thu, 25 Jan 2007 10:03:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Just wondering how everyone here deals with inputting text to the screen when your using graphics.
</p></div></div><p>
Probably past this point for you, but I wrote this a long time ago and maybe it&#39;s worth something ...</p><p> <a href="http://www.gamedev.net/reference/articles/article2130.asp">Clickies.</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Thu, 25 Jan 2007 10:50:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Steve:</p><p>I thought that&#39;s what I already have.  I was planning on having somewhere in my logic function for the game states that if a text field is clicked, it&#39;ll stop polling any of the other ones on the screen.  Actually I did try to do that but the program would just crash..  It was something simple like:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span>firstName.is_clicked<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="k2">{</span>
  lastName.is_active<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="k2">}</span>
</pre></div></div><p>

23yrold3yrold:</p><p>I&#39;m already using your code <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> works nicely, but I&#39;d still like to put the iter/caret/edittext stuff inside a function if I could find a way how.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (julian_boolean)</author>
		<pubDate>Fri, 26 Jan 2007 05:21:45 +0000</pubDate>
	</item>
</rss>
