This repository has been archived by the owner on Feb 11, 2021. It is now read-only.
/
SDL_cgxvideo.h
178 lines (149 loc) · 5.94 KB
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
11
12
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
13
Lesser General Public License for more details.
14
15
16
17
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
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
25
26
27
28
29
30
31
32
#ifndef _SDL_cgxvideo_h
#define _SDL_cgxvideo_h
#include <exec/exec.h>
#include <cybergraphx/cybergraphics.h>
#include <graphics/scale.h>
#include <graphics/gfx.h>
#include <intuition/intuition.h>
33
#if defined(__SASC) || defined(STORMC4_WOS)
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#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 "SDL_mouse.h"
48
#include "../SDL_sysvideo.h"
49
#include "mydebug.h"
50
51
52
53
54
55
56
#define USE_CGX_WRITELUTPIXEL
/* Hidden "this" pointer for the video functions */
#define _THIS SDL_VideoDevice *this
/* Private display data */
57
58
59
60
61
62
63
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 */
64
65
char *SDL_windowid; /* Flag: true if we have been passed a window */
66
67
/* The variables used for displaying graphics */
68
69
Uint8 *Ximage; /* The X image for our window */
int swap_pixels; /* Flag: true if display is swapped endian */
70
71
/* Support for internal mouse warping */
72
73
struct
{
74
75
76
int x;
int y;
} mouse_last;
77
78
struct
{
79
80
81
82
83
84
85
86
87
88
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 */
89
90
91
92
93
94
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 */
95
96
int nvisuals;
97
98
Uint32 vis; /* current visual in use */
int depth; /* current visual depth (not bpp) */
99
int BytesPerPixel;
100
int currently_fullscreen, same_format, dbuffer;
101
102
103
104
105
106
107
108
109
110
/* 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;
111
112
113
114
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 */
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
};
/* 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)
131
#define SDL_windowid (this->hidden->SDL_windowid)
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#define SDL_Ximage (this->hidden->Ximage)
#define SDL_GC (this->hidden->gc)
#define swap_pixels (this->hidden->swap_pixels)
#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)
148
149
150
/* Used to get the X cursor from a window-manager specific cursor */
// extern Cursor SDL_GetWMXCursor(WMcursor *cursor);
151
152
153
154
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);
155
156
extern void CGX_DestroyWindow(_THIS, SDL_Surface * screen);
157
158
159
160
161
162
163
164
165
extern struct Library *CyberGfxBase;
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct ExecBase *SysBase;
extern struct DosLibrary *DOSBase;
struct private_hwdata
{
166
167
168
169
170
struct BitMap *bmap;
APTR lock;
struct SDL_VideoDevice *videodata;
APTR mask;
int allocated;
171
172
};
173
174
175
176
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);
177
#endif /* _SDL_x11video_h */
178
/* vi: set ts=4 sw=4 expandtab: */