Mercurial > sdl-ios-xcode
view src/video/cybergfx/SDL_cgxvideo.h @ 1267:fdc7ef6ecab4
Correctly manage mouse relative motion
author | Patrice Mandin <patmandin@gmail.com> |
---|---|
date | Wed, 25 Jan 2006 20:36:21 +0000 |
parents | b8d311d90021 |
children | c9b51268668f |
line wrap: on
line source
/* SDL - Simple DirectMedia Layer Copyright (C) 1997-2004 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@libsdl.org */ #ifdef SAVE_RCSID static char rcsid = "@(#) $Id$"; #endif #ifndef _SDL_cgxvideo_h #define _SDL_cgxvideo_h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <exec/exec.h> #include <cybergraphx/cybergraphics.h> #include <graphics/scale.h> #include <graphics/gfx.h> #include <intuition/intuition.h> #if defined(__SASC) || defined(STORMC4_WOS) #include <proto/exec.h> #include <proto/cybergraphics.h> #include <proto/graphics.h> #include <proto/intuition.h> #include <proto/console.h> #else #include <inline/exec.h> #include <inline/cybergraphics.h> #include <inline/graphics.h> #include <inline/intuition.h> #include <inline/console.h> #endif #include "mydebug.h" #include "SDL_mouse.h" #include "SDL_sysvideo.h" #define USE_CGX_WRITELUTPIXEL /* Hidden "this" pointer for the video functions */ #define _THIS SDL_VideoDevice *this /* Private display data */ struct SDL_PrivateVideoData { struct Screen *Public_Display; /* Used for events and window management */ struct Screen *GFX_Display; /* Used for graphics and colormap stuff */ Uint32 SDL_VisualUnused; /* The visual used by our window */ struct Window *SDL_Window; /* Shared by both displays (no X security?) */ unsigned char *BlankCursor; /* The invisible cursor */ char *SDL_windowid; /* Flag: true if we have been passed a window */ /* The variables used for displaying graphics */ Uint8 *Ximage; /* The X image for our window */ int swap_pixels; /* Flag: true if display is swapped endian */ /* The current width and height of the fullscreen mode */ int current_w; int current_h; /* Support for internal mouse warping */ struct { int x; int y; } mouse_last; struct { int numerator; int denominator; int threshold; } mouse_accel; int mouse_relative; /* The current list of available video modes */ SDL_Rect **modelist; /* available visuals of interest to us, sorted deepest first */ struct { Uint32 visual; int depth; /* number of significant bits/pixel */ int bpp; /* pixel quantum in bits */ } visuals[5]; /* at most entries for 8, 15, 16, 24 */ int nvisuals; Uint32 vis; /* current visual in use */ int depth; /* current visual depth (not bpp) */ int BytesPerPixel; int currently_fullscreen,same_format,dbuffer; /* Automatic mode switching support (entering/leaving fullscreen) */ Uint32 switch_waiting; Uint32 switch_time; /* Prevent too many XSync() calls */ int blit_queued; /* Colormap handling */ LONG Pens; Sint32 *XPixels; /* A list of pixels that have been allocated, the size depends on the screen format */ struct ScreenBuffer *SB[2]; struct RastPort *RP; short *iconcolors; /* List of colors used by the icon */ }; /* Old variable names */ #define local_X11 (this->hidden->local_X11) #define SDL_Display (this->hidden->Public_Display) #define GFX_Display (this->hidden->GFX_Display) #define SDL_Screen DefaultScreen(this->hidden->Public_Display) #define SDL_Visual (this->hidden->vis) #define SDL_Root RootWindow(SDL_Display, SDL_Screen) #define WMwindow (this->hidden->WMwindow) #define FSwindow (this->hidden->FSwindow) #define SDL_Window (this->hidden->SDL_Window) #define WM_DELETE_WINDOW (this->hidden->WM_DELETE_WINDOW) #define SDL_BlankCursor (this->hidden->BlankCursor) #define SDL_windowid (this->hidden->SDL_windowid) #define SDL_Ximage (this->hidden->Ximage) #define SDL_GC (this->hidden->gc) #define swap_pixels (this->hidden->swap_pixels) #define current_w (this->hidden->current_w) #define current_h (this->hidden->current_h) #define mouse_last (this->hidden->mouse_last) #define mouse_accel (this->hidden->mouse_accel) #define mouse_relative (this->hidden->mouse_relative) #define SDL_modelist (this->hidden->modelist) #define SDL_RastPort (this->hidden->RP) #define saved_mode (this->hidden->saved_mode) #define saved_view (this->hidden->saved_view) #define currently_fullscreen (this->hidden->currently_fullscreen) #define blit_queued (this->hidden->blit_queued) #define SDL_DisplayColormap (this->hidden->GFX_Display->ViewPort.ColorMap) #define SDL_XPixels (this->hidden->XPixels) #define SDL_iconcolors (this->hidden->iconcolors) /* Used to get the X cursor from a window-manager specific cursor */ // extern Cursor SDL_GetWMXCursor(WMcursor *cursor); extern int CGX_CreateWindow(_THIS, SDL_Surface *screen, int w, int h, int bpp, Uint32 flags); extern int CGX_ResizeWindow(_THIS, SDL_Surface *screen, int w, int h, Uint32 flags); extern void CGX_DestroyWindow(_THIS, SDL_Surface *screen); extern struct Library *CyberGfxBase; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern struct ExecBase *SysBase; extern struct DosLibrary *DOSBase; struct private_hwdata { struct BitMap *bmap; APTR lock; struct SDL_VideoDevice *videodata; APTR mask; int allocated; }; int CGX_CheckHWBlit(_THIS,SDL_Surface *src,SDL_Surface *dst); int CGX_FillHWRect(_THIS,SDL_Surface *dst,SDL_Rect *dstrect,Uint32 color); int CGX_SetHWColorKey(_THIS,SDL_Surface *surface, Uint32 key); #endif /* _SDL_x11video_h */