<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Static variable headaches</title>
		<link>http://www.allegro.cc/forums/view/610321</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 02 Jun 2012 17:10:29 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m getting undefined reference linker errors to my static variables</p><p>header
</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">class</span> Tooltip
<span class="number">  2</span>    <span class="k2">{</span>
<span class="number">  3</span>        rectangle dimensions<span class="k2">;</span>
<span class="number">  4</span>        std::string text<span class="k2">;</span>
<span class="number">  5</span>        <span class="k1">int</span> maxWidth<span class="k2">;</span>
<span class="number">  6</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>enableTimer<span class="k2">;</span>
<span class="number">  7</span>        <span class="k1">bool</span> enabled<span class="k2">;</span>
<span class="number">  8</span>        <span class="k1">static</span> <span class="k1">bool</span> draw<span class="k2">;</span>
<span class="number">  9</span>        <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>canvas<span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>        public:
<span class="number"> 12</span>
<span class="number"> 13</span>        Tooltip<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> maxWidth<span class="k2">(</span><span class="n">100</span><span class="k2">)</span>, enableTimer<span class="k2">(</span>NULL<span class="k2">)</span>, enabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>        Tooltip<span class="k2">(</span>std::string newText, <span class="k1">int</span> width<span class="k2">)</span><span class="k2">:</span> enabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 16</span>        <span class="k2">{</span>
<span class="number"> 17</span>            text <span class="k3">=</span> newText<span class="k2">;</span>
<span class="number"> 18</span>            maxWidth <span class="k3">=</span> width<span class="k2">;</span>
<span class="number"> 19</span>        <span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span>        <span class="k1">void</span> Load<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>        <span class="k1">void</span> HandleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event, <span class="k1">bool</span> isMouseOverObject<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>        <span class="k1">void</span> Cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>        <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>        <span class="k1">static</span> <span class="k1">void</span> drawCanvas<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 26</span>        <span class="k2">{</span>
<span class="number"> 27</span>            <span class="c">//if(draw == true)</span>
<span class="number"> 28</span>           <span class="c">// {</span>
<span class="number"> 29</span>           <span class="c">//     al_draw_bitmap(canvas, 0, 0, 0);</span>
<span class="number"> 30</span>           <span class="c">// }</span>
<span class="number"> 31</span>        <span class="k2">}</span>
<span class="number"> 32</span>    <span class="k2">}</span><span class="k2">;</span>
</div></div><p>

source
</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">bool</span> Tooltip::draw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> Tooltip::<span class="k3">*</span>canvas <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">void</span> Tooltip::Load<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span>
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span>    fontHandler <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>    enableTimer <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="k2">)</span><span class="k2">;</span>
<span class="number">  9</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>eventQueue, <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>enableTimer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>    canvas <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><a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>    dimensions <span class="k3">=</span> rectangle<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">10</span><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>font.size12<span class="k2">(</span><span class="k2">)</span>, text.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, <span class="n">10</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>font.size12<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span><span class="k2">}</span>
</div></div><p>

I&#39;m getting them on these to variables in the function(also in the header for the part commented out). I&#39;ve accolated the memory for them at the top of the source file, is there something I&#39;m missing here? using mingw 4.6.2 and c++0x.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Wed, 30 May 2012 00:16:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nevermind.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Wed, 30 May 2012 00:20:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Static variables are global, and should be avoided. You probably don&#39;t have a good reason to be using them. /rant</p><p>It might help if you gave us the exact error messages. More code wouldn&#39;t hurt either. Which files and how you&#39;re processing and compiling them might be a factor.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/610321/955923#target">shadyvillian</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> Tooltip::<span class="k3">*</span>canvas <span class="k3">=</span> NULL<span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
I&#39;m 99% sure that that is the wrong syntax. I think you want this instead:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> Tooltip::canvas <span class="k3">=</span> NULL<span class="k2">;</span>
</pre></div></div><p>

