MCUME/MCUME_teensy/teensynofrendo/vid_drv.h

146 wiersze
4.3 KiB
C
Executable File

/*
** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com)
**
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of version 2 of the GNU Library General
** Public License as published by the Free Software Foundation.
**
** This program 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. To obtain a
** copy of the GNU Library General Public License, write to the Free
** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** Any permitted reproduction of these routines, in whole or in part,
** must bear this legend.
**
**
** vid_drv.h
**
** Video driver
** $Id: vid_drv.h,v 1.2 2001/04/27 14:37:11 neil Exp $
*/
#ifndef _VID_DRV_H_
#define _VID_DRV_H_
#include "bitmap.h"
typedef struct viddriver_s
{
/* name of driver */
const char *name;
/* init function - return 0 on success, nonzero on failure */
int (*init)(int width, int height);
/* clean up after driver (can be NULL) */
void (*shutdown)(void);
/* set a video mode - return 0 on success, nonzero on failure */
int (*set_mode)(int width, int height);
/* set up a palette */
void (*set_palette)(rgb_t *palette);
/* custom bitmap clear (can be NULL) */
void (*clear)(uint8 color);
/* lock surface for writing (required) */
bitmap_t *(*lock_write)(void);
/* free a locked surface (can be NULL) */
void (*free_write)(int num_dirties, rect_t *dirty_rects);
/* custom blitter - num_dirties == -1 if full blit required */
void (*custom_blit)(bitmap_t *primary, int num_dirties,
rect_t *dirty_rects);
/* immediately invalidate the buffer, i.e. full redraw */
bool invalidate;
} viddriver_t;
/* TODO: filth */
extern bitmap_t *vid_getbuffer(void);
extern int vid_init(int width, int height, viddriver_t *osd_driver);
extern void vid_shutdown(void);
extern int vid_setmode(int width, int height);
extern void vid_setpalette(rgb_t *pal);
extern void vid_blit(bitmap_t *bitmap, int src_x, int src_y, int dest_x,
int dest_y, int blit_width, int blit_height);
extern void vid_flush(void);
#endif /* _VID_DRV_H_ */
/*
** $Log: vid_drv.h,v $
** Revision 1.2 2001/04/27 14:37:11 neil
** wheeee
**
** Revision 1.1.1.1 2001/04/27 07:03:54 neil
** initial
**
** Revision 1.22 2000/11/05 22:53:13 matt
** only one video driver per system, please
**
** Revision 1.21 2000/11/05 16:37:18 matt
** rolled rgb.h into bitmap.h
**
** Revision 1.20 2000/11/05 06:23:41 matt
** thinlib spawns changes
**
** Revision 1.19 2000/10/10 13:58:14 matt
** stroustrup squeezing his way in the door
**
** Revision 1.18 2000/10/10 13:03:54 matt
** Mr. Clean makes a guest appearance
**
** Revision 1.17 2000/08/16 02:53:04 matt
** changed init() interface a wee bit
**
** Revision 1.16 2000/07/31 04:28:47 matt
** one million cleanups
**
** Revision 1.15 2000/07/28 07:25:49 neil
** Video driver has an invalidate flag, telling vid_drv not to calculate dirties for the next frame
**
** Revision 1.14 2000/07/27 23:49:52 matt
** no more getmode
**
** Revision 1.13 2000/07/27 04:30:37 matt
** change to get_mode api
**
** Revision 1.12 2000/07/27 04:08:04 matt
** char * -> const char *
**
** Revision 1.11 2000/07/27 04:05:58 matt
** changed place where name goes
**
** Revision 1.10 2000/07/27 01:16:22 matt
** api changes for new main and dirty rects
**
** Revision 1.9 2000/07/26 21:36:14 neil
** Big honkin' change -- see the mailing list
**
** Revision 1.8 2000/07/24 04:33:57 matt
** skeleton of dirty rectangle code in place
**
** Revision 1.7 2000/07/10 19:07:57 matt
** added custom clear() member call to video driver
**
** Revision 1.6 2000/07/10 03:04:15 matt
** removed scanlines, backbuffer from custom blit
**
** Revision 1.5 2000/07/10 01:03:20 neil
** New video scheme allows for custom blitters to be determined by the driver at runtime
**
** Revision 1.4 2000/07/09 03:34:47 matt
** temporary cleanup
**
** Revision 1.3 2000/07/07 20:17:35 matt
** better custom blitting support
**
** Revision 1.2 2000/07/07 18:11:38 neil
** Generalizing the video driver
**
** Revision 1.1 2000/07/06 16:48:47 matt
** initial revision
**
*/