<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Optimizing Draw Functions</title>
		<link>http://www.allegro.cc/forums/view/606371</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 11 Feb 2011 10:08:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So. My ascii library&#39;s draw functions are EVIL CPU-SUCKERS. There are two parts: a Draw_Char function that doesn&#39;t draw anything to the screen but updates the symbol at a certain location, and Win_Draw, which updates the given Window by redrawing every character in it. Obviously running them every time the game loops isn&#39;t the best idea, but does anyone have any tips on how to best optimize these things to prevent lag?</p><p>Draw_Char:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> Draw_Char<span class="k2">(</span><span class="k1">int</span> code,Window<span class="k3">&amp;</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>,<span class="k1">int</span> x,<span class="k1">int</span> y<span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">if</span><span class="k2">(</span>x<span class="k3">&lt;</span>window.mw <span class="k3">&amp;</span><span class="k3">&amp;</span> x&gt;<span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y&gt;<span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y<span class="k3">&lt;</span>window.mh<span class="k2">)</span>
  <span class="k2">{</span>
    window.oldtile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k3">=</span>window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.symbol<span class="k3">=</span>code<span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.color<span class="k3">=</span><span class="s">"white"</span><span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.backcolor<span class="k3">=</span><span class="s">"black"</span><span class="k2">;</span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

Win_Draw:
</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">void</span> Win_Draw<span class="k2">(</span>Window<span class="k3">&amp;</span> windowsource<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="k3">=</span>windowsource.h<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span>
<span class="number">  4</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="k3">=</span>windowsource.w<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span><span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"black"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number">  8</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightgrey"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 10</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">192</span>,<span class="n">192</span>,<span class="n">192</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"blue"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 12</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"green"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 14</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">128</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"cyan"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 16</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">128</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"red"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 18</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"magenta"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 20</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">0</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"brown"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 22</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">128</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"darkgrey"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 24</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">128</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightblue"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 26</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightgreen"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 28</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightcyan"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 30</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightred"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 32</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"lightmagenta"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 34</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"yellow"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 36</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</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"> 37</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color,<span class="s">"white"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 38</span>color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span><span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"black"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 41</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightgrey"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 43</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">192</span>,<span class="n">192</span>,<span class="n">192</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"blue"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 45</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"green"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 47</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">128</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"cyan"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 49</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">128</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"red"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 51</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"magenta"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 53</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">0</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"brown"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 55</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">128</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"darkgrey"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 57</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">128</span>,<span class="n">128</span>,<span class="n">128</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightblue"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 59</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightgreen"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 61</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 62</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightcyan"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 63</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightred"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 65</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 66</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"lightmagenta"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 67</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"yellow"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 69</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</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"> 70</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor,<span class="s">"white"</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 71</span>backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>
<span class="number"> 73</span><span class="k1">int</span> code<span class="k3">=</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.symbol<span class="k2">;</span>
<span class="number"> 74</span><span class="k1">if</span><span class="k2">(</span>code<span class="k3">&lt;</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> code&gt;255<span class="k2">)</span>
<span class="number"> 75</span>code<span class="k3">=</span><span class="n">63</span><span class="k2">;</span>
<span class="number"> 76</span><span class="k1">int</span> backcode<span class="k3">=</span><span class="n">219</span><span class="k2">;</span>
<span class="number"> 77</span><span class="k1">int</span> row <span class="k3">=</span> code <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 78</span><span class="k1">int</span> backrow <span class="k3">=</span> backcode <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 79</span><span class="k1">while</span><span class="k2">(</span>code&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 80</span>code-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 81</span><span class="k1">while</span><span class="k2">(</span>backcode&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 82</span>backcode-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 83</span><span class="k1">if</span><span class="k2">(</span>i<span class="k3">&lt;</span>windowsource.w <span class="k3">&amp;</span><span class="k3">&amp;</span> j<span class="k3">&lt;</span>windowsource.h<span class="k2">)</span>
<span class="number"> 84</span><span class="k2">{</span>
<span class="number"> 85</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, backcolor, tilewidth<span class="k3">*</span>backcode, tileheight<span class="k3">*</span>backrow, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 86</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, color, tilewidth<span class="k3">*</span>code, tileheight<span class="k3">*</span>row, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 87</span><span class="k2">}</span>
<span class="number"> 88</span><span class="k2">}</span>
<span class="number"> 89</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gatleos)</author>
		<pubDate>Fri, 11 Feb 2011 06:10:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></span> will help clean up your code, at least.</p><p><a href="http://alleg.sourceforge.net/a5docs/refman/color.html#al_color_name_to_rgb"> here&#39;s a list of color names.</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Fri, 11 Feb 2011 06:13:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem is that the ALLEGRO_COLOR names aren&#39;t the same as traditional ASCII colors. I&#39;ll try to see what I can do with it, though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gatleos)</author>
		<pubDate>Fri, 11 Feb 2011 06:22:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What&#39;s with all the strcmp&#39;s in Win_Draw? Make a color map :</p><p>ColorMap.hpp
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;map&gt;</span>
<span class="p">#include &lt;string&gt;</span>

<span class="k1">extern</span> std::map<span class="k3">&lt;</span>std::string , ALLEGRO_COLOR&gt; <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">;</span>

<span class="k1">void</span> InitializeColorMap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

ColorMap.cpp
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">using</span> std::map<span class="k2">;</span>
<span class="k1">using</span> std::string<span class="k2">;</span>

map<span class="k3">&lt;</span>string , ALLEGRO_COLOR&gt; <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">;</span>

<span class="k1">void</span> InitializeColorMap<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
   color_map.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span><span class="s">"black"</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span><span class="s">"lightgrey"</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">192</span>,<span class="n">192</span>,<span class="n">192</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
   <span class="c">// repeat for all of your named colors</span>
<span class="k2">}</span>
</pre></div></div><p>