(Not verified)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 30 May 2012 00:21:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And that was it... derp. I wasn&#39;t sure but It wasn&#39;t giving a compile error so I never would of figured that out <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>EDIT: ugh since I added 2 static variables my memory usage went from 41 mb to 250mb <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />. Heres my dilemma. I have tooltips for my ui elements. Each object has a class tool tip and the tooltip class in each object manages when they should display. But since they draw in the objects draw function the objects are drawing in different orders when I draw all my objects that need to be drawn some tooltips are under other images so you can&#39;t see them. So the first thing I thought of is to have a static bitmap in the tooltip class so that when a tooltip should be drawn I draw it to that bitmap instead then I call a static function of tooltip at the end of all drawing make it so that the tooltip is always drawn last. Does anyone have a better solution <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Wed, 30 May 2012 04:48:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The way I do it is when a tooltip is shown in my Gui, regardless of where it is in the widget hierarchy it gets pushed to the top so that it is then the top most widget.</p><p>As for your memory usage... <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Wed, 30 May 2012 05:11:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Haha when I saw that I got rid of that instanstly and went back to the drawing board. No way I&#39;m using another 200mb for that...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Wed, 30 May 2012 05:18:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m really curious to know how on earth you got 200MB usage... I mean, that&#39;s like 200 512x512 uncompressed RGBA images... It just doesn&#39;t add up...</p><p>You should not need globals though. As BamBam would agree, they are evil.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Wed, 30 May 2012 06:16:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It was a 1200x700 px static bitmap and a boolean variable. I got rid of them and back down to 41 mb. it was probably more than the variables taking up the space probably the stuff I was doing with them. I need to learn to hate static variables last time I used them they made my program use like 4Gb of memory and crash... that gave me a good laugh at least <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Wed, 30 May 2012 07:34:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You were probably loading that bitmap over and over.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 30 May 2012 22:12:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" /><img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" /><img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" /></p><p>If you&#39;re going to hate on static variables and globals, at least do it for a real reason. Making a variable static does not make it use more memory. WTF.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 30 May 2012 23:14:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://wiki.allegro.cc/index.php?title=Return_values">http://wiki.allegro.cc/index.php?title=Return_values</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 30 May 2012 23:28:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Does anyone have a suggestion for my problem? My classes aren&#39;t anything elaborate just some simple reusable code in a static library for my programs to use. Here&#39;s the header just to get an idea:</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_font.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;string&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="k1">namespace</span> framework
<span class="number">   9</span><span class="k2">{</span>
<span class="number">  10</span>    <span class="c">/********************************************\</span>
<span class="number">  11</span><span class="c">        *</span>
<span class="number">  12</span><span class="c">        utility functions</span>
<span class="number">  13</span><span class="c">        *</span>
<span class="number">  14</span><span class="c">    ********************************************/</span>
<span class="number">  15</span>
<span class="number">  16</span>    std::string changeCase<span class="k2">(</span>std::string word<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>    <span class="k1">bool</span> findWord<span class="k2">(</span>std::string searchThis, std::string target<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>    std::string getFileName<span class="k2">(</span>std::string filePath<span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span>    std::string intToStr<span class="k2">(</span><span class="k1">int</span> value, <span class="k1">int</span> base<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>    std::string floatToString<span class="k2">(</span><span class="k1">float</span> number<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span>    <span class="k1">int</span> showMessageBox<span class="k2">(</span>std::string header, std::string message, <span class="k1">int</span> flag<span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>    std::string getXmlData<span class="k2">(</span>std::string data, std::string element<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span>    <span class="c">/********************************************\</span>
<span class="number">  25</span><span class="c">        *</span>
<span class="number">  26</span><span class="c">        enum declarations</span>
<span class="number">  27</span><span class="c">        *</span>
<span class="number">  28</span><span class="c">    ********************************************/</span>
<span class="number">  29</span>
<span class="number">  30</span>    <span class="k1">enum</span> LOAD_RESULT
<span class="number">  31</span>    <span class="k2">{</span>
<span class="number">  32</span>        LOAD_FAIL <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span>,
<span class="number">  33</span>        LOAD_SUCCESS <span class="k3">=</span> <span class="n">0</span>
<span class="number">  34</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>    <span class="k1">enum</span> BUTTON_LAYOUT
<span class="number">  37</span>    <span class="k2">{</span>
<span class="number">  38</span>        LAYOUT_OVERLAP,
<span class="number">  39</span>        LAYOUT_VERTICAL,
<span class="number">  40</span>        LAYOUT_HORIZONTAL,
<span class="number">  41</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number">  42</span>
<span class="number">  43</span>    <span class="k1">enum</span> PROGRESSBAR_DISPLAY_FLAG
<span class="number">  44</span>    <span class="k2">{</span>
<span class="number">  45</span>        PB_DISPLAY_NOTHING,
<span class="number">  46</span>        PB_DISPLAY_PERCENTAGES,
<span class="number">  47</span>        PB_DISPLAY_NUMBERS
<span class="number">  48</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number">  49</span>
<span class="number">  50</span>    <span class="k1">enum</span> INPUT_TYPE
<span class="number">  51</span>    <span class="k2">{</span>
<span class="number">  52</span>        INPUT_ALL,
<span class="number">  53</span>        INPUT_ALPHA,
<span class="number">  54</span>        INPUT_ALPHA_PLUS_COM_APO_DASH, <span class="c">//short for comma and apostrophe</span>
<span class="number">  55</span>        INPUT_NUMERIC,
<span class="number">  56</span>        INPUT_COMPARISON,
<span class="number">  57</span>        INPUT_NUMERIC_NO_SPACE,
<span class="number">  58</span>        INPUT_COMPARISON_NO_SPACE,
<span class="number">  59</span>        INPUT_ALPHA_PLUS_NUMERIC,
<span class="number">  60</span>        INPUT_ALPHA_NO_SPACE,
<span class="number">  61</span>        INPUT_ALPHA_PLUS_NUMERIC_NO_SPACE,
<span class="number">  62</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number">  63</span>
<span class="number">  64</span>    <span class="c">/*******************************************\</span>
<span class="number">  65</span><span class="c">        *</span>
<span class="number">  66</span><span class="c">        general namespace variable declarations</span>
<span class="number">  67</span><span class="c">        *</span>
<span class="number">  68</span><span class="c">    *******************************************/</span>
<span class="number">  69</span>
<span class="number">  70</span>    <span class="k1">const</span> <span class="k1">int</span> NO_BUTTON_SELECTED <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>    <span class="c">/********************************************\</span>
<span class="number">  73</span><span class="c">        *</span>
<span class="number">  74</span><span class="c">        class declarations</span>
<span class="number">  75</span><span class="c">        *</span>
<span class="number">  76</span><span class="c">    ********************************************/</span>
<span class="number">  77</span>
<span class="number">  78</span>    <span class="k1">class</span> fontHandler
<span class="number">  79</span>    <span class="k2">{</span>
<span class="number">  80</span>        <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size12Font<span class="k2">;</span>
<span class="number">  81</span>        <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size64Font<span class="k2">;</span>
<span class="number">  82</span>        <span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size16Font<span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>        public:
<span class="number">  85</span>
<span class="number">  86</span>        fontHandler<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number">  87</span>        ~fontHandler<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number">  88</span>
<span class="number">  89</span>        LOAD_RESULT initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size12<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size64<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>size16<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number">  95</span>
<span class="number">  96</span>    <span class="k1">class</span> vector2d
<span class="number">  97</span>    <span class="k2">{</span>
<span class="number">  98</span>        <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number">  99</span>
<span class="number"> 100</span>        public:
<span class="number"> 101</span>
<span class="number"> 102</span>        vector2d<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> x<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>, y<span class="k2">(</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"> 103</span>        vector2d<span class="k2">(</span><span class="k1">float</span> xpos, <span class="k1">float</span> ypos<span class="k2">)</span>
<span class="number"> 104</span>        <span class="k2">{</span>
<span class="number"> 105</span>            x <span class="k3">=</span> xpos<span class="k2">;</span>
<span class="number"> 106</span>            y <span class="k3">=</span> ypos<span class="k2">;</span>
<span class="number"> 107</span>        <span class="k2">}</span>
<span class="number"> 108</span>
<span class="number"> 109</span>        <span class="k1">float</span> getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>        <span class="k1">float</span> getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>
<span class="number"> 112</span>        <span class="k1">bool</span> <span class="k1">operator</span><span class="k3">=</span><span class="k3">=</span> <span class="k2">(</span>vector2d <span class="k3">&amp;</span>pos<span class="k2">)</span>
<span class="number"> 113</span>        <span class="k2">{</span>
<span class="number"> 114</span>            <span class="k1">return</span> <span class="k2">(</span>x <span class="k3">=</span><span class="k3">=</span> pos.x <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">=</span><span class="k3">=</span> pos.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>        <span class="k2">}</span>
<span class="number"> 116</span>
<span class="number"> 117</span>        <span class="k1">bool</span> <span class="k1">operator</span><span class="k3">!</span><span class="k3">=</span> <span class="k2">(</span>vector2d <span class="k3">&amp;</span>pos<span class="k2">)</span>
<span class="number"> 118</span>        <span class="k2">{</span>
<span class="number"> 119</span>            <span class="k1">return</span> <span class="k3">!</span><span class="k2">(</span>x <span class="k3">=</span><span class="k3">=</span> pos.x <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">=</span><span class="k3">=</span> pos.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>        <span class="k2">}</span>
<span class="number"> 121</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 122</span>
<span class="number"> 123</span>    <span class="c">/********************************************\</span>
<span class="number"> 124</span><span class="c">        rectangle - class that defines the basics</span>
<span class="number"> 125</span><span class="c">        of an objects dimensions.</span>
<span class="number"> 126</span><span class="c">    ********************************************/</span>
<span class="number"> 127</span>    <span class="k1">class</span> rectangle
<span class="number"> 128</span>    <span class="k2">{</span>
<span class="number"> 129</span>        vector2d position<span class="k2">;</span>
<span class="number"> 130</span>        <span class="k1">float</span> height, width<span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>        public:
<span class="number"> 133</span>
<span class="number"> 134</span>        ~rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 135</span>        rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> position<span class="k2">(</span>vector2d<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, height<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>, width<span class="k2">(</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"> 136</span>        rectangle<span class="k2">(</span><span class="k1">float</span> xpos, <span class="k1">float</span> ypos, <span class="k1">float</span> w, <span class="k1">float</span> h<span class="k2">)</span>
<span class="number"> 137</span>        <span class="k2">{</span>
<span class="number"> 138</span>            position <span class="k3">=</span> vector2d<span class="k2">(</span>xpos, ypos<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>            width <span class="k3">=</span> w<span class="k2">;</span>
<span class="number"> 140</span>            height <span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 141</span>        <span class="k2">}</span>
<span class="number"> 142</span>
<span class="number"> 143</span>        rectangle<span class="k2">(</span>framework::vector2d newPosition, <span class="k1">float</span> w, <span class="k1">float</span> h<span class="k2">)</span>
<span class="number"> 144</span>        <span class="k2">{</span>
<span class="number"> 145</span>            position <span class="k3">=</span> newPosition<span class="k2">;</span>
<span class="number"> 146</span>            width <span class="k3">=</span> w<span class="k2">;</span>
<span class="number"> 147</span>            height <span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 148</span>        <span class="k2">}</span>
<span class="number"> 149</span>
<span class="number"> 150</span>        vector2d getCenter<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>        vector2d getPosition<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>        <span class="k1">float</span> getX1<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>        <span class="k1">float</span> getX2<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>        <span class="k1">float</span> getY1<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>        <span class="k1">float</span> getY2<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>        <span class="k1">float</span> getWidth<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>        <span class="k1">float</span> getHeight<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>        <span class="k1">void</span> setPosition<span class="k2">(</span>vector2d newPosition<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>        <span class="k1">void</span> setPosition<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 161</span>
<span class="number"> 162</span>    <span class="k1">class</span> Tooltip
<span class="number"> 163</span>    <span class="k2">{</span>
<span class="number"> 164</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 165</span>        std::string text<span class="k2">;</span>
<span class="number"> 166</span>        <span class="k1">int</span> maxWidth<span class="k2">;</span>
<span class="number"> 167</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>enableTimer<span class="k2">;</span>
<span class="number"> 168</span>        <span class="k1">bool</span> enabled<span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>        public:
<span class="number"> 171</span>
<span class="number"> 172</span>        Tooltip<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> maxWidth<span class="k2">(</span><span class="n">100</span><span class="k2">)</span>, enableTimer<span class="k2">(</span>NULL<span class="k2">)</span>, enabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 173</span>
<span class="number"> 174</span>        Tooltip<span class="k2">(</span>std::string newText, <span class="k1">int</span> width<span class="k2">)</span><span class="k2">:</span> enabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 175</span>        <span class="k2">{</span>
<span class="number"> 176</span>            text <span class="k3">=</span> newText<span class="k2">;</span>
<span class="number"> 177</span>            maxWidth <span class="k3">=</span> width<span class="k2">;</span>
<span class="number"> 178</span>        <span class="k2">}</span>
<span class="number"> 179</span>
<span class="number"> 180</span>        <span class="k1">void</span> Load<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 181</span>        <span class="k1">void</span> HandleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event, <span class="k1">bool</span> isMouseOverObject<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>        <span class="k1">void</span> Cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>        <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 185</span>
<span class="number"> 186</span>    <span class="k1">class</span> basicImage
<span class="number"> 187</span>    <span class="k2">{</span>
<span class="number"> 188</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 189</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number"> 190</span>        <span class="k1">bool</span> over, scalable<span class="k2">;</span>
<span class="number"> 191</span>
<span class="number"> 192</span>        public:
<span class="number"> 193</span>
<span class="number"> 194</span>        ~basicImage<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 195</span>        basicImage<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> dimensions<span class="k2">(</span>rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, image<span class="k2">(</span>NULL<span class="k2">)</span>, over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, scalable<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 196</span>        basicImage<span class="k2">(</span>rectangle newDimensions<span class="k2">)</span><span class="k2">:</span> image<span class="k2">(</span>NULL<span class="k2">)</span>, over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, scalable<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 197</span>        <span class="k2">{</span>
<span class="number"> 198</span>            dimensions <span class="k3">=</span> newDimensions<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">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>        LOAD_RESULT load<span class="k2">(</span>std::string path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>        <span class="k1">void</span> isMouseOver<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>        <span class="k1">bool</span> isClicked<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 206</span>
<span class="number"> 207</span>        <span class="k1">void</span> setPosition<span class="k2">(</span>vector2d newPosition<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>        <span class="k1">void</span> highlight<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>        <span class="k1">bool</span> isImageOver<span class="k2">(</span>vector2d position<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>        rectangle getDimensions<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>        <span class="k1">void</span> setDimensions<span class="k2">(</span>rectangle newDimensions<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>        <span class="k1">void</span> setScalable<span class="k2">(</span><span class="k1">bool</span> state<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 213</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 214</span>
<span class="number"> 215</span>
<span class="number"> 216</span>    <span class="c">/********************************************\</span>
<span class="number"> 217</span><span class="c">        button - class that represents a button</span>
<span class="number"> 218</span><span class="c">        in the program.</span>
<span class="number"> 219</span><span class="c">    ********************************************/</span>
<span class="number"> 220</span>
<span class="number"> 221</span>    <span class="k1">class</span> button
<span class="number"> 222</span>    <span class="k2">{</span>
<span class="number"> 223</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 224</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>upImage, <span class="k3">*</span>overImage, <span class="k3">*</span>upPiece, <span class="k3">*</span>upLeftPiece, <span class="k3">*</span>upRightPiece, <span class="k3">*</span>overPiece, <span class="k3">*</span>overLeftPiece, <span class="k3">*</span>overRightPiece<span class="k2">;</span>
<span class="number"> 225</span>        <span class="k1">bool</span> over, scalable, tooltipEnabled<span class="k2">;</span>
<span class="number"> 226</span>        <span class="k1">int</span> minimumWidth<span class="k2">;</span>
<span class="number"> 227</span>        Tooltip tooltip<span class="k2">;</span>
<span class="number"> 228</span>
<span class="number"> 229</span>        public:
<span class="number"> 230</span>
<span class="number"> 231</span>        ~button<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 232</span>            button<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> dimensions<span class="k2">(</span>rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>, upImage<span class="k2">(</span>NULL<span class="k2">)</span>, overImage<span class="k2">(</span>NULL<span class="k2">)</span>, upPiece<span class="k2">(</span>NULL<span class="k2">)</span>, upLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 233</span>            upRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 234</span>            over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, scalable<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, minimumWidth<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 235</span>
<span class="number"> 236</span>        button<span class="k2">(</span>rectangle newDimensions<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 237</span>            upImage<span class="k2">(</span>NULL<span class="k2">)</span>, overImage<span class="k2">(</span>NULL<span class="k2">)</span>, upPiece<span class="k2">(</span>NULL<span class="k2">)</span>, upLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>, upRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 238</span>            overPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 239</span>            over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, scalable<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, minimumWidth<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 240</span>        <span class="k2">{</span>
<span class="number"> 241</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 242</span>        <span class="k2">}</span>
<span class="number"> 243</span>
<span class="number"> 244</span>        button<span class="k2">(</span>rectangle newDimensions, std::string text<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 245</span>            upImage<span class="k2">(</span>NULL<span class="k2">)</span>, overImage<span class="k2">(</span>NULL<span class="k2">)</span>, upPiece<span class="k2">(</span>NULL<span class="k2">)</span>, upLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>, upRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 246</span>            overPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overLeftPiece<span class="k2">(</span>NULL<span class="k2">)</span>, overRightPiece<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 247</span>            over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, scalable<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, minimumWidth<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 248</span>        <span class="k2">{</span>
<span class="number"> 249</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 250</span>            tooltip <span class="k3">=</span> Tooltip<span class="k2">(</span>text, <span class="n">100</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>        <span class="k2">}</span>
<span class="number"> 252</span>
<span class="number"> 253</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 254</span>        LOAD_RESULT load<span class="k2">(</span>std::string upPath, std::string overPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>        LOAD_RESULT load<span class="k2">(</span>std::string upPath, std::string overPath, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 256</span>        <span class="k1">void</span> isMouseOver<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 257</span>        <span class="k1">bool</span> isClicked<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 258</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 259</span>        <span class="k1">void</span> scale<span class="k2">(</span><span class="k1">int</span> newWidth<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 260</span>        LOAD_RESULT enableScaling<span class="k2">(</span>std::string upPiecePath, std::string upLeftPath, std::string upRightPath, std::string overPiecePath, std::string overLeftPath, std::string overRightPath, <span class="k1">int</span> minimum<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 261</span>        rectangle getDimensions<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 262</span>        <span class="k1">void</span> setPosition<span class="k2">(</span>vector2d newPosition<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 263</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> getUpImage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 264</span>        <span class="k1">void</span> EnableToolTips<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 265</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 266</span>
<span class="number"> 267</span>    <span class="k1">class</span> selectableButton
<span class="number"> 268</span>    <span class="k2">{</span>
<span class="number"> 269</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 270</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>upImage, <span class="k3">*</span>selectedImage<span class="k2">;</span>
<span class="number"> 271</span>        <span class="k1">bool</span> over, selected, tooltipEnabled<span class="k2">;</span>
<span class="number"> 272</span>        <span class="k1">bool</span> irregularShape<span class="k2">;</span>
<span class="number"> 273</span>        Tooltip tooltip<span class="k2">;</span>
<span class="number"> 274</span>
<span class="number"> 275</span>        public:
<span class="number"> 276</span>
<span class="number"> 277</span>        ~selectableButton<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 278</span>        selectableButton<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> dimensions<span class="k2">(</span>rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>,
<span class="number"> 279</span>                  upImage<span class="k2">(</span>NULL<span class="k2">)</span>, selectedImage<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 280</span>                  over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, selected<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 281</span>
<span class="number"> 282</span>        selectableButton<span class="k2">(</span>rectangle newDimensions, <span class="k1">bool</span> shape<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 283</span>            upImage<span class="k2">(</span>NULL<span class="k2">)</span>, selectedImage<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 284</span>            over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, selected<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 285</span>        <span class="k2">{</span>
<span class="number"> 286</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 287</span>            irregularShape <span class="k3">=</span> shape<span class="k2">;</span>
<span class="number"> 288</span>        <span class="k2">}</span>
<span class="number"> 289</span>
<span class="number"> 290</span>        selectableButton<span class="k2">(</span>rectangle newDimensions, <span class="k1">bool</span> shape, std::string text<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 291</span>            upImage<span class="k2">(</span>NULL<span class="k2">)</span>, selectedImage<span class="k2">(</span>NULL<span class="k2">)</span>,
<span class="number"> 292</span>            over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, selected<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, tooltipEnabled<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 293</span>        <span class="k2">{</span>
<span class="number"> 294</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 295</span>            irregularShape <span class="k3">=</span> shape<span class="k2">;</span>
<span class="number"> 296</span>            tooltip <span class="k3">=</span> Tooltip<span class="k2">(</span>text, <span class="n">100</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 297</span>        <span class="k2">}</span>
<span class="number"> 298</span>
<span class="number"> 299</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 300</span>        LOAD_RESULT load<span class="k2">(</span>std::string upPath, std::string selectedPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 301</span>        LOAD_RESULT load<span class="k2">(</span>std::string upPath, std::string selectedPath, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 302</span>        <span class="k1">bool</span> handleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 303</span>        <span class="k1">bool</span> isSelected<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 304</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 305</span>        <span class="k1">void</span> setSelectedState<span class="k2">(</span><span class="k1">bool</span> state<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 306</span>        <span class="k1">void</span> setY1<span class="k2">(</span><span class="k1">float</span> y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 307</span>        <span class="k1">void</span> setX1<span class="k2">(</span><span class="k1">float</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 308</span>        <span class="k1">void</span> setImage<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>img1, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>img2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 309</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 310</span>
<span class="number"> 311</span>    <span class="k1">class</span> selectableButtonSet
<span class="number"> 312</span>    <span class="k2">{</span>
<span class="number"> 313</span>        std::vector<span class="k3">&lt;</span>selectableButton&gt; buttons<span class="k2">;</span>
<span class="number"> 314</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 315</span>
<span class="number"> 316</span>        <span class="k1">int</span> selectedButton<span class="k2">;</span>
<span class="number"> 317</span>        <span class="k1">float</span> xSpace, ySpace<span class="k2">;</span>
<span class="number"> 318</span>        BUTTON_LAYOUT layout<span class="k2">;</span>
<span class="number"> 319</span>        <span class="k1">bool</span> irregularShape<span class="k2">;</span>
<span class="number"> 320</span>
<span class="number"> 321</span>        public:
<span class="number"> 322</span>
<span class="number"> 323</span>        ~selectableButtonSet<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 324</span>        selectableButtonSet<span class="k2">(</span>rectangle newDimensions, <span class="k1">float</span> x_space, <span class="k1">float</span> y_space, BUTTON_LAYOUT newLayout, <span class="k1">bool</span> shape<span class="k2">)</span><span class="k2">:</span> selectedButton<span class="k2">(</span>NO_BUTTON_SELECTED<span class="k2">)</span>
<span class="number"> 325</span>        <span class="k2">{</span>
<span class="number"> 326</span>            irregularShape <span class="k3">=</span> shape<span class="k2">;</span>
<span class="number"> 327</span>            layout <span class="k3">=</span> newLayout<span class="k2">;</span>
<span class="number"> 328</span>            xSpace <span class="k3">=</span> x_space<span class="k2">;</span>
<span class="number"> 329</span>            ySpace <span class="k3">=</span> y_space<span class="k2">;</span>
<span class="number"> 330</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 331</span>        <span class="k2">}</span>
<span class="number"> 332</span>
<span class="number"> 333</span>        selectableButtonSet<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span> selectedButton<span class="k2">(</span>NO_BUTTON_SELECTED<span class="k2">)</span>
<span class="number"> 334</span>        <span class="k2">{</span>
<span class="number"> 335</span>            layout <span class="k3">=</span> LAYOUT_HORIZONTAL<span class="k2">;</span>
<span class="number"> 336</span>            xSpace <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 337</span>            ySpace <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 338</span>            dimensions <span class="k3">=</span> rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 339</span>        <span class="k2">}</span>
<span class="number"> 340</span>
<span class="number"> 341</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 342</span>        LOAD_RESULT addButton<span class="k2">(</span>std::string upPath, std::string selectedPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 343</span>        LOAD_RESULT load<span class="k2">(</span>std::string upPath, std::string selectedPath, <span class="k1">int</span> targetButton<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 344</span>        <span class="k1">bool</span> handleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 345</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 346</span>        <span class="k1">int</span> getSelectedButton<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 347</span>        <span class="k1">int</span> getNumButtons<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 348</span>        <span class="k1">void</span> setNoButtonSelected<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 349</span>        <span class="k1">void</span> setSelectedButton<span class="k2">(</span><span class="k1">int</span> selected<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 350</span>        <span class="k1">void</span> setBaseY<span class="k2">(</span><span class="k1">float</span> y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 351</span>        <span class="k1">void</span> setBaseX<span class="k2">(</span><span class="k1">float</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 352</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 353</span>
<span class="number"> 354</span>    <span class="k1">class</span> progressBar
<span class="number"> 355</span>    <span class="k2">{</span>
<span class="number"> 356</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 357</span>        <span class="k1">int</span> maxItems, numItems<span class="k2">;</span>
<span class="number"> 358</span>        <span class="k1">float</span> increaseRate, percentageIncrease, barProgress, percentageProgress<span class="k2">;</span>
<span class="number"> 359</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> barColor<span class="k2">;</span>
<span class="number"> 360</span>        std::string text<span class="k2">;</span>
<span class="number"> 361</span>
<span class="number"> 362</span>        public:
<span class="number"> 363</span>
<span class="number"> 364</span>        progressBar<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 365</span>        progressBar<span class="k2">(</span>rectangle newDimensions, std::string newText, <span class="k1">int</span> maxi, <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k2">)</span><span class="k2">:</span> numItems<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, barProgress<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>, percentageProgress<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>
<span class="number"> 366</span>        <span class="k2">{</span>
<span class="number"> 367</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 368</span>            text <span class="k3">=</span> newText<span class="k2">;</span>
<span class="number"> 369</span>            barColor <span class="k3">=</span> color<span class="k2">;</span>
<span class="number"> 370</span>            maxItems <span class="k3">=</span> maxi<span class="k2">;</span>
<span class="number"> 371</span>            increaseRate <span class="k3">=</span> dimensions.getWidth<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> maxItems<span class="k2">;</span>
<span class="number"> 372</span>            percentageIncrease <span class="k3">=</span> <span class="n">100</span>.<span class="n">0</span> <span class="k3">/</span> maxItems<span class="k2">;</span>
<span class="number"> 373</span>        <span class="k2">}</span>
<span class="number"> 374</span>
<span class="number"> 375</span>        <span class="k1">void</span> draw<span class="k2">(</span>PROGRESSBAR_DISPLAY_FLAG displayFlag<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 376</span>        <span class="k1">void</span> increaseItems<span class="k2">(</span><span class="k1">int</span> updates <span class="k3">=</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 377</span>        <span class="k1">void</span> setMaxItems<span class="k2">(</span><span class="k1">int</span> newMax<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 378</span>        <span class="k1">void</span> setDimensions<span class="k2">(</span>rectangle newDimensions<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 379</span>        rectangle getDimensions<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 380</span>        <span class="k1">void</span> setNumItems<span class="k2">(</span><span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 381</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 382</span>
<span class="number"> 383</span>    <span class="k1">class</span> scrollbar
<span class="number"> 384</span>    <span class="k2">{</span>
<span class="number"> 385</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>piece, <span class="k3">*</span>topPiece, <span class="k3">*</span>bottomPiece, <span class="k3">*</span>bar<span class="k2">;</span>
<span class="number"> 386</span>
<span class="number"> 387</span>        <span class="k1">float</span> minimumBarHeight, maximumBarHeight, moveRate<span class="k2">;</span>
<span class="number"> 388</span>        <span class="k1">int</span> numItems, numItemsDisplayed, topListItem, spaceFromTop<span class="k2">;</span>
<span class="number"> 389</span>
<span class="number"> 390</span>        rectangle barDimensions, bgBarDimensions, targetArea<span class="k2">;</span>
<span class="number"> 391</span>
<span class="number"> 392</span>        button upButton, downButton<span class="k2">;</span>
<span class="number"> 393</span>        <span class="k1">bool</span> dragging, overScrollBar, mouseButtonDown<span class="k2">;</span>
<span class="number"> 394</span>
<span class="number"> 395</span>        public:
<span class="number"> 396</span>
<span class="number"> 397</span>        scrollbar<span class="k2">(</span>rectangle bgBar, rectangle target, <span class="k1">float</span> mini, <span class="k1">int</span> displayed<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 398</span>            piece<span class="k2">(</span>NULL<span class="k2">)</span>, topPiece<span class="k2">(</span>NULL<span class="k2">)</span>, bottomPiece<span class="k2">(</span>NULL<span class="k2">)</span>, bar<span class="k2">(</span>NULL<span class="k2">)</span>, numItems<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, topListItem<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, spaceFromTop<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number"> 399</span>            dragging<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, overScrollBar<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, mouseButtonDown<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 400</span>        <span class="k2">{</span>
<span class="number"> 401</span>            bgBarDimensions <span class="k3">=</span> bgBar<span class="k2">;</span>
<span class="number"> 402</span>            barDimensions <span class="k3">=</span> bgBar<span class="k2">;</span>
<span class="number"> 403</span>            targetArea <span class="k3">=</span> target<span class="k2">;</span>
<span class="number"> 404</span>
<span class="number"> 405</span>            minimumBarHeight <span class="k3">=</span> mini<span class="k2">;</span>
<span class="number"> 406</span>            maximumBarHeight <span class="k3">=</span> bgBarDimensions.getHeight<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 407</span>            numItemsDisplayed <span class="k3">=</span> displayed<span class="k2">;</span>
<span class="number"> 408</span>        <span class="k2">}</span>
<span class="number"> 409</span>
<span class="number"> 410</span>        scrollbar<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span>
<span class="number"> 411</span>
<span class="number"> 412</span>            piece<span class="k2">(</span>NULL<span class="k2">)</span>, topPiece<span class="k2">(</span>NULL<span class="k2">)</span>, bottomPiece<span class="k2">(</span>NULL<span class="k2">)</span>, bar<span class="k2">(</span>NULL<span class="k2">)</span>, numItems<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, topListItem<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, spaceFromTop<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number"> 413</span>            dragging<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, overScrollBar<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, mouseButtonDown<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>
<span class="number"> 414</span>        <span class="k2">{</span>
<span class="number"> 415</span>            bgBarDimensions <span class="k3">=</span> rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 416</span>            barDimensions <span class="k3">=</span> rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">;</span>
<span class="number"> 417</span>            targetArea <span class="k3">=</span> rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">;</span>
<span class="number"> 418</span>
<span class="number"> 419</span>            minimumBarHeight <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 420</span>            maximumBarHeight <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 421</span>            numItemsDisplayed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 422</span>        <span class="k2">}</span>
<span class="number"> 423</span>
<span class="number"> 424</span>        LOAD_RESULT load<span class="k2">(</span>std::string piecePath, std::string topPath, std::string bottomPath, <span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 425</span>        LOAD_RESULT loadButtons<span class="k2">(</span>std::string upButtonUpPath, std::string upButtonOverPath, std::string DownButtonUpPath, std::string DownButtonOverPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 426</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 427</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 428</span>
<span class="number"> 429</span>        <span class="k1">int</span> handleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 430</span>        <span class="k1">int</span> getTopListItem<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 431</span>        <span class="k1">void</span> recalcuate<span class="k2">(</span>rectangle newDimensions, rectangle newTargetArea, <span class="k1">int</span> displayed, <span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 432</span>        <span class="k1">void</span> recalcuate<span class="k2">(</span><span class="k1">int</span> displayed, <span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 433</span>        <span class="k1">void</span> resetTopListItem<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 434</span>        <span class="k1">void</span> setTopListItem<span class="k2">(</span><span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 435</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 436</span>
<span class="number"> 437</span>    <span class="k1">class</span> textBox
<span class="number"> 438</span>    <span class="k2">{</span>
<span class="number"> 439</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 440</span>        std::string text<span class="k2">;</span>
<span class="number"> 441</span>        <span class="k1">bool</span> shiftMod, over, isActive, drawCursor, disableClicks<span class="k2">;</span> <span class="c">// so textbox cant be disabled if clicked off</span>
<span class="number"> 442</span>        <span class="k1">unsigned</span> <span class="k1">int</span> maxTextLength<span class="k2">;</span>
<span class="number"> 443</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>cursorTimer<span class="k2">;</span>
<span class="number"> 444</span>
<span class="number"> 445</span>        public:
<span class="number"> 446</span>
<span class="number"> 447</span>        textBox<span class="k2">(</span>rectangle newDimensions, <span class="k1">bool</span> click<span class="k2">)</span><span class="k2">:</span>
<span class="number"> 448</span>        shiftMod<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, isActive<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, drawCursor<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>,
<span class="number"> 449</span>        maxTextLength<span class="k2">(</span><span class="n">20</span><span class="k2">)</span>
<span class="number"> 450</span>        <span class="k2">{</span>
<span class="number"> 451</span>            disableClicks <span class="k3">=</span> click<span class="k2">;</span>
<span class="number"> 452</span>            dimensions <span class="k3">=</span> newDimensions<span class="k2">;</span>
<span class="number"> 453</span>        <span class="k2">}</span>
<span class="number"> 454</span>
<span class="number"> 455</span>        textBox<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span>
<span class="number"> 456</span>        dimensions<span class="k2">(</span>rectangle<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>,
<span class="number"> 457</span>        shiftMod<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, over<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, isActive<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, drawCursor<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>, disableClicks<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span>,
<span class="number"> 458</span>        maxTextLength<span class="k2">(</span><span class="n">20</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 459</span>
<span class="number"> 460</span>        <span class="k1">bool</span> handleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event, INPUT_TYPE inputType<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 461</span>
<span class="number"> 462</span>        <span class="k1">void</span> setActiveState<span class="k2">(</span><span class="k1">bool</span> newState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 463</span>        <span class="k1">bool</span> getActiveState<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 464</span>
<span class="number"> 465</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 466</span>        <span class="k1">void</span> cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 467</span>        <span class="k1">int</span> load<span class="k2">(</span><span class="k1">int</span> limit, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 468</span>        <span class="k1">void</span> setDimensions<span class="k2">(</span>rectangle newDimensions<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 469</span>        rectangle getDimensions<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 470</span>
<span class="number"> 471</span>        <span class="k1">void</span> clearText<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 472</span>        std::string getText<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 473</span>        <span class="k1">void</span> setText<span class="k2">(</span>std::string newText<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 474</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 475</span>
<span class="number"> 476</span>    <span class="k1">class</span> selectionMenu
<span class="number"> 477</span>    <span class="k2">{</span>
<span class="number"> 478</span>        std::vector<span class="k3">&lt;</span>button&gt; menuItems<span class="k2">;</span>
<span class="number"> 479</span>        selectableButton menuBase<span class="k2">;</span>
<span class="number"> 480</span>        <span class="k1">int</span> selectedButton<span class="k2">;</span>
<span class="number"> 481</span>        rectangle dimensions<span class="k2">;</span>
<span class="number"> 482</span>
<span class="number"> 483</span>        public:
<span class="number"> 484</span>
<span class="number"> 485</span>        selectionMenu<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 486</span>        selectionMenu<span class="k2">(</span>rectangle position<span class="k2">)</span><span class="k2">:</span> selectedButton<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 487</span>        <span class="k2">{</span>
<span class="number"> 488</span>            dimensions <span class="k3">=</span> position<span class="k2">;</span>
<span class="number"> 489</span>        <span class="k2">}</span>
<span class="number"> 490</span>
<span class="number"> 491</span>        <span class="k1">int</span> getSelectedItem<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 492</span>        <span class="k1">int</span> addButton<span class="k2">(</span>std::string upPath, std::string overPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 493</span>        <span class="k1">int</span> loadBase<span class="k2">(</span>std::string upPath, std::string selectedPath<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 494</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 495</span>        <span class="k1">void</span> handleEvents<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 496</span>        <span class="k1">void</span> setSelectedItem<span class="k2">(</span><span class="k1">int</span> item<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 497</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 498</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Thu, 31 May 2012 04:52:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is your problem currently? Memory usage? Undefined references still? Drawing z-order? Or something else? I don&#39;t know what I am looking for in your code...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 31 May 2012 21:40:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The drawing order, thats how my library works I&#39;m trying to integrate a way to make the tooltips draw last. Before I tried to use a static variable that I drew on the size of the screen then drew it last.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Fri, 01 Jun 2012 05:35:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, in my GUI library, every widget class is derived from a base widget class. This allows you to make vectors of WidgetBase*&#39;s. After that you can sort them however you want, especially for a drawing order. Need to draw on top? Move it to the bottom of the list.</p><p>For you, I suppose your GUI could have something like a current Tooltip*, that it just draws last no matter what. Have your buttons or whatever uses a tool tip set the current GUI tooltip and then let it draw it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 01 Jun 2012 06:34:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes that is true since only one tooltip can ever be drawn at once. Thanks I&#39;ll look into that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (shadyvillian)</author>
		<pubDate>Sat, 02 Jun 2012 17:10:29 +0000</pubDate>
	</item>
</rss>
