You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
398 lines
6.0 KiB
398 lines
6.0 KiB
<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 |
|
> |