Win_Draw.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "ColorMap.hpp"</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">void</span> Win_Draw<span class="k2">(</span>Window<span class="k3">&amp;</span> windowsource<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="k3">=</span>windowsource.h<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span>
<span class="number">  6</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="k3">=</span>windowsource.w<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
<span class="number">  7</span><span class="k2">{</span>
<span class="number">  8</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> wcolor <span class="k3">=</span> windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color<span class="k2">;</span>
<span class="number">  9</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> wbcolor <span class="k3">=</span> windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor<span class="k2">;</span>
<span class="number"> 10</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span><span class="k1">if</span> <span class="k2">(</span>color_map.find<span class="k2">(</span>wcolor<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> color_map.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 12</span>   color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span>wcolor<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k2">}</span>
<span class="number"> 14</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k1">if</span> <span class="k2">(</span>color_map.find<span class="k2">(</span>wbcolor<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> color_map.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>   color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span>wbcolor<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="k1">int</span> code<span class="k3">=</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.symbol<span class="k2">;</span>
<span class="number"> 22</span><span class="k1">if</span><span class="k2">(</span>code<span class="k3">&lt;</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> code&gt;255<span class="k2">)</span>
<span class="number"> 23</span>code<span class="k3">=</span><span class="n">63</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k1">int</span> backcode<span class="k3">=</span><span class="n">219</span><span class="k2">;</span>
<span class="number"> 25</span><span class="k1">int</span> row <span class="k3">=</span> code <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 26</span><span class="k1">int</span> backrow <span class="k3">=</span> backcode <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 27</span><span class="k1">while</span><span class="k2">(</span>code&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 28</span>code-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 29</span><span class="k1">while</span><span class="k2">(</span>backcode&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 30</span>backcode-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 31</span><span class="k1">if</span><span class="k2">(</span>i<span class="k3">&lt;</span>windowsource.w <span class="k3">&amp;</span><span class="k3">&amp;</span> j<span class="k3">&lt;</span>windowsource.h<span class="k2">)</span>
<span class="number"> 32</span><span class="k2">{</span>
<span class="number"> 33</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, backcolor, tilewidth<span class="k3">*</span>backcode, tileheight<span class="k3">*</span>backrow, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, color, tilewidth<span class="k3">*</span>code, tileheight<span class="k3">*</span>row, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span><span class="k2">}</span>
<span class="number"> 36</span><span class="k2">}</span>
<span class="number"> 37</span><span class="k2">}</span>
</div></div><p>

Other things - Why are you using <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a></span>? Why not just use al_draw_filled_rectangle? And I don&#39;t see you actually draw the character anywhere.</p><p>Using the std::map will at least give you a binary search, which should be decently faster than strcmp&#39;ing every known color value every iteration of the loop.</p><p>Also, why is tile one wider and one taller than window?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 11 Feb 2011 07:09:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As Peter Wang said in the other thread, why not just use ALLEGRO_COLOR directly, instead of storing the color name?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Fri, 11 Feb 2011 07:20:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I could not, for the life of me, get ALLEGRO_COLORs to work correctly. But using the code above, that doesn&#39;t really matter anymore.
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606371/902829#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
Why not just use al_draw_filled_rectangle? And I don&#39;t see you actually draw the character anywhere.
</p></div></div><p>
I assume primitives are faster than drawing bitmap regions, then? The character is drawn by the second al_draw_tinted_bitmap_region in Win_Draw.</p><p>Anyway, I think the code above helped a bit, but it&#39;s still using more CPU than it has any right to.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gatleos)</author>
		<pubDate>Fri, 11 Feb 2011 08:18:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606371/902836#target">Gatleos</a> said:</div><div class="quote"><p>
I assume primitives are faster than drawing bitmap regions, then?
</p></div></div><p>
Maybe, maybe not. But al_draw_filled_rectangle should be faster than using al_draw_tinted_bitmap_region, at least I would think so.</p><p>How do your draw your characters background using al_draw_tinted_bitmap_region? And why are you tinting it? Don&#39;t you want just the colors from the background/foreground? Why not use al_draw_text for the character? Just use a char array[2] and set array[0] to your character and array[1] to &#39;\0&#39;.</p><p>About the colors : just add an ALLEGRO_COLOR entry to your TILE class and when your users set the color using a color name, find the ALLEGRO_COLOR from your color map and use that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 11 Feb 2011 08:41:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606371/902842#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
Maybe, maybe not. But al_draw_filled_rectangle should be faster than using al_draw_tinted_bitmap_region, at least I would think so.</p><p>How do your draw your characters background using al_draw_tinted_bitmap_region? And why are you tinting it? Don&#39;t you want just the colors from the background/foreground? Why not use al_draw_text for the character? Just use a char array[2] and set array[0] to your character and array[1] to &#39;\0&#39;.</p><p>About the colors : just add an ALLEGRO_COLOR entry to your TILE class and when your users set the color using a color name, find the ALLEGRO_COLOR from your color map and use that.
</p></div></div><p>
The ascii table is in a bitmap like this one:<br /><span class="remote-thumbnail"><span class="json">{"name":"3oNIz.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/6\/06e4de4fdba7ae5cd41a73426a5d3992.png","w":256,"h":112,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/6\/06e4de4fdba7ae5cd41a73426a5d3992"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/0/6/06e4de4fdba7ae5cd41a73426a5d3992-240.jpg" alt="3oNIz.png" width="240" height="105" /></span><br />First, the background is alpha&#39;d out. It draws the ASCII character&#39;s background using the &quot;blank&quot; character tinted to the correct background color. It then draws the ASCII character over it with the specified foreground color.</p><p>Can al_draw_text use unicode characters, or just regular old keyboard characters?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gatleos)</author>
		<pubDate>Fri, 11 Feb 2011 08:51:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606371/902836#target">Gatleos</a> said:</div><div class="quote"><p>
But using the code above, that doesn&#39;t really matter anymore.
</p></div></div><p>
Yeah, it kind of does. std::map is still a lot slower than doing absolutely nothing would be.</p><p>Here&#39;s how it&#39;d look:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> Draw_Char<span class="k2">(</span><span class="k1">int</span> code,Window<span class="k3">&amp;</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>,<span class="k1">int</span> x,<span class="k1">int</span> y<span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">if</span><span class="k2">(</span>x<span class="k3">&lt;</span>window.mw <span class="k3">&amp;</span><span class="k3">&amp;</span> x&gt;<span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y&gt;<span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y<span class="k3">&lt;</span>window.mh<span class="k2">)</span>
  <span class="k2">{</span>
    window.oldtile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k3">=</span>window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.symbol<span class="k3">=</span>code<span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.color<span class="k3">=</span><a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span><span class="s">"white"</span><span class="k2">]</span><span class="k2">;</span>
    window.tile<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.backcolor<span class="k3">=</span><a href="http://www.allegro.cc/manual/color_map"><span class="a">color_map</span></a><span class="k2">[</span><span class="s">"black"</span><span class="k2">]</span><span class="k2">;</span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

</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">void</span> Win_Draw<span class="k2">(</span>Window<span class="k3">&amp;</span> windowsource<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<div class="highlight"><span class="number">  3</span><a href="http://www.allegro.cc/manual/al_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span></div><span class="number">  4</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="k3">=</span>windowsource.h<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>j<span class="k2">)</span>
<span class="number">  5</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="k3">=</span>windowsource.w<span class="k2">;</span><span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color <span class="k3">=</span> tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.color<span class="k2">;</span>
<span class="number">  8</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> backcolor <span class="k3">=</span> tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.backcolor<span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">int</span> code<span class="k3">=</span>windowsource.tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span>.symbol<span class="k2">;</span>
<span class="number"> 11</span><span class="k1">if</span><span class="k2">(</span>code<span class="k3">&lt;</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> code&gt;255<span class="k2">)</span>
<span class="number"> 12</span>code<span class="k3">=</span><span class="n">63</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k1">int</span> backcode<span class="k3">=</span><span class="n">219</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k1">int</span> row <span class="k3">=</span> code <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 15</span><span class="k1">int</span> backrow <span class="k3">=</span> backcode <span class="k3">/</span> colnum<span class="k2">;</span>
<span class="number"> 16</span><span class="k1">while</span><span class="k2">(</span>code&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 17</span>code-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 18</span><span class="k1">while</span><span class="k2">(</span>backcode&gt;<span class="k3">=</span>colnum<span class="k2">)</span>
<span class="number"> 19</span>backcode-<span class="k3">=</span>colnum<span class="k2">;</span>
<span class="number"> 20</span><span class="k1">if</span><span class="k2">(</span>i<span class="k3">&lt;</span>windowsource.w <span class="k3">&amp;</span><span class="k3">&amp;</span> j<span class="k3">&lt;</span>windowsource.h<span class="k2">)</span>
<span class="number"> 21</span><span class="k2">{</span>
<span class="number"> 22</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, backcolor, tilewidth<span class="k3">*</span>backcode, tileheight<span class="k3">*</span>backrow, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span><a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap_region"><span class="a">al_draw_tinted_bitmap_region</span></a><span class="k2">(</span>ascii, color, tilewidth<span class="k3">*</span>code, tileheight<span class="k3">*</span>row, tilewidth, tileheight, <span class="k2">(</span>tilewidth<span class="k3">*</span>i<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tilewidth<span class="k3">*</span>windowsource.x<span class="k2">)</span>, <span class="k2">(</span>tileheight<span class="k3">*</span>j<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span>tileheight<span class="k3">*</span>windowsource.y<span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span>
<span class="number"> 25</span><span class="k2">}</span>
<div class="highlight"><span class="number"> 26</span><a href="http://www.allegro.cc/manual/al_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span></div><span class="number"> 27</span><span class="k2">}</span>
</div></div><p>

EDIT: nvm</p><p>EDIT2: Also, try adding al_hold_bitmap_drawing like I did above (highlighted).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Fri, 11 Feb 2011 09:27:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How are are changes occurring on the screen? Are all the ascii constantly changing (like an ascii video player), or only changing periodically? </p><p>If the ascii isn&#39;t changing every time you draw the screen, you could store a copy to use when you refresh, so you are not needlessly going through this loop to produce the same results.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Nazerith)</author>
		<pubDate>Fri, 11 Feb 2011 10:08:13 +0000</pubDate>
	</item>
</rss>
