94 lines
2.2 KiB
C
94 lines
2.2 KiB
C
/*
|
|
* Copyright (C) yajin 2008 <yajinzhou@gmail.com >
|
|
*
|
|
* This file is part of the virtualmips distribution.
|
|
* See LICENSE file for terms of the license.
|
|
*
|
|
*/
|
|
|
|
#ifndef __VSDL_H__
|
|
#define __VSDL_H__
|
|
|
|
#ifdef SIM_LCD /*defined in Makefile */
|
|
|
|
#include "utils.h"
|
|
#include "SDL/SDL.h"
|
|
|
|
struct DisplayState {
|
|
uint8_t *data;
|
|
int linesize;
|
|
int depth;
|
|
int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
|
|
int width;
|
|
int height;
|
|
void *opaque;
|
|
|
|
void (*dpy_update) (struct DisplayState * s, int x, int y, int w, int h);
|
|
void (*dpy_resize) (struct DisplayState * s, int w, int h);
|
|
void (*dpy_refresh) (struct DisplayState * s);
|
|
void (*dpy_copy) (struct DisplayState * s, int src_x, int src_y,
|
|
int dst_x, int dst_y, int w, int h);
|
|
};
|
|
|
|
typedef struct DisplayState DisplayState;
|
|
|
|
static inline void dpy_update (DisplayState * s, int x, int y, int w, int h)
|
|
{
|
|
s->dpy_update (s, x, y, w, h);
|
|
}
|
|
|
|
static inline void dpy_resize (DisplayState * s, int w, int h)
|
|
{
|
|
s->dpy_resize (s, w, h);
|
|
}
|
|
|
|
/*
|
|
static inline void draw_pixel(SDL_Surface *screen, Uint8 R, Uint8 G, Uint8 B,Uint32 x,Uint32 y)
|
|
{
|
|
Uint32 color = SDL_MapRGB(screen->format, R, G, B);
|
|
|
|
switch (screen->format->BytesPerPixel) {
|
|
case 1: {
|
|
Uint8 *bufp;
|
|
|
|
bufp = (Uint8 *)screen->pixels + y*screen->pitch + x;
|
|
*bufp = color;
|
|
}
|
|
break;
|
|
|
|
case 2: {
|
|
Uint16 *bufp;
|
|
|
|
bufp = (Uint16 *)screen->pixels + y*screen->pitch/2 + x;
|
|
*bufp = color;
|
|
}
|
|
break;
|
|
|
|
case 3: {
|
|
Uint8 *bufp;
|
|
|
|
bufp = (Uint8 *)screen->pixels + y*screen->pitch + x;
|
|
*(bufp+screen->format->Rshift/8) = R;
|
|
*(bufp+screen->format->Gshift/8) = G;
|
|
*(bufp+screen->format->Bshift/8) = B;
|
|
}
|
|
break;
|
|
|
|
case 4: {
|
|
Uint32 *bufp;
|
|
|
|
bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;
|
|
*bufp = color;
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
*/
|
|
void sdl_display_init (DisplayState * ds, int full_screen);
|
|
SDL_Event *sdl_getmouse_down ();
|
|
SDL_Event *sdl_getmouse_up ();
|
|
#endif
|
|
|
|
#endif
|