<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>ALLEGRO_FULLSCREEN on OSX</title>
		<link>http://www.allegro.cc/forums/view/616951</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 02 Jul 2017 02:04:41 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi,</p><p>I&#39;ve been unable to create a fullscreen display using ALLEGRO_FULLSCREEN on OSX.  I&#39;ve read a post found somewhere through google that confirmed this was an open issue a couple of years ago.  I read the change log for 5.2 (April 2016?) that listed some fixes to full screen under the Mac OSX section.  However, al_create_display is returning a NULL pointer for me.  I am currently using 5.2.0.1 and the same code works on Windows.  Sorry if this is the wrong place to post this or if it&#39;s a duplicate post - I searched the forums for &quot;FULLSCREEN&quot; and didn&#39;t see anything that matched my issue.</p><p>Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (waden87)</author>
		<pubDate>Fri, 23 Jun 2017 21:11:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you tried &quot;ALLEGRO_FULLSCREEN_WINDOW&quot; perhaps?  Which is like a Fullscreen, only it creates a window the size of your display, with no border.  I prefer it over fullscreen myself as you can more quickly switch between that and your desktop or whatever.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Sat, 24 Jun 2017 11:11:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This looks like it might work for me.  Thanks for the suggestion!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (waden87)</author>
		<pubDate>Sat, 24 Jun 2017 21:14:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Awesome!  Let us know how that works out.</p><p>Out of curiosity, what are you working on?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Tue, 27 Jun 2017 04:36:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a game based on Allegro.  Your typical endless side project <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />.  An odd thing occurs when I use the ALLEGRO_FULLSCREEN_WINDOW option on OSX.  I&#39;m drawing on a bitmap that is 480 x 270 which is then scaled up to an Allegro display that is 1920 x 1080.  It looks like some additional space is added to the bottom of the display which flickers between black and white.  I have some code that displays the mouse position and it is able to go beyond what I specified for the vertical size of the display. I&#39;ll try to post some pictures later of the problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (waden87)</author>
		<pubDate>Wed, 28 Jun 2017 02:06:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s odd.  I would only expect such behavior if the screen bitmap had a different aspect ratio than the screen.  Are you able to post any code you use for transforming (&quot;scaling&quot;), and does it more or less match <a href="https://wiki.allegro.cc/index.php?title=Achieving_Resolution_Independence">this?</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gideon Weems)</author>
		<pubDate>Thu, 29 Jun 2017 20:58:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m actually scaling up from 480x270 to 960x540 on my mac that has a display size of 1440x900.  I guess I need to create an allegro display equal to my physical display and just center the main bitmap on the allegro display.</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>   <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a> <span class="k2">(</span>draw_buffer<span class="k2">)</span><span class="k2">;</span> <span class="c">//draw buffer is 480x270</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="c">/* draw some primitives and bitmaps */</span>
