<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Changing from pure allegro to OpenLayer in one program</title>
		<link>http://www.allegro.cc/forums/view/588359</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 05 Nov 2006 04:14:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want to use file_select_ex() (for selecting a file) at the very beggining of my program, then use OpenLayer for the main program, and call file_select_ex() again at the end. Before using file_select_ex() I have to call allegro_init(), install_keyboard() and set_gfx_mode(), but if I do that OpenLayer doesn&#39;t work. Is there a way to do this? I basically just want an easy way to have a simple file browser at the beginning and end of my program.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sat, 04 Nov 2006 13:19:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
but if I do that OpenLayer doesn&#39;t work
</p></div></div><p>

How, did SetupProgram / SetupScreen failed or something else? Anyway you could try adding <a href="http://www.allegro.cc/manual/api/using-allegro/allegro_exit">allegro_exit</a> before OpenLayer initialization.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Sat, 04 Nov 2006 13:35:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Um OpenLayer initializes allegro for you. Why don&#39;t you just init openlayer and use your allegro commands like normal?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (juvinious)</author>
		<pubDate>Sat, 04 Nov 2006 14:08:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Setting up OpenLayer (which sets up allegro too) first is probably what you want to do.</p><p>It&#39;s possible (although unlikely) that file_select_ex draws to the normal Allegro &#39;screen&#39; and OpenLayer only sets up a basic OpenGL screen. You&#39;ll probably need to do a few AllegroGL calls if OpenLayer doesn&#39;t do them to let you use the &#39;screen&#39; in this case.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 04 Nov 2006 16:14:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Hrvoje Ban said:</div><div class="quote"><p>
How, did SetupProgram / SetupScreen failed or something else? Anyway you could try adding allegro_exit before OpenLayer initialization.
</p></div></div><p>

It crashes at Setup::SetupScreen(). Adding allegro_exit() before OpenLayer initialization worked <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Now I just need a way to &quot;exit&quot; OpenLayer before the end of the program...</p><div class="quote_container"><div class="title">juvinious said:</div><div class="quote"><p>
Um OpenLayer initializes allegro for you. Why don&#39;t you just init openlayer and use your allegro commands like normal?
</p></div></div><p>
The allegro file window doesn&#39;t appear.</p><div class="quote_container"><div class="title">Richard Phipps said:</div><div class="quote"><p>
It&#39;s possible (although unlikely) that file_select_ex draws to the normal Allegro &#39;screen&#39; and OpenLayer only sets up a basic OpenGL screen.
</p></div></div><p>
This is probably what happens...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sat, 04 Nov 2006 20:17:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
If you just do the normal OpenLayer setup and don&#39;t initialise Allegro or an allegro screen, what happens?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 04 Nov 2006 20:31:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Like I said, the file window doesn&#39;t appear. I just get a black screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sat, 04 Nov 2006 20:34:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Like I said, the file window doesn&#39;t appear. I just get a black screen.
</p></div></div><p>

That&#39;s normal, OpenLayer uses an OpenGL surface, not an allegro one, unless you do some other steps to get the file selection to show on an opengl surface you will never see it.  OpenGL needs to flip the buffer anyway if you want to see anything.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Sat, 04 Nov 2006 20:56:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, is there a way to &quot;shut down&quot; OpenLayer then, so I can use just allegro at the end of the program?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sat, 04 Nov 2006 22:25:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I believe AllegroGL (which OpenLayer uses) has methods that allow you to use allegro GUIs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 04 Nov 2006 22:33:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try this:</p><div class="source-code snippet"><div class="inner"><pre>ol::Setup::SetupProgram<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_<span class="k3">*</span>, ...<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/file_select_ex" target="_blank"><span class="a">file_select_ex</span></a><span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <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="c">// Remove graphic mode</span>
ol::Setup::SetupScreen<span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>           

<span class="c">/* ... */</span>

<a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_<span class="k3">*</span>, ...<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/file_select_ex" target="_blank"><span class="a">file_select_ex</span></a><span class="k2">(</span>...<span class="k2">)</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Sat, 04 Nov 2006 22:33:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Hrvoje Ban said:</div><div class="quote"><p>
 (...)
</p></div></div><p>
It crashes at the third line: file_select_ex(...);</p><p>EDIT:
</p><div class="quote_container"><div class="title">Thomas Fjellstrom said:</div><div class="quote"><p>
I believe AllegroGL (which OpenLayer uses) has methods that allow you to use allegro GUIs.
</p></div></div><p>

It has some methods that correspond to allegro GUI functions, but file_select_ex() isn&#39;t one of them. I also tried remove_allegro_gl(), allegro_gl_set_allegro_mode() and allegro_gl_unset_allegro_mode without success.</p><p>Isn&#39;t there a function that just &quot;undoes&quot; OpenLayer initializations? That would be enough.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sat, 04 Nov 2006 22:51:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The allegro file window doesn&#39;t appear.
</p></div></div><p>
Ah I didn&#39;t know you were using gui functions. :|<br />afaik as tomasu says, agl can use allegro gui functions.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (juvinious)</author>
		<pubDate>Sat, 04 Nov 2006 23:17:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Like I said, it supports some GUI functions but not file_select_ex()
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sun, 05 Nov 2006 02:05:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I made small example that works:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;OpenLayer.hpp&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>ol::Setup::SetupProgram<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">6</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>   remove_allegro_gl<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>   <span class="k1">char</span> buffer<span class="k2">[</span><span class="n">1024</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">"C:\\"</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   <a href="http://www.allegro.cc/manual/file_select_ex" target="_blank"><span class="a">file_select_ex</span></a><span class="k2">(</span><span class="s">"Hello!"</span>, buffer, NULL, <span class="n">1024</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>   <span class="k1">if</span> <span class="k2">(</span>install_allegro_gl<span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>ol::Setup::SetupScreen<span class="k2">(</span><span class="n">640</span>, <span class="n">480</span>, <span class="k1">false</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">16</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>   ol::Canvas::Fill<span class="k2">(</span>ol::Rgba<span class="k2">(</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>   ol::Canvas::Refresh<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>   <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>   remove_allegro_gl<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>   <a href="http://www.allegro.cc/manual/file_select_ex" target="_blank"><span class="a">file_select_ex</span></a><span class="k2">(</span><span class="s">"Hello!"</span>, buffer, NULL, <span class="n">1024</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr><tr><td class="number">30</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

You need to remove AllegroGL so set_gfx_mode can succeed and re-install it again before setting up OpenLayer screen. Hackish, but it&#39;s best I could come up unless AllegroGL has some way to render Allegro GUI.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Sun, 05 Nov 2006 03:09:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you! That did the trick <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vasco Freitas)</author>
		<pubDate>Sun, 05 Nov 2006 04:14:54 +0000</pubDate>
	</item>
</rss>
