<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Silly demo</title>
		<link>http://www.allegro.cc/forums/view/617783</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 26 Mar 2019 07:14:50 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I made this with Eagle and Allegro 5.</p><p><b>EDIT</b><br />Updated demo. Now you can resize and move everything thanks to my WidgetMover class. Wrote it yesterday, ironed the bugs out today.</p><p>Download here : <a href="https://www.allegro.cc/files/attachment/611955">Demo2.7z</a></p><p>Everything is done with the mouse. LMB selects. MMB drag scrolls (only the inner window). Hover over different areas to see which widget is in focus, and to see the layering effects. Hover over the border to see the icon change to a grabby hand to move the widget on LMB press, and hover over the margin to see the resize icons.</p><p><span class="remote-thumbnail"><span class="json">{"name":"611953","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/1\/117cf8015c51eb6108ba16240442bd18.png","w":1202,"h":941,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/1\/117cf8015c51eb6108ba16240442bd18"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/1/117cf8015c51eb6108ba16240442bd18-240.jpg" alt="611953" width="240" height="187" /></span> <span class="remote-thumbnail"><span class="json">{"name":"611956","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/a\/8ad6c44d2aff28ab0c43292981e7ac0f.png","w":1202,"h":941,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/a\/8ad6c44d2aff28ab0c43292981e7ac0f"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/8/a/8ad6c44d2aff28ab0c43292981e7ac0f-240.jpg" alt="611956" width="240" height="187" /></span></p><p>Cleaned up the example code.
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span>
<span class="number">   2</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#include "Eagle/backends/Allegro5Backend.hpp"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_color.h"</span>
<span class="number">   6</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="k1">class</span> TestWidget <span class="k2">:</span> <span class="k1">public</span> WidgetBase <span class="k2">{</span>
<span class="number">  10</span>   
<span class="number">  11</span>   <span class="k1">virtual</span> <span class="k1">void</span> PrivateDisplay<span class="k2">(</span>EagleGraphicsContext<span class="k3">*</span> win , <span class="k1">int</span> xpos , <span class="k1">int</span> ypos<span class="k2">)</span><span class="k2">;</span>
<span class="number">  12</span>   <span class="k1">virtual</span> <span class="k1">int</span> PrivateHandleEvent<span class="k2">(</span>EagleEvent ee<span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>   
<span class="number">  14</span>   <span class="k1">virtual</span> <span class="k1">void</span> OnFlagChanged<span class="k2">(</span>WIDGET_FLAGS f , <span class="k1">bool</span> on<span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span>
<span class="number">  16</span>   
<span class="number">  17</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number">  18</span>   TestWidget<span class="k2">(</span>std::string objname<span class="k2">)</span> <span class="k2">:</span>
<span class="number">  19</span>         WidgetBase<span class="k2">(</span><span class="s">"TestWidget"</span> , objname<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number">  20</span>   
<span class="number">  21</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</span>
<span class="number">  24</span>
<span class="number">  25</span><span class="k1">void</span> TestWidget::PrivateDisplay<span class="k2">(</span>EagleGraphicsContext<span class="k3">*</span> win , <span class="k1">int</span> xpos , <span class="k1">int</span> ypos<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  26</span>   Rectangle r <span class="k3">=</span> InnerArea<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>   r.MoveBy<span class="k2">(</span>xpos,ypos<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>   <span class="k1">unsigned</span> <span class="k1">int</span> flags <span class="k3">=</span> Flags<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>   EagleColor c1 <span class="k3">=</span> GetColor<span class="k2">(</span>MGCOL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>   EagleColor c2 <span class="k3">=</span> GetColor<span class="k2">(</span>BGCOL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>   <span class="k1">if</span> <span class="k2">(</span>flags <span class="k3">&amp;</span> HASFOCUS<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  32</span>      c1 <span class="k3">=</span> GetColor<span class="k2">(</span>HLCOL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>      c2 <span class="k3">=</span> GetColor<span class="k2">(</span>FGCOL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>   <span class="k2">}</span>
<span class="number">  35</span>   win-&gt;DrawFilledRectangle<span class="k2">(</span>r , <span class="k2">(</span>flags <span class="k3">&amp;</span> HOVER<span class="k2">)</span>?c1:c2<span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>   std::string n <span class="k3">=</span> ShortName<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>   win-&gt;DrawTextString<span class="k2">(</span>win-&gt;DefaultFont<span class="k2">(</span><span class="k2">)</span> , n , InnerArea<span class="k2">(</span><span class="k2">)</span>.CX<span class="k2">(</span><span class="k2">)</span> , InnerArea<span class="k2">(</span><span class="k2">)</span>.CY<span class="k2">(</span><span class="k2">)</span> , EagleColor<span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> , HALIGN_CENTER , VALIGN_CENTER<span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span><span class="k2">}</span>
<span class="number">  39</span>
<span class="number">  40</span>
<span class="number">  41</span>
<span class="number">  42</span><span class="k1">int</span> TestWidget::PrivateHandleEvent<span class="k2">(</span>EagleEvent ee<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  43</span>   <span class="k1">if</span> <span class="k2">(</span>ee.type <span class="k3">=</span><span class="k3">=</span> EAGLE_EVENT_MOUSE_BUTTON_DOWN <span class="k3">&amp;</span><span class="k3">&amp;</span> ee.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  44</span>      <span class="k1">if</span> <span class="k2">(</span>OuterArea<span class="k2">(</span><span class="k2">)</span>.Contains<span class="k2">(</span>ee.mouse.x , ee.mouse.y<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  45</span>         <span class="k1">return</span> DIALOG_TAKE_FOCUS<span class="k2">;</span>
<span class="number">  46</span>      <span class="k2">}</span>
<span class="number">  47</span>   <span class="k2">}</span>
<span class="number">  48</span>   <span class="k1">return</span> DIALOG_OKAY<span class="k2">;</span>
<span class="number">  49</span><span class="k2">}</span>
<span class="number">  50</span>
<span class="number">  51</span>
<span class="number">  52</span>
<span class="number">  53</span><span class="k1">void</span> TestWidget::OnFlagChanged<span class="k2">(</span>WIDGET_FLAGS f , <span class="k1">bool</span> on<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  54</span>   <span class="k1">if</span> <span class="k2">(</span>f <span class="k3">=</span><span class="k3">=</span> HOVER<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  55</span>      EagleLog<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"HOVER changed to "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="k2">(</span>on?<span class="s">"on"</span><span class="k2">:</span><span class="s">"off"</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  56</span>      SetRedrawFlag<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>   <span class="k2">}</span>
<span class="number">  58</span>   <span class="k1">if</span> <span class="k2">(</span>f <span class="k3">=</span><span class="k3">=</span> HASFOCUS<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  59</span>      EagleLog<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"HASFOCUS changed to "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="k2">(</span>on?<span class="s">"on"</span><span class="k2">:</span><span class="s">"off"</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  60</span>      SetRedrawFlag<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>   <span class="k2">}</span>
<span class="number">  62</span><span class="k2">}</span>
<span class="number">  63</span>
<span class="number">  64</span>
<span class="number">  65</span>
<span class="number">  66</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  67</span>
<span class="number">  68</span>   EnableLog<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>   
<span class="number">  70</span>   SendOutputToFile<span class="k2">(</span><span class="s">"Eagle.log"</span> , <span class="s">""</span> , <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>   
<span class="number">  72</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argc<span class="k2">;</span>
<span class="number">  73</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argv<span class="k2">;</span>
<span class="number">  74</span>   
<span class="number">  75</span><span class="c">///   EagleSystem* sys = Eagle::EagleLibrary::System("Allegro5");</span>
<span class="number">  76</span><span class="c">///   EagleSystem* sys = Eagle::EagleLibrary::System("Allegro5");</span>
<span class="number">  77</span>   Allegro5System<span class="k3">*</span> sys <span class="k3">=</span> GetAllegro5System<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>   
<span class="number">  79</span>   <span class="k1">int</span> sw <span class="k3">=</span> <span class="n">1200</span><span class="k2">;</span>
<span class="number">  80</span>   <span class="k1">int</span> sh <span class="k3">=</span> <span class="n">900</span><span class="k2">;</span>
<span class="number">  81</span>   
<span class="number">  82</span>   <span class="k1">if</span> <span class="k2">(</span>EAGLE_FULL_SETUP <span class="k3">!</span><span class="k3">=</span> sys-&gt;Initialize<span class="k2">(</span>EAGLE_FULL_SETUP<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  83</span>      EagleWarn<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to install some components."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  84</span>   <span class="k2">}</span>
<span class="number">  85</span>   EagleGraphicsContext<span class="k3">*</span> win <span class="k3">=</span> sys-&gt;GetWindowManager<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>CreateWindow<span class="k2">(</span><span class="s">"win"</span> , sw , sh , EAGLE_OPENGL <span class="k3">|</span> EAGLE_WINDOWED <span class="k3">|</span> EAGLE_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>   
<span class="number">  87</span>   win-&gt;Clear<span class="k2">(</span>EagleColor<span class="k2">(</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="k2">;</span>
<span class="number">  88</span>   win-&gt;FlipDisplay<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>
<span class="number">  90</span>   std::string bgfile <span class="k3">=</span> <span class="s">"stallions.jpg"</span><span class="k2">;</span>
<span class="number">  91</span>   EagleImage<span class="k3">*</span> bg <span class="k3">=</span> win-&gt;LoadImageFromFile<span class="k2">(</span>bgfile<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bg <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bg <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  93</span>      EagleError<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> StringPrintF<span class="k2">(</span><span class="s">"Failed to load %s from disk.\n"</span> , bgfile.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  95</span>   <span class="k2">}</span>
<span class="number">  96</span>   
<span class="number">  97</span>   <span class="c">/// Setup some custom colors for our margin, border, and padding</span>
<span class="number">  98</span>   SHAREDOBJECT<span class="k3">&lt;</span>WidgetColorset&gt; pwc <span class="k3">=</span> GetColorsetByName<span class="k2">(</span><span class="s">"Default"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>   EAGLE_ASSERT<span class="k2">(</span>pwc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>   WidgetColorset<span class="k3">&amp;</span> wc <span class="k3">=</span> <span class="k3">*</span>pwc.get<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>   wc<span class="k2">[</span>PADCOL<span class="k2">]</span> <span class="k3">=</span> EagleColor<span class="k2">(</span><span class="n">127</span>,<span class="n">127</span>,<span class="n">127</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>   wc<span class="k2">[</span>BORDCOL<span class="k2">]</span> <span class="k3">=</span> EagleColor<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"> 103</span>   wc<span class="k2">[</span>MARGCOL<span class="k2">]</span> <span class="k3">=</span> EagleColor<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"> 104</span>   
<span class="number"> 105</span>   
<span class="number"> 106</span>   <span class="c">/// Outer root gui</span>
<span class="number"> 107</span>   WidgetHandler gui<span class="k2">(</span>win , <span class="s">"WidgetHandler"</span> , <span class="s">"GUI1"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>   gui.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span><span class="n">10</span> , <span class="n">15</span> , <span class="n">25</span> , Rectangle<span class="k2">(</span><span class="n">150</span>,<span class="n">150</span>,<span class="n">900</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">)</span> , <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>   
<span class="number"> 110</span>   <span class="c">/// A WidgetMover allows us to move any widgets we want</span>
<span class="number"> 111</span>   WidgetMover wmover<span class="k2">(</span><span class="s">"Widget mover"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>   wmover.SetWidgetArea<span class="k2">(</span>Rectangle<span class="k2">(</span><span class="k3">-</span><span class="n">1000</span>,<span class="k3">-</span><span class="n">1000</span>,<span class="n">1</span>,<span class="n">1</span><span class="k2">)</span> , <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>   wmover.SetHotKey<span class="k2">(</span>input_key_held<span class="k2">(</span>EAGLE_KEY_LSHIFT<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> input_key_press<span class="k2">(</span>EAGLE_KEY_ENTER<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>   wmover.SetAbilities<span class="k2">(</span><span class="k1">true</span> , <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>
<span class="number"> 116</span>   gui <span class="k3">&lt;</span><span class="k3">&lt;</span> wmover<span class="k2">;</span>
<span class="number"> 117</span>   
<span class="number"> 118</span>   <span class="c">/// Inner gui</span>
<span class="number"> 119</span>   WidgetHandler gui2<span class="k2">(</span>win , <span class="s">"WidgetHandler"</span> , <span class="s">"GUI2"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>   gui2.SetupBuffer<span class="k2">(</span><span class="n">1280</span>,<span class="n">960</span>,win<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>   gui2.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span><span class="n">5</span>,<span class="n">10</span>,<span class="n">15</span> , Rectangle<span class="k2">(</span><span class="n">130</span>,<span class="n">60</span>,<span class="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">)</span> , <span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>   gui.AllowMiddleMouseButtonScroll<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>   gui2.AllowMiddleMouseButtonScroll<span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>
<span class="number"> 125</span>   gui <span class="k3">&lt;</span><span class="k3">&lt;</span> gui2<span class="k2">;</span>
<span class="number"> 126</span>
<span class="number"> 127</span>   <span class="c">/// We can have transparent backgrounds in our gui</span>
<span class="number"> 128</span>   gui.SetBackgroundColor<span class="k2">(</span>EagleColor<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>   gui2.SetBackgroundColor<span class="k2">(</span>EagleColor<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>   
<span class="number"> 131</span>   <span class="c">/// A RelativeLayout allows us to keep relative positions and sizes of our widgets</span>
<span class="number"> 132</span>   RelativeLayout rl1<span class="k2">(</span><span class="s">"RLAYOUT1"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>   rl1.Resize<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>   rl1.SetLayoutRectangle<span class="k2">(</span><span class="n">0</span> , LayoutRectangle<span class="k2">(</span><span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">6</span> , <span class="n">0</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>   rl1.SetLayoutRectangle<span class="k2">(</span><span class="n">1</span> , LayoutRectangle<span class="k2">(</span><span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">6</span> , <span class="n">0</span>.<span class="n">6</span> , <span class="n">0</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>   rl1.SetLayoutRectangle<span class="k2">(</span><span class="n">2</span> , LayoutRectangle<span class="k2">(</span><span class="n">0</span>.<span class="n">4</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">6</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>   rl1.SetLayoutRectangle<span class="k2">(</span><span class="n">3</span> , LayoutRectangle<span class="k2">(</span><span class="n">0</span>.<span class="n">1</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">6</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>   rl1.SetLayoutRectangle<span class="k2">(</span><span class="n">4</span> , LayoutRectangle<span class="k2">(</span><span class="n">0</span>.<span class="n">7</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">2</span> , <span class="n">0</span>.<span class="n">6</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>   
<span class="number"> 140</span>   gui2.SetRootLayout<span class="k2">(</span><span class="k3">&amp;</span>rl1<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>   
<span class="number"> 142</span>   TestWidget tw1<span class="k2">(</span><span class="s">"TESTWIDGETH1"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>   TestWidget tw2<span class="k2">(</span><span class="s">"TESTWIDGETH2"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>   TestWidget tw3<span class="k2">(</span><span class="s">"TESTWIDGETV1"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>   TestWidget tw4<span class="k2">(</span><span class="s">"TESTWIDGETV2"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>   TestWidget tw5<span class="k2">(</span><span class="s">"TESTWIDGETV3"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>   
<span class="number"> 148</span>   rl1.PlaceWidget<span class="k2">(</span><span class="k3">&amp;</span>tw1 , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span>   rl1.PlaceWidget<span class="k2">(</span><span class="k3">&amp;</span>tw2 , <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>   rl1.PlaceWidget<span class="k2">(</span><span class="k3">&amp;</span>tw3 , <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>   rl1.PlaceWidget<span class="k2">(</span><span class="k3">&amp;</span>tw4 , <span class="n">3</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>   rl1.PlaceWidget<span class="k2">(</span><span class="k3">&amp;</span>tw5 , <span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>   
<span class="number"> 154</span>   tw1.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span>tw1.OuterArea<span class="k2">(</span><span class="k2">)</span> , <span class="n">3</span>,<span class="n">5</span>,<span class="n">7</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>   tw2.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span>tw2.OuterArea<span class="k2">(</span><span class="k2">)</span> , <span class="n">7</span>,<span class="n">5</span>,<span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>   tw3.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span>tw3.OuterArea<span class="k2">(</span><span class="k2">)</span> , <span class="n">2</span>,<span class="n">4</span>,<span class="n">6</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>   tw4.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span>tw4.OuterArea<span class="k2">(</span><span class="k2">)</span> , <span class="n">6</span>,<span class="n">4</span>,<span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>   tw5.SetWidgetArea<span class="k2">(</span>WIDGETAREA<span class="k2">(</span>tw5.OuterArea<span class="k2">(</span><span class="k2">)</span> , <span class="n">5</span>,<span class="n">5</span>,<span class="n">5</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>   
<span class="number"> 160</span>   EagleLog<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"******* SETUP COMPLETE ********"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 161</span>         
<span class="number"> 162</span>   <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 163</span>   <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 164</span>   
<span class="number"> 165</span>   <span class="k1">int</span> mx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 166</span>   <span class="k1">int</span> my <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 167</span>   
<span class="number"> 168</span>   sys-&gt;GetSystemTimer<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Start<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>   
<span class="number"> 170</span>   <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 171</span>      <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 172</span>         win-&gt;DrawToBackBuffer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>         win-&gt;Clear<span class="k2">(</span>EagleColor<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>         win-&gt;DrawStretched<span class="k2">(</span>bg , Rectangle<span class="k2">(</span><span class="n">0</span> , <span class="n">0</span> , sw , sh<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 175</span>         gui.Display<span class="k2">(</span>win , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 176</span><span class="c">///         WidgetBase* hw = gui.GetWidgetAt(mx,my);</span>
<span class="number"> 177</span>         WidgetBase<span class="k3">*</span> hw <span class="k3">=</span> wmover.GetMoveWidget<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 178</span>         std::string name <span class="k3">=</span> <span class="k2">(</span>hw?hw-&gt;FullName<span class="k2">(</span><span class="k2">)</span><span class="k2">:</span><span class="s">"NULL"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</span>         win-&gt;DrawTextString<span class="k2">(</span>win-&gt;DefaultFont<span class="k2">(</span><span class="k2">)</span> , StringPrintF<span class="k2">(</span><span class="s">"Widget at %d,%d is [%s]"</span> , mx , my , name.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> , sw <span class="k3">-</span> <span class="n">10</span> , sh <span class="k3">-</span> win-&gt;DefaultFont<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Height<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">5</span> , EagleColor<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> , HALIGN_RIGHT , VALIGN_TOP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>         win-&gt;FlipDisplay<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 181</span>         redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 182</span>      <span class="k2">}</span>
<span class="number"> 183</span>      <span class="k1">do</span> <span class="k2">{</span>
<span class="number"> 184</span>         EagleEvent ev <span class="k3">=</span> sys-&gt;WaitForSystemEventAndUpdateState<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>         <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">!</span><span class="k3">=</span> EAGLE_EVENT_TIMER <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.type <span class="k3">!</span><span class="k3">=</span> EAGLE_EVENT_MOUSE_AXES<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 186</span>            <span class="c">/// Log non timer and non mouse axes events</span>
<span class="number"> 187</span>            EagleInfo<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Event "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> EagleEventName<span class="k2">(</span>ev.type<span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" received in main."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 188</span>         <span class="k2">}</span>
<span class="number"> 189</span>         
<span class="number"> 190</span>         <span class="c">/// Event handling</span>
<span class="number"> 191</span>         <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> EAGLE_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 192</span>            quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 193</span>         <span class="k2">}</span>
<span class="number"> 194</span>         <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> EAGLE_EVENT_KEY_DOWN <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> EAGLE_KEY_ESCAPE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 195</span>            quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 196</span>         <span class="k2">}</span>
<span class="number"> 197</span>         <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> EAGLE_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 198</span>            gui.Update<span class="k2">(</span>ev.timer.eagle_timer_source-&gt;SPT<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>            redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 200</span>         <span class="k2">}</span>
<span class="number"> 201</span>         <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 202</span>            gui.HandleEvent<span class="k2">(</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>         <span class="k2">}</span>
<span class="number"> 204</span>         
<span class="number"> 205</span>         <span class="c">/// Check our gui for messages</span>
<span class="number"> 206</span>         <span class="k1">while</span> <span class="k2">(</span>gui.HasMessages<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 207</span>            WidgetMsg wmsg <span class="k3">=</span> gui.TakeNextMessage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>            EagleLog<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Widget Message ["</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> wmsg <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"]"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 209</span>         <span class="k2">}</span>
<span class="number"> 210</span>         <span class="k1">if</span> <span class="k2">(</span>gui.Flags<span class="k2">(</span><span class="k2">)</span>.FlagOn<span class="k2">(</span>NEEDS_REDRAW<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 211</span>            redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 212</span>         <span class="k2">}</span>
<span class="number"> 213</span>         
<span class="number"> 214</span>      <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>sys-&gt;UpToDate<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</span>   <span class="k2">}</span>
<span class="number"> 216</span>   
<span class="number"> 217</span><span class="c">///   sys-&gt;GetSystemQueue()-&gt;WaitForEvent(EAGLE_EVENT_KEY_DOWN , 0);</span>
<span class="number"> 218</span>   
<span class="number"> 219</span>   EagleLog<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Exited main loop."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 220</span>   
<span class="number"> 221</span><span class="c">///   sys-&gt;Shutdown();</span>
<span class="number"> 222</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_52.html" target="_blank">atexit</a><span class="k2">(</span>Eagle::EagleLibrary::ShutdownEagle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>
<span class="number"> 224</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 225</span><span class="k2">}</span>
</div></div><p>

Widgets follow the CSS Box model, with a margin, border, and padding surrounding the inner client area. In the left picture, the margin is blue, the border is green, and the padding is red, so you can see it more easily. The right picture looks much better without the coloring though.</p><p>Support for attributes is built in.</p><p>Eventually I think styling with CSS and scripting with XML will be implemented. That seems to be the direction I&#39;m heading anyway.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 22 Mar 2019 04:39:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="https://www.allegro.cc/forums/thread/617783/1041691#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
...scripting with XML...
</p></div></div><p>

<span class="remote-thumbnail"><span class="json">{"name":"tenor.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/3\/6392f3acb985a4c0d29c37ba48ad2eed.gif","w":418,"h":234,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/3\/6392f3acb985a4c0d29c37ba48ad2eed"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/6/3/6392f3acb985a4c0d29c37ba48ad2eed-240.jpg" alt="tenor.gif" width="240" height="134" /></span></p><p>I assume you mean layout/content in XML. Scripting in XML, like as in programming in XML, would just be silly. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Sat, 23 Mar 2019 00:50:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for the correction but don&#39;t you have any thing to say about the rest of it?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 23 Mar 2019 02:24:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>All that I can really say is that you&#39;ve done a lot of work on this, and that&#39;s great. You should keep it up. I have no immediate need for it, and I think that the learning curve would be quite steep for somebody that did. Also, I think that like most non-trivial software it has some design flaws, but that&#39;s to be expected. You should be proud of it and you should continue working on it. I think that a video demo would have been much more informative than still screenshots. My intention is not at all to diminish the work that you have done, and that is why my previous post was so narrow in its scope. I don&#39;t have a lot more to say on the rest of it.</p><p>The only other thing that I can add is that this sort of redundancy drives me crazy:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p><span class="source-code"><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bg <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bg <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></span></p></div></div><p>

If <span class="source-code"><span class="k3">!</span>bg</span> failed then <span class="source-code">bg</span> is implied. When I see this sort of construct I am left to wonder if the author made a mistake because they&#39;re repeating themselves, and it&#39;s pointless. Of course, we all make mistakes. It&#39;s just a pet-peeve because colleagues do this regularly. This can be simplified to:</p><p><span class="source-code"><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bg <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></span></p><p>Or, depending on style, though it doesn&#39;t aid in keystrokes and generally I don&#39;t find that it aides in readability either, you could transform it into this...</p><p><span class="source-code"><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>bg <span class="k3">&amp;</span><span class="k3">&amp;</span> bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></span></p><p>Perhaps in this case it helps, but it&#39;s highly subjective. I appreciate languages that have an <span class="source-code">unless</span> statement, or at least a more visual/readable <span class="source-code"><span class="k1">not</span></span> keyword so the operation isn&#39;t as easy to overlook. Particularly as our eyes age.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 25 Mar 2019 11:30:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="https://www.allegro.cc/forums/thread/617783/1041769#target">bamccaig</a> said:</div><div class="quote"><p>
The only other thing that I can add is that this sort of redundancy drives me crazy:
</p><div class="quote_container"><div class="title">Edgar Reynaldo said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bg <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bg <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
</pre></div></div><p>
</p></div></div><p>
</p></div></div><p>
Ah, yes, you&#39;re correct.</p><p>I like your second version the best :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>bg <span class="k3">&amp;</span><span class="k3">&amp;</span> bg-&gt;Valid<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
</pre></div></div><p>

</p><div class="quote_container"><div class="title"><a href="https://www.allegro.cc/forums/thread/617783/1041769#target">bamccaig</a> said:</div><div class="quote"><p>
All that I can really say is that you&#39;ve done a lot of work on this, and that&#39;s great. You should keep it up. I have no immediate need for it, and I think that the learning curve would be quite steep for somebody that did. Also, I think that like most non-trivial software it has some design flaws, but that&#39;s to be expected. You should be proud of it and you should continue working on it. I think that a video demo would have been much more informative than still screenshots. My intention is not at all to diminish the work that you have done, and that is why my previous post was so narrow in its scope. I don&#39;t have a lot more to say on the rest of it.
</p></div></div><p>
Steep learning curve? Perhaps, but there will be full documentation by the time I release it, as well as small tutorials, and a widget creation guide.</p><p>Design flaws? What would you change? Or what would you support that I&#39;m not?</p><p>I will take your advice about a video demo. I&#39;ve never recorded video on my laptop before, so that will be an adventure. It&#39;s much easier to demonstrate it if you run the example program though, which is why I linked to it.</p><p><b>EDIT</b><br /><a href="https://www.allegro.cc/files/attachment/611963">I attached an .mp4 video of the demo running</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 25 Mar 2019 19:34:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="https://www.allegro.cc/forums/thread/617783/1041773#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
Design flaws? What would you change? Or what would you support that I&#39;m not?
</p></div></div><p>

I can&#39;t say there necessarily are any. I certainly am not familiar enough with it to know them. I think that the flaws will reveal themselves when you try to develop a separate backend for it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 25 Mar 2019 22:03:05 +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/617783/1041774#target">bamccaig</a> said:</div><div class="quote"><p>
I can&#39;t say there necessarily are any. I certainly am not familiar enough with it to know them. I think that the flaws will reveal themselves when you try to develop a separate backend for it. 
</p></div></div><p>
Quite right, again. I originally developed Eagle for Allegro 4, and then decided I no longer wanted to be tied down to a single library, as well as reach a larger audience. So I made the abstraction layer, and implemented a driver for Allegro 5. Most of the system and everything is just modeled around Allegro 5 anyway, so when I write the SDL2 driver, I will probably need to refactor everything once more. But for that I would need someone versed in SDL, as I have zero experience with it. I could help them write the driver, but wouldn&#39;t know how specific code would have to be implemented.</p><p>Anyway, it&#39;s growing, and evolving. I&#39;m in a feature freeze right now, for the most part unless there&#39;s something really important I&#39;m missing. So that means writing docs and test programs and debugging.</p><p>Thank you bambams, for the helpful insight. Appreciated. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p><img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 26 Mar 2019 07:14:50 +0000</pubDate>
	</item>
</rss>
