uodate
[sdlgit/SDL-Site.git] / pages / blog-0019.html-inc
index 4f9d34c..0de3c83 100644 (file)
@@ -1,6 +1,59 @@
 <div class="blog">
 <h1 id="NAME">
-Why I will be sticking to CPAN
+Once in a while .... (set_event_filter)
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i>sculpted in clay,</i></div><div style="text-align: right;"><i>then fired to glass.<br /></i><i><br /></i></div><br />Recently there was really long <a href="http://www.nntp.perl.org/group/perl.sdl.devel/2009/09/msg1424.html">discussion </a>on sdl-devel@perl.org about providing packages for SDL perl rather than focusing on CPAN releases. The gists of the argument was that SDL perl should be making platform specific packages for end users. I agree with this idea but I do have to face the truth. <br /><br />The truth is there are very few developers currently working on SDL Perl. The truth is CPAN provides several tools that which currently drives development for SDL Perl. There are people interested in packaging SDL Perl (<a href="http://rt.cpan.org/Ticket/Display.html?id=49003">kmx</a>, <a href="http://www.nntp.perl.org/group/perl.sdl.devel/2009/09/msg1433.html">jean</a> and Jerome Quelin). The truth is there are other very <a href="http://rt.cpan.org/Ticket/Display.html?id=49084">critical areas</a> we can focus on. <br /><br />If there are people looking to package SDL Perl for their platform please contact us at sdl-devel@perl.org.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-6565605958523853965?l=yapgh.blogspot.com' alt='' /></div></div></div>
\ No newline at end of file
+<div style="text-align: right;"><i> <br />
+Once in a while <br />
+Things just work! <br />
+</i><br />
+</div><br />
+<br />
+So I have been hacking for a while on SDL::Events::set_event_filter. The code below is an example usage. The magic behind this is <a href="http://github.com/kthakore/SDL_perl/blob/1712fe42d62c2a3e382e6bf91366eb2ce9d2f5f4/src/Core/Events.xs">here</a> <br />
+<br />
+<pre><a href="" name="line1"> 1</a> <span style="color: #444444;">#!/usr/bin/perl -w
+<a href="" name="line2"> 2</a> </span><b>use</b> strict;
+<a href="" name="line3"> 3</a> <b>use</b> warnings;
+<a href="" name="line4"> 4</a> <b>use</b> SDL v2.3; <span style="color: #444444;">#Require the redesign branch
+<a href="" name="line5"> 5</a> </span><b>use</b> SDL::Video;
+<a href="" name="line6"> 6</a> <b>use</b> SDL::Event;
+<a href="" name="line7"> 7</a> <b>use</b> SDL::Events;
+<a href="" name="line8"> 8</a> 
+<a href="" name="line9"> 9</a> SDL::init<span style="color: #4444ff;"><b>(</b></span>SDL_INIT_VIDEO<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line10">10</a> <b>my</b> <span style="color: #2040a0;">$display</span> = SDL::Video::set_video_mode<span style="color: #4444ff;"><b>(</b></span>640,480,32, SDL_SWSURFACE <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line11">11</a> <b>my</b>  <span style="color: #2040a0;">$event</span> = SDL::Event-&gt;<b>new</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line12">12</a> 
+<a href="" name="line13">13</a> <span style="color: #444444;">#This filters out all ActiveEvents
+<a href="" name="line14">14</a> </span><b>my</b> <span style="color: #2040a0;">$filter</span> = sub <span style="color: #4444ff;"><b>{</b></span> 
+<a href="" name="line15">15</a>      <b>my</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$e</span>, <span style="color: #2040a0;">$type</span><span style="color: #4444ff;"><b>)</b></span> = <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$_</span><span style="color: #4444ff;"><b>[</b></span>0<span style="color: #4444ff;"><b>]</b></span>, <span style="color: #2040a0;">$_</span><span style="color: #4444ff;"><b>[</b></span>0<span style="color: #4444ff;"><b>]</b></span>-&gt;type<span style="color: #4444ff;"><b>)</b></span>; 
+<a href="" name="line16">16</a>      <b>if</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$type</span> == SDL_ACTIVEEVENT<span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>{</b></span> <b>return</b> 0 <span style="color: #4444ff;"><b>}</b></span> 
+<a href="" name="line17">17</a>      <b>elsif</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$type</span> == SDL_MOUSEBUTTONDOWN &amp;&amp; <span style="color: #2040a0;">$e</span>-&gt;button_button == 1<span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>{</b></span> <b>return</b> 0 <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line18">18</a>      <b>else</b> <span style="color: #4444ff;"><b>{</b></span> <b>return</b> 1; <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line19">19</a>       <span style="color: #4444ff;"><b>}</b></span>;
+<a href="" name="line20">20</a> 
+<a href="" name="line21">21</a> SDL::Events::set_event_filter<span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$filter</span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line22">22</a> 
+<a href="" name="line23">23</a> <b>while</b><span style="color: #4444ff;"><b>(</b></span>1<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line24">24</a> <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line25">25</a> 
+<a href="" name="line26">26</a>   SDL::Events::pump_events<span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line27">27</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span>SDL::Events::poll_event<span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span><span style="color: #4444ff;"><b>)</b></span><span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line28">28</a>   <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line29">29</a> 
+<a href="" name="line30">30</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span>  <span style="color: #2040a0;">$event</span>-&gt;type == SDL_ACTIVEEVENT<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line31">31</a>  <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line32">32</a>  <span style="color: brown;"><b>print</b></span> <span style="color: green;">"Hello Mouse!!!<span style="color: #77dd77;">\n</span>"</span> <b>if</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_gain &amp;&amp; <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_state == SDL_APPMOUSEFOCUS<span style="color: #4444ff;"><b>)</b></span> <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line33">33</a>  <span style="color: brown;"><b>print</b></span> <span style="color: green;">"Bye Mouse!!!<span style="color: #77dd77;">\n</span>"</span> <b>if</b> <span style="color: #4444ff;"><b>(</b></span>!<span style="color: #2040a0;">$event</span>-&gt;active_gain &amp;&amp; <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;active_state == SDL_APPMOUSEFOCUS<span style="color: #4444ff;"><b>)</b></span> <span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line34">34</a>         <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line35">35</a>   <b>if</b><span style="color: #4444ff;"><b>(</b></span> <span style="color: #2040a0;">$event</span>-&gt;type == SDL_MOUSEBUTTONDOWN<span style="color: #4444ff;"><b>)</b></span>
+<a href="" name="line36">36</a>    <span style="color: #4444ff;"><b>{</b></span>
+<a href="" name="line37">37</a>  <b>my</b> <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$x</span>, <span style="color: #2040a0;">$y</span>, <span style="color: #2040a0;">$but</span> <span style="color: #4444ff;"><b>)</b></span> = <span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;button_x, <span style="color: #2040a0;">$event</span>-&gt;button_y, <span style="color: #2040a0;">$event</span>-&gt;button_button<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line38">38</a>  <span style="color: brown;"><b>warn</b></span> <span style="color: green;">"<span style="color: #2040a0;">$but</span> CLICK!!! at <span style="color: #2040a0;">$x</span> and <span style="color: #2040a0;">$y</span> <span style="color: #77dd77;">\n</span>"</span>;
+<a href="" name="line39">39</a>  <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line40">40</a> 
+<a href="" name="line41">41</a>       <b>last</b> <b>if</b><span style="color: #4444ff;"><b>(</b></span><span style="color: #2040a0;">$event</span>-&gt;type == SDL_QUIT<span style="color: #4444ff;"><b>)</b></span>;
+<a href="" name="line42">42</a>   <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line43">43</a> <span style="color: #4444ff;"><b>}</b></span>
+<a href="" name="line44">44</a> SDL::quit<span style="color: #4444ff;"><b>(</b></span><span style="color: #4444ff;"><b>)</b></span>;&nbsp;</pre><pre>&nbsp;</pre><pre>&nbsp;</pre><pre>Tinker with $filter and look at perldoc lib/SDL/pods/Event.pod.&nbsp;</pre><pre>&nbsp;</pre><pre>Have fun,</pre><pre>--yapgh</pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-2301663122914111362?l=yapgh.blogspot.com' alt='' /></div>
+<p><a href="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/0/da"><img src="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/0/di" border="0" ismap="true"></img></a><br/>
+<a href="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/1/da"><img src="http://feedads.g.doubleclick.net/~a/e5FjkjzCKI5FggkvV6c3mlOMCG4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/nw1gIYSWG5M" height="1" width="1"/></div></div>
\ No newline at end of file