• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     SDL - Simple DirectMedia Layer
3     Copyright (C) 1997-2006 Sam Lantinga
4 
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Lesser General Public
7     License as published by the Free Software Foundation; either
8     version 2.1 of the License, or (at your option) any later version.
9 
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Lesser General Public License for more details.
14 
15     You should have received a copy of the GNU Lesser General Public
16     License along with this library; if not, write to the Free Software
17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18 
19     Sam Lantinga
20     slouken@libsdl.org
21 */
22 #include "SDL_config.h"
23 
24 #ifndef _SDL_cgxvideo_h
25 #define _SDL_cgxvideo_h
26 
27 
28 #include <exec/exec.h>
29 #include <cybergraphx/cybergraphics.h>
30 #include <graphics/scale.h>
31 #include <graphics/gfx.h>
32 #include <intuition/intuition.h>
33 #if defined(__SASC) || defined(STORMC4_WOS)
34 #include <proto/exec.h>
35 #include <proto/cybergraphics.h>
36 #include <proto/graphics.h>
37 #include <proto/intuition.h>
38 #include <proto/console.h>
39 #else
40 #include <inline/exec.h>
41 #include <inline/cybergraphics.h>
42 #include <inline/graphics.h>
43 #include <inline/intuition.h>
44 #include <inline/console.h>
45 #endif
46 
47 #include "SDL_mouse.h"
48 #include "../SDL_sysvideo.h"
49 #include "mydebug.h"
50 
51 #define USE_CGX_WRITELUTPIXEL
52 
53 /* Hidden "this" pointer for the video functions */
54 #define _THIS	SDL_VideoDevice *this
55 
56 /* Private display data */
57 struct SDL_PrivateVideoData {
58     struct Screen *Public_Display; /* Used for events and window management */
59     struct Screen *GFX_Display;	/* Used for graphics and colormap stuff */
60     Uint32 SDL_VisualUnused;		/* The visual used by our window */
61     struct Window *SDL_Window;	/* Shared by both displays (no X security?) */
62     unsigned char *BlankCursor;	/* The invisible cursor */
63 
64     char *SDL_windowid;		/* Flag: true if we have been passed a window */
65 
66     /* The variables used for displaying graphics */
67     Uint8 *Ximage;		/* The X image for our window */
68     int swap_pixels;		/* Flag: true if display is swapped endian */
69 
70     /* Support for internal mouse warping */
71     struct {
72         int x;
73         int y;
74     } mouse_last;
75     struct {
76         int numerator;
77         int denominator;
78         int threshold;
79     } mouse_accel;
80     int mouse_relative;
81 
82     /* The current list of available video modes */
83     SDL_Rect **modelist;
84 
85     /* available visuals of interest to us, sorted deepest first */
86     struct {
87 		Uint32 visual;
88 		int depth;		/* number of significant bits/pixel */
89 		int bpp;		/* pixel quantum in bits */
90     } visuals[5];		/* at most entries for 8, 15, 16, 24 */
91     int nvisuals;
92 
93     Uint32 vis;		/* current visual in use */
94     int depth;			/* current visual depth (not bpp) */
95     int BytesPerPixel;
96     int currently_fullscreen,same_format,dbuffer;
97 
98     /* Automatic mode switching support (entering/leaving fullscreen) */
99     Uint32 switch_waiting;
100     Uint32 switch_time;
101 
102     /* Prevent too many XSync() calls */
103     int blit_queued;
104 
105     /* Colormap handling */
106     LONG Pens;
107     Sint32 *XPixels;		/* A list of pixels that have been allocated, the size depends on the screen format */
108 	struct ScreenBuffer *SB[2];
109 	struct RastPort *RP;
110     short *iconcolors;		/* List of colors used by the icon */
111 };
112 
113 /* Old variable names */
114 #define local_X11		(this->hidden->local_X11)
115 #define SDL_Display		(this->hidden->Public_Display)
116 #define GFX_Display		(this->hidden->GFX_Display)
117 #define SDL_Screen		DefaultScreen(this->hidden->Public_Display)
118 
119 #define SDL_Visual		(this->hidden->vis)
120 
121 #define SDL_Root		RootWindow(SDL_Display, SDL_Screen)
122 #define WMwindow		(this->hidden->WMwindow)
123 #define FSwindow		(this->hidden->FSwindow)
124 #define SDL_Window		(this->hidden->SDL_Window)
125 #define WM_DELETE_WINDOW	(this->hidden->WM_DELETE_WINDOW)
126 #define SDL_BlankCursor		(this->hidden->BlankCursor)
127 #define SDL_windowid		(this->hidden->SDL_windowid)
128 #define SDL_Ximage		(this->hidden->Ximage)
129 #define SDL_GC			(this->hidden->gc)
130 #define swap_pixels		(this->hidden->swap_pixels)
131 #define mouse_last		(this->hidden->mouse_last)
132 #define mouse_accel		(this->hidden->mouse_accel)
133 #define mouse_relative		(this->hidden->mouse_relative)
134 #define SDL_modelist		(this->hidden->modelist)
135 #define SDL_RastPort		(this->hidden->RP)
136 #define saved_mode		(this->hidden->saved_mode)
137 #define saved_view		(this->hidden->saved_view)
138 #define currently_fullscreen	(this->hidden->currently_fullscreen)
139 #define blit_queued		(this->hidden->blit_queued)
140 #define SDL_DisplayColormap	(this->hidden->GFX_Display->ViewPort.ColorMap)
141 #define SDL_XPixels		(this->hidden->XPixels)
142 #define SDL_iconcolors		(this->hidden->iconcolors)
143 
144 /* Used to get the X cursor from a window-manager specific cursor */
145 // extern Cursor SDL_GetWMXCursor(WMcursor *cursor);
146 
147 extern int CGX_CreateWindow(_THIS, SDL_Surface *screen,
148 			    int w, int h, int bpp, Uint32 flags);
149 extern int CGX_ResizeWindow(_THIS,
150 			SDL_Surface *screen, int w, int h, Uint32 flags);
151 
152 extern void CGX_DestroyWindow(_THIS, SDL_Surface *screen);
153 
154 extern struct Library *CyberGfxBase;
155 extern struct IntuitionBase *IntuitionBase;
156 extern struct GfxBase *GfxBase;
157 extern struct ExecBase *SysBase;
158 extern struct DosLibrary *DOSBase;
159 
160 struct private_hwdata
161 {
162 	struct BitMap *bmap;
163 	APTR lock;
164 	struct SDL_VideoDevice *videodata;
165 	APTR mask;
166 	int allocated;
167 };
168 
169 int CGX_CheckHWBlit(_THIS,SDL_Surface *src,SDL_Surface *dst);
170 int CGX_FillHWRect(_THIS,SDL_Surface *dst,SDL_Rect *dstrect,Uint32 color);
171 int CGX_SetHWColorKey(_THIS,SDL_Surface *surface, Uint32 key);
172 #endif /* _SDL_x11video_h */
173