<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://wikidot.org/rss-namespace">

	<channel>
		<title>Drawing transparent box [SDL]</title>
		<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl</link>
		<description>Posts in the discussion thread &quot;Drawing transparent box [SDL]&quot;</description>
				<copyright></copyright>
		<lastBuildDate></lastBuildDate>
		
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16974</guid>
				<title>Re: Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16974</link>
				<description></description>
				<pubDate>Sat, 07 Nov 2009 00:54:05 +0000</pubDate>
				<wikidot:authorName>kake_fisk</wikidot:authorName>				<wikidot:authorUserId>33</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Thank you, the book together with a topic from gamedev and the doc wiki helped me solve it. :D<br /> I had to create an surface using the function SDL_CreateRGBSurface(). And I also had to use the source surfaces format, instead of the destinations'.</p> <p>This is my code, in case somebody else have the same problem:</p> <div class="code"> <div class="hl-main"> <pre> <span class="hl-types">static</span><span class="hl-code"> </span><span class="hl-identifier">SDL_Surface</span><span class="hl-code"> *</span><span class="hl-identifier">bac_fade</span><span class="hl-code"> = </span><span class="hl-identifier">SDL_CreateRGBSurface</span><span class="hl-brackets">(</span><span class="hl-identifier">SDL_SWSURFACE</span><span class="hl-code">, </span><span class="hl-number">640</span><span class="hl-code">, </span><span class="hl-number">480</span><span class="hl-code">, </span><span class="hl-number">32</span><span class="hl-code">, </span><span class="hl-number">0xFF000000</span><span class="hl-code">, </span><span class="hl-number">0x00FF0000</span><span class="hl-code">, </span><span class="hl-number">0x0000FF00</span><span class="hl-code">, </span><span class="hl-number">0x000000FF</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">SDL_FillRect</span><span class="hl-brackets">(</span><span class="hl-identifier">bac_fade</span><span class="hl-code">, &amp;</span><span class="hl-identifier">fade</span><span class="hl-code">, </span><span class="hl-identifier">SDL_MapRGBA</span><span class="hl-brackets">(</span><span class="hl-identifier">bac_fade</span><span class="hl-code">-&gt;</span><span class="hl-identifier">format</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-code">, </span><span class="hl-number">200</span><span class="hl-brackets">))</span><span class="hl-code">; </span><span class="hl-identifier">SDL_SetAlpha</span><span class="hl-brackets">(</span><span class="hl-identifier">bac_fade</span><span class="hl-code">, </span><span class="hl-identifier">SDL_SRCALPHA</span><span class="hl-code">, </span><span class="hl-number">200</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">apply_surface</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-identifier">bac_fade</span><span class="hl-code">,</span><span class="hl-identifier">screen</span><span class="hl-brackets">)</span><span class="hl-code">;</span> </pre></div> </div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16969</guid>
				<title>Re: Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16969</link>
				<description></description>
				<pubDate>Fri, 06 Nov 2009 18:43:49 +0000</pubDate>
				<wikidot:authorName>u9</wikidot:authorName>				<wikidot:authorUserId>31</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Another suggestion: Have you tried setting the alpha color as well:</p> <div class="code"> <pre> <code>SDL_FillRect(bac_fade, &amp;fade, SDL_MapRGBA(screen-&gt;format, 0x0, 0x0, 0x0, 128));</code> </pre></div> <p>?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16968</guid>
				<title>Re: Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16968</link>
				<description></description>
				<pubDate>Fri, 06 Nov 2009 18:36:43 +0000</pubDate>
				<wikidot:authorName>u9</wikidot:authorName>				<wikidot:authorUserId>31</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I found this book on google. It looks interesting and might help you drawing translucent rectangles:</p> <p><a href="http://forum.oddthought.com/Audio/Rapthread/Game.Design.eBooks.Pack/Programming/Focus%20on%20SDL.pdf">http://forum.oddthought.com/Audio/Rapthread/Game.Design.eBooks.Pack/Programming/Focus%20on%20SDL.pdf</a></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16946</guid>
				<title>Re: Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16946</link>
				<description></description>
				<pubDate>Thu, 05 Nov 2009 17:29:08 +0000</pubDate>
				<wikidot:authorName>kake_fisk</wikidot:authorName>				<wikidot:authorUserId>33</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I made it static, the same thing is still happening.<br /> But I tried commenting out line for line to see what is causing the crash, and it was 2 lines that did not work.</p> <blockquote> <p>SDL_FillRect(bac_fade, &amp;fade, SDL_MapRGB(screen-&gt;format, 0x0, 0x0, 0x0));<br /> SDL_SetAlpha(bac_fade, SDL_SRCALPHA, 200);</p> </blockquote> <p>But my question is actually, how can I draw a transparent black box on the screen? I just showed what I had already tried.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16935</guid>
				<title>Re: Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16935</link>
				<description></description>
				<pubDate>Thu, 05 Nov 2009 07:08:12 +0000</pubDate>
				<wikidot:authorName>u9</wikidot:authorName>				<wikidot:authorUserId>31</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <div style="font-family: courier new;"> <p>void draw_messagebox(int x, int y, int width, int height, string msg)<br /> {<br /> SDL_Rect background; background.x = x; background.y = y; background.w = width; background.h = height;<br /> SDL_Rect fade; fade.x = 0; fade.y = 0; fade.w = MENU_WIDTH; fade.h = MENU_WIDTH;</p> <p>apply_surface(0, 0, <strong>bac_menu</strong>, screen);<br /> SDL_FillRect(<strong>bac_fade</strong>, &amp;fade, SDL_MapRGB(screen-&gt;format, 0x0, 0x0, 0x0));<br /> SDL_SetAlpha(bac_fade, SDL_SRCALPHA, 200);</p> <p>apply_surface(0, 0, bac_fade, screen);<br /> SDL_FillRect(screen, &amp;background, SDL_MapRGB(screen-&gt;format, 0xFF, 0, 0));<br /> <em>SDL_Surface *msg_message = TTF_RenderText_Blended(fnt_score, msg.c_str(), BLACK);</em><br /> apply_surface(x+16, y+16, msg_message, screen);<br /> }<br /> }}</p> </div> <p>Hi Kake,</p> <p>You should know, <tt>TTF_RenderText_Blended</tt> creates a new surface every time, which you don't free. This will have you running out of memory quickly. I can assure you the program does not return 3 from here. Either it crashes horribly or it doesn't. What is your question actually? Do you want to know what makes your progrram crash? Try removing everything inside the function and then activate one line at a time.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://cpp.wikicomplete.info/forum/t-4537#post-16924</guid>
				<title>Drawing transparent box [SDL]</title>
				<link>http://cpp.wikicomplete.info/forum/t-4537/drawing-transparent-box-sdl#post-16924</link>
				<description></description>
				<pubDate>Wed, 04 Nov 2009 15:13:37 +0000</pubDate>
				<wikidot:authorName>kake_fisk</wikidot:authorName>				<wikidot:authorUserId>33</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I want to draw a black, but transparent box on the whole game screen.</p> <div class="code"> <div class="hl-main"> <pre> <span class="hl-types">void</span><span class="hl-code"> </span><span class="hl-identifier">draw_messagebox</span><span class="hl-brackets">(</span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">x</span><span class="hl-code">, </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">y</span><span class="hl-code">, </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">width</span><span class="hl-code">, </span><span class="hl-types">int</span><span class="hl-code"> </span><span class="hl-identifier">height</span><span class="hl-code">, </span><span class="hl-identifier">string</span><span class="hl-code"> </span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code"> </span><span class="hl-identifier">SDL_Rect</span><span class="hl-code"> </span><span class="hl-identifier">background</span><span class="hl-code">; </span><span class="hl-identifier">background</span><span class="hl-code">.</span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-identifier">x</span><span class="hl-code">; </span><span class="hl-identifier">background</span><span class="hl-code">.</span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-identifier">y</span><span class="hl-code">; </span><span class="hl-identifier">background</span><span class="hl-code">.</span><span class="hl-identifier">w</span><span class="hl-code"> = </span><span class="hl-identifier">width</span><span class="hl-code">; </span><span class="hl-identifier">background</span><span class="hl-code">.</span><span class="hl-identifier">h</span><span class="hl-code"> = </span><span class="hl-identifier">height</span><span class="hl-code">; </span><span class="hl-identifier">SDL_Rect</span><span class="hl-code"> </span><span class="hl-identifier">fade</span><span class="hl-code">; </span><span class="hl-identifier">fade</span><span class="hl-code">.</span><span class="hl-identifier">x</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">fade</span><span class="hl-code">.</span><span class="hl-identifier">y</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">fade</span><span class="hl-code">.</span><span class="hl-identifier">w</span><span class="hl-code"> = </span><span class="hl-identifier">MENU_WIDTH</span><span class="hl-code">; </span><span class="hl-identifier">fade</span><span class="hl-code">.</span><span class="hl-identifier">h</span><span class="hl-code"> = </span><span class="hl-identifier">MENU_WIDTH</span><span class="hl-code">; </span><span class="hl-identifier">apply_surface</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-identifier">bac_menu</span><span class="hl-code">,</span><span class="hl-identifier">screen</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">SDL_FillRect</span><span class="hl-brackets">(</span><span class="hl-identifier">bac_fade</span><span class="hl-code">, &amp;</span><span class="hl-identifier">fade</span><span class="hl-code">, </span><span class="hl-identifier">SDL_MapRGB</span><span class="hl-brackets">(</span><span class="hl-identifier">screen</span><span class="hl-code">-&gt;</span><span class="hl-identifier">format</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-code">, </span><span class="hl-number">0x0</span><span class="hl-brackets">))</span><span class="hl-code">; </span><span class="hl-identifier">SDL_SetAlpha</span><span class="hl-brackets">(</span><span class="hl-identifier">bac_fade</span><span class="hl-code">, </span><span class="hl-identifier">SDL_SRCALPHA</span><span class="hl-code">, </span><span class="hl-number">200</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">apply_surface</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-identifier">bac_fade</span><span class="hl-code">,</span><span class="hl-identifier">screen</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">SDL_FillRect</span><span class="hl-brackets">(</span><span class="hl-identifier">screen</span><span class="hl-code">, &amp;</span><span class="hl-identifier">background</span><span class="hl-code">, </span><span class="hl-identifier">SDL_MapRGB</span><span class="hl-brackets">(</span><span class="hl-identifier">screen</span><span class="hl-code">-&gt;</span><span class="hl-identifier">format</span><span class="hl-code">, </span><span class="hl-number">0xFF</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-brackets">))</span><span class="hl-code">; </span><span class="hl-identifier">SDL_Surface</span><span class="hl-code"> *</span><span class="hl-identifier">msg_message</span><span class="hl-code"> = </span><span class="hl-identifier">TTF_RenderText_Blended</span><span class="hl-brackets">(</span><span class="hl-identifier">fnt_score</span><span class="hl-code">, </span><span class="hl-identifier">msg</span><span class="hl-code">.</span><span class="hl-identifier">c_str</span><span class="hl-brackets">()</span><span class="hl-code">, </span><span class="hl-identifier">BLACK</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-identifier">apply_surface</span><span class="hl-brackets">(</span><span class="hl-identifier">x</span><span class="hl-code">+</span><span class="hl-number">16</span><span class="hl-code">,</span><span class="hl-identifier">y</span><span class="hl-code">+</span><span class="hl-number">16</span><span class="hl-code">,</span><span class="hl-identifier">msg_message</span><span class="hl-code">,</span><span class="hl-identifier">screen</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-brackets">}</span> </pre></div> </div> <p>But the program returns 3, that is the error code that says TTF_Init() failed.<br /> Maybe something doesn't work together or something, I don't know.<br /> But it's kinda odd because TTF_Init() is called right after the window is created, but the error doesn't occur before the draw_messagebox() function is called.</p> <p>And don't care about the bad way I am doing this, I know I don't need to update the message all the time and such, but I'll fix that later. ;)</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>