Files
commandergenius/project/jni/application/ltris-1.0.15/src/sdl.h
T
2010-12-24 12:04:27 +00:00

159 lines
4.6 KiB
C

/***************************************************************************
sdl.h - description
-------------------
begin : Thu Apr 20 2000
copyright : (C) 2000 by Michael Speck
email : kulkanie@gmx.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef SDL_H
#define SDL_H
#include <SDL.h>
#define BITDEPTH 16
#ifdef __cplusplus
extern "C" {
#endif
// draw region //
#define DEST(p, i, j, k, l) {sdl.d.s = p; sdl.d.r.x = i; sdl.d.r.y = j; sdl.d.r.w = k; sdl.d.r.h = l;}
#define SOURCE(p, i, j) {sdl.s.s = p; sdl.s.r.x = i; sdl.s.r.y = j; sdl.s.r.w = sdl.d.r.w; sdl.s.r.h = sdl.d.r.h;}
#define FULL_DEST(p) {sdl.d.s = p; sdl.d.r.x = 0; sdl.d.r.y = 0; sdl.d.r.w = (p)->w; sdl.d.r.h = (p)->h;}
#define FULL_SOURCE(p) {sdl.s.s = p; sdl.s.r.x = 0; sdl.s.r.y = 0; sdl.s.r.w = sdl.d.r.w; sdl.s.r.h = sdl.d.r.h;}
typedef struct {
SDL_Surface *s;
SDL_Rect r;
} DrawRgn;
// Sdl Surface //
#define SDL_NONFATAL 0x10000000
SDL_Surface* load_surf(char *fname, int f);
SDL_Surface* create_surf(int w, int h, int f);
void free_surf( SDL_Surface **surf );
inline void lock_surf(SDL_Surface *sur);
inline void unlock_surf(SDL_Surface *sur);
void blit_surf(void);
void alpha_blit_surf(int alpha);
void fill_surf(int c);
void set_surf_clip( SDL_Surface *surf, int x, int y, int w, int h );
Uint32 set_pixel( SDL_Surface *surf, int x, int y, int pixel );
Uint32 get_pixel( SDL_Surface *surf, int x, int y );
/* draw a shadowed frame and darken contents which starts at cx,cy */
void draw_3dframe( SDL_Surface *surf, int cx, int cy, int w, int h, int border );
// Sdl Font //
enum {
OPAQUE = 0
};
enum {
ALIGN_X_LEFT = (1L<<1),
ALIGN_X_CENTER = (1L<<2),
ALIGN_X_RIGHT = (1L<<3),
ALIGN_Y_TOP = (1L<<4),
ALIGN_Y_CENTER = (1L<<5),
ALIGN_Y_BOTTOM = (1L<<6)
};
typedef struct {
SDL_Surface *pic;
int align;
int color;
int height;
char char_width[256];
int char_offset[256];
char keys[256];
char offset;
char length;
//last written rect
int save_last;
int last_x;
int last_y;
int last_width;
int last_height;
} Font;
Font* load_font(char *fname);
Font* load_fixed_font(char *fname, int off, int len, int w);
void free_font(Font **sfnt);
int write_text(Font *sfnt, SDL_Surface *dest, int x, int y, char *str, int alpha);
inline void lock_font(Font *sfnt);
inline void unlock_font(Font *sfnt);
SDL_Rect last_write_rect(Font *fnt);
int text_width(Font *fnt, char *str);
/* mouse buttons */
enum {
LEFT_BUTTON = 1,
MIDDLE_BUTTON = 2,
RIGHT_BUTTON = 3,
WHEEL_UP = 4,
WHEEL_DOWN = 5,
BUTTON_COUNT
};
/* video modes */
typedef struct {
int id;
char name[64];
int width, height, depth;
int flags;
int ok;
} Video_Mode;
/* Sdl */
enum {
RECT_LIMIT = 200,
FADE_DEF_TIME = 500,
FADE_IN = 0,
FADE_OUT = 1
};
typedef struct {
SDL_Surface *screen;
DrawRgn d, s;
int rect_count;
SDL_Rect rect[RECT_LIMIT];
int fade;
} Sdl;
void init_sdl( int f );
void quit_sdl();
Video_Mode def_video_mode();
Video_Mode std_video_mode( int id );
Video_Mode video_mode( int width, int height, int depth, int flags );
Video_Mode* cur_video_mode();
char** get_mode_names( int *count );
int set_video_mode( Video_Mode mode );
void hardware_cap();
inline void refresh_screen( int x, int y, int w, int h );
void refresh_rects();
void add_refresh_rect(int x, int y, int w, int h);
int wait_for_key();
void wait_for_click();
inline void lock_screen();
inline void unlock_screen();
inline void flip_screen();
void fade_screen( int type, int ms );
void take_screenshot( int i );
/* cursor */
/* creates cursor */
SDL_Cursor* create_cursor( int width, int height, int hot_x, int hot_y, char *source );
/* timer */
inline int get_time();
inline void reset_timer();
#ifdef __cplusplus
};
#endif
#endif