1<HTML 2><HEAD 3><TITLE 4>SDL_CreateCursor</TITLE 5><META 6NAME="GENERATOR" 7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ 8"><LINK 9REL="HOME" 10TITLE="SDL Library Documentation" 11HREF="index.html"><LINK 12REL="UP" 13TITLE="Video" 14HREF="video.html"><LINK 15REL="PREVIOUS" 16TITLE="SDL_WarpMouse" 17HREF="sdlwarpmouse.html"><LINK 18REL="NEXT" 19TITLE="SDL_FreeCursor" 20HREF="sdlfreecursor.html"></HEAD 21><BODY 22CLASS="REFENTRY" 23BGCOLOR="#FFF8DC" 24TEXT="#000000" 25LINK="#0000ee" 26VLINK="#551a8b" 27ALINK="#ff0000" 28><DIV 29CLASS="NAVHEADER" 30><TABLE 31SUMMARY="Header navigation table" 32WIDTH="100%" 33BORDER="0" 34CELLPADDING="0" 35CELLSPACING="0" 36><TR 37><TH 38COLSPAN="3" 39ALIGN="center" 40>SDL Library Documentation</TH 41></TR 42><TR 43><TD 44WIDTH="10%" 45ALIGN="left" 46VALIGN="bottom" 47><A 48HREF="sdlwarpmouse.html" 49ACCESSKEY="P" 50>Prev</A 51></TD 52><TD 53WIDTH="80%" 54ALIGN="center" 55VALIGN="bottom" 56></TD 57><TD 58WIDTH="10%" 59ALIGN="right" 60VALIGN="bottom" 61><A 62HREF="sdlfreecursor.html" 63ACCESSKEY="N" 64>Next</A 65></TD 66></TR 67></TABLE 68><HR 69ALIGN="LEFT" 70WIDTH="100%"></DIV 71><H1 72><A 73NAME="SDLCREATECURSOR" 74></A 75>SDL_CreateCursor</H1 76><DIV 77CLASS="REFNAMEDIV" 78><A 79NAME="AEN2487" 80></A 81><H2 82>Name</H2 83>SDL_CreateCursor -- Creates a new mouse cursor.</DIV 84><DIV 85CLASS="REFSYNOPSISDIV" 86><A 87NAME="AEN2490" 88></A 89><H2 90>Synopsis</H2 91><DIV 92CLASS="FUNCSYNOPSIS" 93><A 94NAME="AEN2491" 95></A 96><P 97></P 98><PRE 99CLASS="FUNCSYNOPSISINFO" 100>#include "SDL.h"</PRE 101><P 102><CODE 103><CODE 104CLASS="FUNCDEF" 105>SDL_Cursor *<B 106CLASS="FSFUNC" 107>SDL_CreateCursor</B 108></CODE 109>(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y);</CODE 110></P 111><P 112></P 113></DIV 114></DIV 115><DIV 116CLASS="REFSECT1" 117><A 118NAME="AEN2497" 119></A 120><H2 121>Description</H2 122><P 123>Create a cursor using the specified <TT 124CLASS="PARAMETER" 125><I 126>data</I 127></TT 128> and <TT 129CLASS="PARAMETER" 130><I 131>mask</I 132></TT 133> (in MSB format). 134The cursor width must be a multiple of 8 bits.</P 135><P 136>The cursor is created in black and white according to the following: 137<DIV 138CLASS="INFORMALTABLE" 139><A 140NAME="AEN2503" 141></A 142><P 143></P 144><TABLE 145BORDER="1" 146CLASS="CALSTABLE" 147><THEAD 148><TR 149><TH 150ALIGN="LEFT" 151VALIGN="TOP" 152>Data / Mask</TH 153><TH 154ALIGN="LEFT" 155VALIGN="TOP" 156>Resulting pixel on screen</TH 157></TR 158></THEAD 159><TBODY 160><TR 161><TD 162ALIGN="LEFT" 163VALIGN="TOP" 164>0 / 1</TD 165><TD 166ALIGN="LEFT" 167VALIGN="TOP" 168>White</TD 169></TR 170><TR 171><TD 172ALIGN="LEFT" 173VALIGN="TOP" 174>1 / 1</TD 175><TD 176ALIGN="LEFT" 177VALIGN="TOP" 178>Black</TD 179></TR 180><TR 181><TD 182ALIGN="LEFT" 183VALIGN="TOP" 184>0 / 0</TD 185><TD 186ALIGN="LEFT" 187VALIGN="TOP" 188>Transparent</TD 189></TR 190><TR 191><TD 192ALIGN="LEFT" 193VALIGN="TOP" 194>1 / 0</TD 195><TD 196ALIGN="LEFT" 197VALIGN="TOP" 198>Inverted color if possible, black if not.</TD 199></TR 200></TBODY 201></TABLE 202><P 203></P 204></DIV 205></P 206><P 207>Cursors created with this function must be freed with 208<A 209HREF="sdlfreecursor.html" 210>SDL_FreeCursor</A 211>.</P 212></DIV 213><DIV 214CLASS="REFSECT1" 215><A 216NAME="AEN2524" 217></A 218><H2 219>Example</H2 220><PRE 221CLASS="PROGRAMLISTING" 222>/* Stolen from the mailing list */ 223/* Creates a new mouse cursor from an XPM */ 224 225 226/* XPM */ 227static const char *arrow[] = { 228 /* width height num_colors chars_per_pixel */ 229 " 32 32 3 1", 230 /* colors */ 231 "X c #000000", 232 ". c #ffffff", 233 " c None", 234 /* pixels */ 235 "X ", 236 "XX ", 237 "X.X ", 238 "X..X ", 239 "X...X ", 240 "X....X ", 241 "X.....X ", 242 "X......X ", 243 "X.......X ", 244 "X........X ", 245 "X.....XXXXX ", 246 "X..X..X ", 247 "X.X X..X ", 248 "XX X..X ", 249 "X X..X ", 250 " X..X ", 251 " X..X ", 252 " X..X ", 253 " XX ", 254 " ", 255 " ", 256 " ", 257 " ", 258 " ", 259 " ", 260 " ", 261 " ", 262 " ", 263 " ", 264 " ", 265 " ", 266 " ", 267 "0,0" 268}; 269 270static SDL_Cursor *init_system_cursor(const char *image[]) 271{ 272 int i, row, col; 273 Uint8 data[4*32]; 274 Uint8 mask[4*32]; 275 int hot_x, hot_y; 276 277 i = -1; 278 for ( row=0; row<32; ++row ) { 279 for ( col=0; col<32; ++col ) { 280 if ( col % 8 ) { 281 data[i] <<= 1; 282 mask[i] <<= 1; 283 } else { 284 ++i; 285 data[i] = mask[i] = 0; 286 } 287 switch (image[4+row][col]) { 288 case 'X': 289 data[i] |= 0x01; 290 mask[i] |= 0x01; 291 break; 292 case '.': 293 mask[i] |= 0x01; 294 break; 295 case ' ': 296 break; 297 } 298 } 299 } 300 sscanf(image[4+row], "%d,%d", &hot_x, &hot_y); 301 return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y); 302}</PRE 303></DIV 304><DIV 305CLASS="REFSECT1" 306><A 307NAME="AEN2527" 308></A 309><H2 310>See Also</H2 311><P 312><A 313HREF="sdlfreecursor.html" 314><TT 315CLASS="FUNCTION" 316>SDL_FreeCursor</TT 317></A 318>, 319<A 320HREF="sdlsetcursor.html" 321><TT 322CLASS="FUNCTION" 323>SDL_SetCursor</TT 324></A 325>, 326<A 327HREF="sdlshowcursor.html" 328><TT 329CLASS="FUNCTION" 330>SDL_ShowCursor</TT 331></A 332></P 333></DIV 334><DIV 335CLASS="NAVFOOTER" 336><HR 337ALIGN="LEFT" 338WIDTH="100%"><TABLE 339SUMMARY="Footer navigation table" 340WIDTH="100%" 341BORDER="0" 342CELLPADDING="0" 343CELLSPACING="0" 344><TR 345><TD 346WIDTH="33%" 347ALIGN="left" 348VALIGN="top" 349><A 350HREF="sdlwarpmouse.html" 351ACCESSKEY="P" 352>Prev</A 353></TD 354><TD 355WIDTH="34%" 356ALIGN="center" 357VALIGN="top" 358><A 359HREF="index.html" 360ACCESSKEY="H" 361>Home</A 362></TD 363><TD 364WIDTH="33%" 365ALIGN="right" 366VALIGN="top" 367><A 368HREF="sdlfreecursor.html" 369ACCESSKEY="N" 370>Next</A 371></TD 372></TR 373><TR 374><TD 375WIDTH="33%" 376ALIGN="left" 377VALIGN="top" 378>SDL_WarpMouse</TD 379><TD 380WIDTH="34%" 381ALIGN="center" 382VALIGN="top" 383><A 384HREF="video.html" 385ACCESSKEY="U" 386>Up</A 387></TD 388><TD 389WIDTH="33%" 390ALIGN="right" 391VALIGN="top" 392>SDL_FreeCursor</TD 393></TR 394></TABLE 395></DIV 396></BODY 397></HTML 398>