Mercurial > sdl-ios-xcode
view docs/html/sdlcreatecursor.html @ 1032:c1c2efca4548
Date: Mon, 24 Jan 2005 21:37:56 +0800
From: Chris Taylor
Subject: Patch to put back dynamic OpenGL loading for MPW
I sent a patch a while ago that removes dynamic OpenGL loading for
Macintosh Programmer's Workshop. Dynamic loading DOES actually work
when an SDL program is built with MPW, it just has to be set up for it.
(Whoops!!) This is the ideal way to get OpenGL extensions to work,
which D2X uses quite a few of.
This patch puts dynamic loading back in SDL for Mac OS 9. It applies to
current CVS. I noticed that two members need to be set when
DrawSprocket is used.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 25 Jan 2005 16:57:11 +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 >