<span class="number">  4</span>
<span class="number">  5</span>
<span class="number">  6</span>   <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a> <span class="k2">(</span> main_display <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span><span class="c">//display is 960 x 540</span>
<span class="number">  7</span>   
<span class="number">  8</span><span class="p">#if 0</span>
<span class="number">  9</span>   <a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a> <span class="k2">(</span> draw_buffer,
<span class="number"> 10</span>                           <span class="n">0</span>,
<span class="number"> 11</span>                           <span class="n">0</span>,
<span class="number"> 12</span>                           SCREEN_WIDTH, <span class="c">//480</span>
<span class="number"> 13</span>                           SCREEN_HEIGHT,<span class="c">//270</span>
<span class="number"> 14</span>                           <span class="n">0</span>,
<span class="number"> 15</span>                           <span class="n">0</span>,
<span class="number"> 16</span>                           MAIN_DISPLAY_WIDTH,<span class="c">//960</span>
<span class="number"> 17</span>                           MAIN_DISPLAY_HEIGHT,<span class="c">//540</span>
<span class="number"> 18</span>                           <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="p">#else</span>
<span class="number"> 20</span><span class="c">// calculate scaling factor</span>
<span class="number"> 21</span>   sx <span class="k3">=</span> MAIN_DISPLAY_WIDTH <span class="k3">/</span> SCREEN_WIDTH<span class="k2">;</span>
<span class="number"> 22</span>   sy <span class="k3">=</span> MAIN_DISPLAY_HEIGHT <span class="k3">/</span> SCREEN_HEIGHT<span class="k2">;</span>
<span class="number"> 23</span>   scale <span class="k3">=</span> G_MIN<span class="k2">(</span>sx, sy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>   
<span class="number"> 25</span>   <span class="c">// calculate how much the buffer should be scaled</span>
<span class="number"> 26</span>   scaleW <span class="k3">=</span> SCREEN_WIDTH <span class="k3">*</span> scale<span class="k2">;</span>
<span class="number"> 27</span>   scaleH <span class="k3">=</span> SCREEN_HEIGHT <span class="k3">*</span> scale<span class="k2">;</span>
<span class="number"> 28</span>   scaleX <span class="k3">=</span> <span class="k2">(</span>MAIN_DISPLAY_WIDTH <span class="k3">-</span> scaleW<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 29</span>   scaleY <span class="k3">=</span> <span class="k2">(</span>MAIN_DISPLAY_HEIGHT <span class="k3">-</span> scaleH<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span>   <a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a><span class="k2">(</span>draw_buffer,
<span class="number"> 32</span>                         <span class="n">0</span>,
<span class="number"> 33</span>                         <span class="n">0</span>,
<span class="number"> 34</span>                         SCREEN_WIDTH,<span class="c">//480</span>
<span class="number"> 35</span>                         SCREEN_HEIGHT,<span class="c">//270</span>
<span class="number"> 36</span>                         scaleX, <span class="c">//0</span>
<span class="number"> 37</span>                         scaleY, <span class="c">//0</span>
<span class="number"> 38</span>                         scaleW,<span class="c">//960</span>
<span class="number"> 39</span>                         scaleH,<span class="c">//540</span>
<span class="number"> 40</span>                         <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span><span class="p">#endif</span>
<span class="number"> 42</span>   <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a> <span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>


The key thing I was missing earlier was that I was not matching the allegro display size with my physical screen size.  With the code below I can center the final bitmap in the display with a letterbox effect.</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>   num_full_displays <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_num_display_modes"><span class="a">al_get_num_display_modes</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  2</span>   main_display_return  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_mode"><span class="a">al_get_display_mode</span></a><span class="k2">(</span><span class="n">0</span>, <span class="k3">&amp;</span>main_display_mode<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>   main_display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a> <span class="k2">(</span> main_display_mode.width,
<span class="number">  4</span>                                      main_display_mode.height <span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  
<span class="number">  6</span>   
<span class="number">  7</span>   display_width <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>main_display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>   display_height <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>main_display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>   
<span class="number"> 10</span>   <span class="c">// calculate scaling factor</span>
<span class="number"> 11</span>   sx <span class="k3">=</span> display_width <span class="k3">/</span> SCREEN_WIDTH<span class="k2">;</span>
<span class="number"> 12</span>   sy <span class="k3">=</span> display_height <span class="k3">/</span> SCREEN_HEIGHT<span class="k2">;</span>
<span class="number"> 13</span>   scale <span class="k3">=</span> G_MIN<span class="k2">(</span>sx, sy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>   
<span class="number"> 15</span>   <span class="c">// calculate how much the buffer should be scaled</span>
<span class="number"> 16</span>   scaleW <span class="k3">=</span> SCREEN_WIDTH <span class="k3">*</span> scale<span class="k2">;</span>
<span class="number"> 17</span>   scaleH <span class="k3">=</span> SCREEN_HEIGHT <span class="k3">*</span> scale<span class="k2">;</span>
<span class="number"> 18</span>   scaleX <span class="k3">=</span> <span class="k2">(</span>display_width <span class="k3">-</span> scaleW<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 19</span>   scaleY <span class="k3">=</span> <span class="k2">(</span>display_height <span class="k3">-</span> scaleH<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (waden87)</author>
		<pubDate>Sat, 01 Jul 2017 10:24:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>8:5 (1440×900) is a somewhat uncommon aspect ratio, but now that you&#39;ve solved the problem, your Allegro app should display perfectly on any screen.  Good job.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gideon Weems)</author>
		<pubDate>Sun, 02 Jul 2017 02:04:41 +0000</pubDate>
	</item>
</rss>
