1 |
|
/* |
2 |
|
* video_blit.h - Video/graphics emulation, blitters |
3 |
|
* |
4 |
< |
* Basilisk II (C) 1997-2002 Christian Bauer |
4 |
> |
* Basilisk II (C) 1997-2005 Christian Bauer |
5 |
|
* |
6 |
|
* This program is free software; you can redistribute it and/or modify |
7 |
|
* it under the terms of the GNU General Public License as published by |
18 |
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 |
|
*/ |
20 |
|
|
21 |
+ |
#ifndef DEFINE_VIDEO_BLITTERS |
22 |
+ |
|
23 |
+ |
#ifndef VIDEO_BLIT_H |
24 |
+ |
#define VIDEO_BLIT_H |
25 |
+ |
|
26 |
+ |
// Format of the target visual |
27 |
+ |
struct VisualFormat { |
28 |
+ |
int depth; // Screen depth |
29 |
+ |
uint32 Rmask, Gmask, Bmask; // RGB mask values |
30 |
+ |
uint32 Rshift, Gshift, Bshift; // RGB shift values |
31 |
+ |
}; |
32 |
+ |
|
33 |
+ |
// Prototypes |
34 |
+ |
extern void (*Screen_blit)(uint8 * dest, const uint8 * source, uint32 length); |
35 |
+ |
extern bool Screen_blitter_init(VisualFormat const & visual_format, bool native_byte_order, int mac_depth); |
36 |
+ |
extern uint32 ExpandMap[256]; |
37 |
+ |
|
38 |
+ |
// Glue for SheepShaver and BasiliskII |
39 |
+ |
#ifdef SHEEPSHAVER |
40 |
+ |
enum { |
41 |
+ |
VIDEO_DEPTH_1BIT = APPLE_1_BIT, |
42 |
+ |
VIDEO_DEPTH_2BIT = APPLE_2_BIT, |
43 |
+ |
VIDEO_DEPTH_4BIT = APPLE_4_BIT, |
44 |
+ |
VIDEO_DEPTH_8BIT = APPLE_8_BIT, |
45 |
+ |
VIDEO_DEPTH_16BIT = APPLE_16_BIT, |
46 |
+ |
VIDEO_DEPTH_32BIT = APPLE_32_BIT |
47 |
+ |
}; |
48 |
+ |
#define VIDEO_MODE VideoInfo |
49 |
+ |
#define VIDEO_MODE_INIT VideoInfo const & mode = VModes[cur_mode] |
50 |
+ |
#define VIDEO_MODE_INIT_MONITOR VIDEO_MODE_INIT |
51 |
+ |
#define VIDEO_MODE_ROW_BYTES mode.viRowBytes |
52 |
+ |
#define VIDEO_MODE_X mode.viXsize |
53 |
+ |
#define VIDEO_MODE_Y mode.viYsize |
54 |
+ |
#define VIDEO_MODE_RESOLUTION mode.viAppleID |
55 |
+ |
#define VIDEO_MODE_DEPTH mode.viAppleMode |
56 |
+ |
#else |
57 |
+ |
enum { |
58 |
+ |
VIDEO_DEPTH_1BIT = VDEPTH_1BIT, |
59 |
+ |
VIDEO_DEPTH_2BIT = VDEPTH_2BIT, |
60 |
+ |
VIDEO_DEPTH_4BIT = VDEPTH_4BIT, |
61 |
+ |
VIDEO_DEPTH_8BIT = VDEPTH_8BIT, |
62 |
+ |
VIDEO_DEPTH_16BIT = VDEPTH_16BIT, |
63 |
+ |
VIDEO_DEPTH_32BIT = VDEPTH_32BIT |
64 |
+ |
}; |
65 |
+ |
#define VIDEO_MODE video_mode |
66 |
+ |
#define VIDEO_MODE_INIT video_mode const & mode = drv->mode |
67 |
+ |
#define VIDEO_MODE_INIT_MONITOR video_mode const & mode = monitor.get_current_mode() |
68 |
+ |
#define VIDEO_MODE_ROW_BYTES mode.bytes_per_row |
69 |
+ |
#define VIDEO_MODE_X mode.x |
70 |
+ |
#define VIDEO_MODE_Y mode.y |
71 |
+ |
#define VIDEO_MODE_RESOLUTION mode.resolution_id |
72 |
+ |
#define VIDEO_MODE_DEPTH mode.depth |
73 |
+ |
#endif |
74 |
+ |
|
75 |
+ |
#endif /* VIDEO_BLIT_H */ |
76 |
+ |
|
77 |
+ |
#else |
78 |
+ |
|
79 |
|
#ifndef FB_DEPTH |
80 |
|
# error "Undefined screen depth" |
81 |
|
#endif |
186 |
|
#ifdef FB_DEPTH |
187 |
|
#undef FB_DEPTH |
188 |
|
#endif |
189 |
+ |
|
190 |
+ |
#endif /* DEFINE_VIDEO_BLITTERS */ |