updated docs
[sdlgit/SDL-Site.git] / pages / SDL-Cursor.html-inc
index bb02e7c..ff7314f 100644 (file)
@@ -3,17 +3,14 @@
 <h3 id="TOP">Index</h3>
 
 <ul><li><a href="#NAME">NAME</a></li>
+<li><a href="#CATEGORY">CATEGORY</a></li>
 <li><a href="#SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#METHODS">METHODS</a>
-<ul><li><a href="#new_data_gt_surface_data_mask_gt_sur">new( -data =&gt; $surface_data, -mask =&gt; $surface_mask, x =&gt; $x, y =&gt; $y)</a></li>
-<li><a href="#warp_cursor_x_y">warp(cursor,x, y)</a></li>
-<li><a href="#use_cursor">use(cursor)</a></li>
-<li><a href="#get">get()</a></li>
-<li><a href="#show_toggle">show($toggle)</a></li>
+<ul><li><a href="#new">new</a></li>
 </ul>
 </li>
-<li><a href="#AUTHOR">AUTHOR</a></li>
+<li><a href="#AUTHORS">AUTHORS</a></li>
 <li><a href="#SEE_ALSO">SEE ALSO</a>
 </li>
 </ul><hr />
 
 <h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
 <div id="NAME_CONTENT">
-<p>SDL::Cursor - a SDL perl extension</p>
+<p>SDL::Cursor - Mouse cursor structure</p>
+
+</div>
+<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="CATEGORY_CONTENT">
+<p>Core, Mouse, Structure</p>
 
 </div>
 <h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
 <div id="SYNOPSIS_CONTENT">
-<pre>  $cursor = SDL::Cursor-&gt;new(
-       -data =&gt; new SDL::Surface &quot;cursor.png&quot;,
-       -mask =&gt; new SDL::Surface &quot;mask.png&quot;,
-       -x    =&gt; 0, -y =&gt; 0 );
-  $cusor-&gt;use;
+<pre> my $cursor = SDL::Cursor-&gt;new(
+     \@data,
+     \@mask,
+     $width,
+     $height,
+     $hotspot_left,
+     $hotspot_top
+ );
+
+ SDL::Mouse::set_cursor($cursor);
 
 </pre>
 
 </div>
 <h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
 <div id="DESCRIPTION_CONTENT">
-<p>the SDL::Cursor module handles mouse cursors, and provide the developer to
-use custom made cursors. Note that the cursors can only be in black and
-white.</p>
+<p>The <code>SDL::Cursor</code> module handles mouse cursors, and allows the developer to use custom-made cursors.
+Note that cursors can only be in black and white.</p>
 
 </div>
 <h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
 <div id="METHODS_CONTENT">
 
 </div>
-<h2 id="new_data_gt_surface_data_mask_gt_sur">new( -data =&gt; $surface_data, -mask =&gt; $surface_mask, x =&gt; $x, y =&gt; $y)</h2>
-<div id="new_data_gt_surface_data_mask_gt_sur-2">
-<p>Creates a new cursor. The &lt;C&gt;-data&lt;/C&gt; and &lt;C&gt;-mask&lt;/C&gt; parameters should be both black and white pictures. The height and width of these surfaces should be a multiple of 8. The &lt;C&gt;-x&lt;/C&gt; and &lt;C&gt;-y&lt;/C&gt; are the coordinates of the cursor 'hot spot'.</p>
+<h2 id="new">new</h2>
+<div id="new_CONTENT">
+<pre> my $cursor = SDL::Cursor-&gt;new(
+     \@data, \@mask, $width, $height, $hotspot_left, $hotspot_top
+ );
 
-</div>
-<h2 id="warp_cursor_x_y">warp(cursor,x, y)</h2>
-<div id="warp_cursor_x_y_CONTENT">
-<p>Set the position of the SDL::Cursor given as first parameter .
-the new postion is set to &lt;C&gt;x&lt;/C&gt;, &lt;C&gt;y&lt;/C&gt; coordinates in the application window.
-SDL::warp trigger a new mouse motion event.
-It doesn't returns anything.</p>
+</pre>
+<p>Create a cursor using the specified data and mask (in MSB format).
+The cursor is created in black and white according to the following:</p>
+<pre> Data / Mask   Resulting pixel on screen
+    0 / 1      White
+    1 / 1      Black
+    0 / 0      Transparent
+    1 / 0      Inverted color if possible, black if not.
 
-</div>
-<h2 id="use_cursor">use(cursor)</h2>
-<div id="use_cursor_CONTENT">
-<p>Set the SDL::Cursor given as first parameter to the active cursor.</p>
+</pre>
+<p>If you want to have color cursor, then this function is not for you.
+Instead, you should hide the cursor with <code>SDL::Mouse::show_cursor(SDL_DISABLE)</code>.
+Then in your main loop, when you draw graphics, draw a <code>SDL::Surface</code> at the location of the mouse cursor.</p>
+<p>Example:</p>
+<pre> use SDL;
+ use SDL::Video;
+ use SDL::Mouse;
+ use SDL::Cursor;
 
-</div>
-<h2 id="get">get()</h2>
-<div id="get_CONTENT">
-<p>When used statically &lt;C&gt;SDL::Cursor::get()&lt;/C&gt;, it will return the instance of the current cursor in use. Called as a method, it will return itself.</p>
-<p>This method can be useful if you are dealing with several cursors.</p>
+ SDL::init(SDL_INIT_VIDEO);
+ SDL::Video::set_video_mode(640, 480, 16, SDL_SWSURFACE);
 
-</div>
-<h2 id="show_toggle">show($toggle)</h2>
-<div id="show_toggle_CONTENT">
-<p>Set the visibility of the cursor. A false value will make the cursor
-invisible in the Application window. A true value will show it back.</p>
+ my @data = (
+     0b00000000,
+     0b00111100,
+     0b01111110,
+     0b01111110,
+     0b01111110,
+     0b01111110,
+     0b00111100,
+     0b00000000
+ );
+ my @mask = (
+     0b00111100,
+     0b01111110,
+     0b11100111,
+     0b11000011,
+     0b11000011,
+     0b11100111,
+     0b01111110,
+     0b00111100
+ );
+ my $cursor = SDL::Cursor-&gt;new(\@data, \@mask, 8, 8, 0, 0);
+ sleep(1);
+
+ SDL::Mouse::set_cursor($cursor);
+ sleep(5);
+
+</pre>
+<p>The width of cursors work in groups of 8.
+If the width is above 8, twice the amount of elements in <code>@data</code> and <code>@mask</code> are required.
+If the width is above 16, three times are required, and so on.
+For example, if you wanted a 9 pixel crosshair you might do the following:</p>
+<pre> my @data = (
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+     0b11111111,0b10000000,
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+     0b00001000,0b00000000,
+ );
+ my @mask = @data;
+
+ my $cursor = SDL::Cursor-&gt;new(\@data, \@mask, 9, 9, 4, 4);
+
+</pre>
+<p>The hotspot is offset by 4 pixels because a crosshair clicks from the center instead of the top left.</p>
 
 </div>
-<h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="AUTHOR_CONTENT">
-<p>David J. Goehrig</p>
+<h1 id="AUTHORS">AUTHORS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="AUTHORS_CONTENT">
+<p>See <b>AUTHORS</b> in <cite>SDL</cite>.</p>
+
+
+
+
 
 </div>
 <h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
 <div id="SEE_ALSO_CONTENT">
-<p><cite>perl</cite> <cite>SDL::Surface</cite></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mouse.html">SDL::Mouse</a></p>
 
 </div>
 </div>
\ No newline at end of file