Mercurial > sdl-ios-xcode
view docs/html/sdlcreatecursor.html @ 3202:3aa519a5c676
I've made so many changes I don't dare continue until I check the current stuff in.
/test/testatomic.c performs absolutely basic tests to show that the function work as expected. Need a second test to do more detailed tests.
/include/SDL_atomic.h provides declarations for all included functions.
/src/atomic/linux/SDL_atomic.c provided all the functions. On a generic built the 64 bit functions work, but they are emulated. On a build for -march=pentium and above the 64 bit functions use native instructions
/src/atomic/dummy/SDL_atomic.c emulates all the operations using SDL_mutex.h.
/src/atomic/win32/SDL_atomic.c is a copy of dummy
/src/atomic/macosx/SDL_atomic.s is a copy of dummy
These versions of SDL_atomic.c provide a frame work for building the library with a mixture of native and emulated functions. This allows the whole library to be provided on all platforms. (I hope.)
I hope this fits with the SDL philosophy of either providing a common subset or emulating when the platform is missing a feature.
I have not added dummy, macosx, or win32 to the build. They are there as place holders for future work.
I have modified congifure.in to compile sources in /src/atomic/linux. (The SDL configure.in file is an amazing piece of work and I hope I didn't mess it up. :-)
author | Bob Pendleton <bob@pendleton.com> |
---|---|
date | Mon, 29 Jun 2009 19:54:43 +0000 |
parents | 355632dca928 |
children |
line wrap: on
line source
<HTML ><HEAD ><TITLE >SDL_CreateCursor</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ "><LINK REL="HOME" TITLE="SDL Library Documentation" HREF="index.html"><LINK REL="UP" TITLE="Video" HREF="video.html"><LINK REL="PREVIOUS" TITLE="SDL_WarpMouse" HREF="sdlwarpmouse.html"><LINK REL="NEXT" TITLE="SDL_FreeCursor" HREF="sdlfreecursor.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFF8DC" TEXT="#000000" LINK="#0000ee" VLINK="#551a8b" ALINK="#ff0000" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >SDL Library Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="sdlwarpmouse.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="sdlfreecursor.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SDLCREATECURSOR" ></A >SDL_CreateCursor</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN2487" ></A ><H2 >Name</H2 >SDL_CreateCursor -- Creates a new mouse cursor.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN2490" ></A ><H2 >Synopsis</H2 ><DIV CLASS="FUNCSYNOPSIS" ><A NAME="AEN2491" ></A ><P ></P ><PRE CLASS="FUNCSYNOPSISINFO" >#include "SDL.h"</PRE ><P ><CODE ><CODE CLASS="FUNCDEF" >SDL_Cursor *<B CLASS="FSFUNC" >SDL_CreateCursor</B ></CODE >(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);</CODE ></P ><P ></P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2497" ></A ><H2 >Description</H2 ><P >Create a cursor using the specified <TT CLASS="PARAMETER" ><I >data</I ></TT > and <TT CLASS="PARAMETER" ><I >mask</I ></TT > (in MSB format). The cursor width must be a multiple of 8 bits.</P ><P >The cursor is created in black and white according to the following: <DIV CLASS="INFORMALTABLE" ><A NAME="AEN2503" ></A ><P ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><THEAD ><TR ><TH ALIGN="LEFT" VALIGN="TOP" >Data / Mask</TH ><TH ALIGN="LEFT" VALIGN="TOP" >Resulting pixel on screen</TH ></TR ></THEAD ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" >0 / 1</TD ><TD ALIGN="LEFT" VALIGN="TOP" >White</TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" >1 / 1</TD ><TD ALIGN="LEFT" VALIGN="TOP" >Black</TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" >0 / 0</TD ><TD ALIGN="LEFT" VALIGN="TOP" >Transparent</TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" >1 / 0</TD ><TD ALIGN="LEFT" VALIGN="TOP" >Inverted color if possible, black if not.</TD ></TR ></TBODY ></TABLE ><P ></P ></DIV ></P ><P >Cursors created with this function must be freed with <A HREF="sdlfreecursor.html" >SDL_FreeCursor</A >.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2524" ></A ><H2 >Example</H2 ><PRE CLASS="PROGRAMLISTING" >/* Stolen from the mailing list */ /* Creates a new mouse cursor from an XPM */ /* XPM */ static const char *arrow[] = { /* width height num_colors chars_per_pixel */ " 32 32 3 1", /* colors */ "X c #000000", ". c #ffffff", " c None", /* pixels */ "X ", "XX ", "X.X ", "X..X ", "X...X ", "X....X ", "X.....X ", "X......X ", "X.......X ", "X........X ", "X.....XXXXX ", "X..X..X ", "X.X X..X ", "XX X..X ", "X X..X ", " X..X ", " X..X ", " X..X ", " XX ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "0,0" }; static SDL_Cursor *init_system_cursor(const char *image[]) { int i, row, col; Uint8 data[4*32]; Uint8 mask[4*32]; int hot_x, hot_y; i = -1; for ( row=0; row<32; ++row ) { for ( col=0; col<32; ++col ) { if ( col % 8 ) { data[i] <<= 1; mask[i] <<= 1; } else { ++i; data[i] = mask[i] = 0; } switch (image[4+row][col]) { case 'X': data[i] |= 0x01; mask[i] |= 0x01; break; case '.': mask[i] |= 0x01; break; case ' ': break; } } } sscanf(image[4+row], "%d,%d", &hot_x, &hot_y); return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); }</PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2527" ></A ><H2 >See Also</H2 ><P ><A HREF="sdlfreecursor.html" ><TT CLASS="FUNCTION" >SDL_FreeCursor</TT ></A >, <A HREF="sdlsetcursor.html" ><TT CLASS="FUNCTION" >SDL_SetCursor</TT ></A >, <A HREF="sdlshowcursor.html" ><TT CLASS="FUNCTION" >SDL_ShowCursor</TT ></A ></P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="sdlwarpmouse.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="sdlfreecursor.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >SDL_WarpMouse</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="video.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >SDL_FreeCursor</TD ></TR ></TABLE ></DIV ></BODY ></HTML >