Mercurial > sdl-ios-xcode
view src/video/maccommon/SDL_macmouse.c @ 19:8cc4dbfab9ab
Date: Thu, 19 Apr 2001 08:36:54 +0300
From: "Mike Gorchak" <mike@malva.com.ua>
Subject: Patches for QNX RtP
Here my patch for QNX RtP/Photon for SDL-1.2.
Detailed description of my changes:
SDL/configure.in:
If Photon detected declare define ENABLE_PHOTON.
SDL/src/video/SDL_sysvideo.h:
Added extern to ph_bootstrap.
SDL/src/video/SDL_video.c:
Added ph_bootstrap to bootstrap array.
SDL/src/video/photon/SDL_ph_events.c:
Declare DISABLE_X11 if compiled for Photon.
SDL/src/video/photon/SDL_ph_image.c:
Fixed segment violation on exit. Please update BUGS file.
SDL/src/video/photon/SDL_ph_video.c:
1. Enabling window manager.
2. Added to device capabilities Photon Window Manager functions:
SetCaption and IconifyWindow.
3. Renamed X11_bootstrap to ph_bootstrap.
4. Removed SEGFAULT termination of programs if Photon not available.
SDL/src/video/photon/SDL_ph_wm.c:
1. Declare DISABLE_X11 if compiled for Photon.
2. Added ph_SetCaption and ph_IconifyWindow code. (Thanks to
'phearbear' for iconify window source).
3. Some stubers for other wm functions.
Thanks !
----------------------------
Mike Gorchak
CJSC Malva
System Programmer
author | Sam Lantinga <slouken@lokigames.com> |
---|---|
date | Thu, 10 May 2001 18:42:17 +0000 |
parents | 74212992fb08 |
children | e92aa316c517 |
line wrap: on
line source
/* SDL - Simple DirectMedia Layer Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Sam Lantinga slouken@devolution.com */ #ifdef SAVE_RCSID static char rcsid = "@(#) $Id$"; #endif #include <stdlib.h> #include <stdio.h> #if TARGET_API_MAC_CARBON #include <Carbon.h> #else #include <Quickdraw.h> #endif /* Routines that are not supported by the Carbon API... */ #if !TARGET_API_MAC_CARBON #include <CursorDevices.h> #endif #include "SDL_error.h" #include "SDL_mouse.h" #include "SDL_macmouse_c.h" /* The implementation dependent data for the window manager cursor */ struct WMcursor { Cursor curs; }; void Mac_FreeWMCursor(_THIS, WMcursor *cursor) { free(cursor); } WMcursor *Mac_CreateWMCursor(_THIS, Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) { WMcursor *cursor; int row, bytes; /* Allocate the cursor memory */ cursor = (WMcursor *)malloc(sizeof(WMcursor)); if ( cursor == NULL ) { SDL_OutOfMemory(); return(NULL); } memset(cursor, 0, sizeof(*cursor)); bytes = (w/8); if ( bytes > 2 ) { bytes = 2; } for ( row=0; row<h && (row < 16); ++row ) { memcpy(&cursor->curs.data[row], data, bytes); data += w/8; } for ( row=0; row<h && (row < 16); ++row ) { memcpy(&cursor->curs.mask[row], mask, bytes); mask += w/8; } cursor->curs.hotSpot.h = hot_x; cursor->curs.hotSpot.v = hot_y; /* That was easy. :) */ return(cursor); } int Mac_cursor_showing = 1; int Mac_ShowWMCursor(_THIS, WMcursor *cursor) { if ( cursor == NULL ) { if ( Mac_cursor_showing ) { HideCursor(); Mac_cursor_showing = 0; } } else { SetCursor(&cursor->curs); if ( ! Mac_cursor_showing ) { ShowCursor(); Mac_cursor_showing = 1; } } return(1); } void Mac_WarpWMCursor(_THIS, Uint16 x, Uint16 y) { #if !TARGET_API_MAC_CARBON CursorDevice *cursordevice; cursordevice = nil; CursorDeviceNextDevice(&cursordevice); if ( cursordevice != nil ) { WindowPtr saveport; Point where; GetPort(&saveport); SetPort(SDL_Window); where.h = x; where.v = y; LocalToGlobal(&where); SetPort(saveport); CursorDeviceMoveTo(cursordevice, where.h, where.v); } #endif /* !TARGET_API_MAC_CARBON */ }