# -*- indent-tabs-mode: t -*-

# Soya 3D
# Copyright (C) 2003-2004 Jean-Baptiste LAMY -- jiba@tuxfamily.org
#
# 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.
#
# 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

# This is only a PARTIAL definition file -- i've defined only the stuff i need

cdef extern from "SDL/SDL_endian.h":
	pass

SDL_ALLEVENTS = 0xFFFFFFFF

cdef extern from "SDL/SDL.h":
	ctypedef struct SDL_Surface
	ctypedef struct SDL_Joystick
	ctypedef struct SDL_PixelFormat:
		#SDL_Palette *palette
		unsigned char BitsPerPixel
		unsigned char BytesPerPixel
		unsigned char Rloss
		unsigned char Gloss
		unsigned char Bloss
		unsigned char Aloss
		unsigned char Rshift
		unsigned char Gshift
		unsigned char Bshift
		unsigned char Ashift
		unsigned int  Rmask
		unsigned int  Gmask
		unsigned int  Bmask
		unsigned int  Amask
		unsigned int  colorkey # RGB color key information
		unsigned char alpha    # Alpha value information (per-surface alpha)
		
	ctypedef struct SDL_VideoInfo:
		unsigned int hw_available # Flag: Can you create hardware surfaces?
		unsigned int wm_available # Flag: Can you talk to a window manager?
		unsigned int UnusedBits1
		unsigned int UnusedBits2
		unsigned int blit_hw      # Flag: Accelerated blits HW --> HW
		unsigned int blit_hw_CC   # Flag: Accelerated blits with Colorkey
		unsigned int blit_hw_A    # Flag: Accelerated blits with Alpha
		unsigned int blit_sw      # Flag: Accelerated blits SW --> HW
		unsigned int blit_sw_CC   # Flag: Accelerated blits with Colorkey
		unsigned int blit_sw_A    # Flag: Accelerated blits with Alpha
		unsigned int blit_fill    # Flag: Accelerated color fill
		unsigned int UnusedBits3
		unsigned int video_mem    # The total amount of video memory (in K)
		SDL_PixelFormat *vfmt  # Value: The format of the video surface

	ctypedef struct SDL_keysym:
		char  scancode
		int   sym
		int   mod
		short unicode
		
	ctypedef struct SDL_KeyboardEvent:
		char       type
		char       which
		char       state
		SDL_keysym keysym
		
	ctypedef struct SDL_MouseMotionEvent:
		char       type
		char       which
		char       state
		short      x, y, xrel, yrel
		
	ctypedef struct SDL_MouseButtonEvent:
		char       type
		char       which
		char       button
		char       state
		short      x, y
		
	ctypedef struct SDL_JoyAxisEvent:
		char       type
		char       which
		char       axis
		short      value
		
	ctypedef struct SDL_JoyButtonEvent:
		char       type
		char       which
		char       button
		char       state
		
	ctypedef struct SDL_ResizeEvent:
		char       type
		int        w
		int        h
		
	ctypedef struct SDL_ExposeEvent:
		char       type
		
	ctypedef struct SDL_QuitEvent:
		char       type
		
	ctypedef union SDL_Event:
		char type
		SDL_KeyboardEvent    key
		SDL_MouseMotionEvent motion
		SDL_MouseButtonEvent button
		SDL_JoyAxisEvent     jaxis
		SDL_JoyButtonEvent   jbutton
		SDL_ResizeEvent      resize
		SDL_ExposeEvent      expose
		SDL_QuitEvent        quit

	ctypedef enum SDL_GrabMode:
		SDL_GRAB_QUERY
		SDL_GRAB_OFF
		SDL_GRAB_ON
		
	int SDL_INIT_VIDEO
	int SDL_INIT_JOYSTICK
	int SDL_INIT_AUDIO
	int SDL_INIT_NOPARACHUTE
	int SDL_ENABLE
	int SDL_DISABLE
	int SDL_OPENGL
	int SDL_HWACCEL
	int SDL_HWSURFACE
	int SDL_SWSURFACE
	int SDL_HWPALETTE
	int SDL_FULLSCREEN
	int SDL_RESIZABLE
	int SDL_NOEVENT
	int SDL_ACTIVEEVENT
	int SDL_KEYDOWN
	int SDL_KEYUP
	int SDL_MOUSEMOTION
	int SDL_MOUSEBUTTONDOWN
	int SDL_MOUSEBUTTONUP
	int SDL_JOYAXISMOTION
	int SDL_JOYBALLMOTION
	int SDL_JOYHATMOTION
	int SDL_JOYBUTTONDOWN
	int SDL_JOYBUTTONUP
	int SDL_QUIT
	int SDL_SYSWMEVENT
	int SDL_EVENT_RESERVEDA
	int SDL_EVENT_RESERVEDB
	int SDL_VIDEORESIZE
	int SDL_VIDEOEXPOSE
	int SDL_USEREVENT
	int SDL_NUMEVENTS
	
	enum SDL_GLattr:
		SDL_GL_RED_SIZE,
		SDL_GL_GREEN_SIZE,
		SDL_GL_BLUE_SIZE,
		SDL_GL_ALPHA_SIZE,
		SDL_GL_BUFFER_SIZE,
		SDL_GL_DOUBLEBUFFER,
		SDL_GL_DEPTH_SIZE,
		SDL_GL_STENCIL_SIZE,
		SDL_GL_ACCUM_RED_SIZE,
		SDL_GL_ACCUM_GREEN_SIZE,
		SDL_GL_ACCUM_BLUE_SIZE,
		SDL_GL_ACCUM_ALPHA_SIZE,
		SDL_GL_STEREO
	
	void            SDL_Quit           ()
	int             SDL_Init           (unsigned int flags)
	char*           SDL_GetError       ()
	void            SDL_WM_SetCaption  (char* title, char* icon)
	int             SDL_SetGamma       (float redgamma, float greengamma, float bluegamma)
	SDL_VideoInfo*  SDL_GetVideoInfo   ()
	SDL_Surface*    SDL_SetVideoMode   (int width, int height, int bpp, unsigned int flags)
	int             SDL_GL_SetAttribute(SDL_GLattr attr, int value)
	void            SDL_JoystickClose  (SDL_Joystick* joystick)
	int             SDL_NumJoysticks   ()
	SDL_Joystick*   SDL_JoystickOpen   (int device_index)
	void            SDL_GL_SwapBuffers ()
	int             SDL_PollEvent      (SDL_Event*)
	void            SDL_ShowCursor     (int)
	int             SDL_Swap32         (int)
	int             SDL_GetModState    ()
	void            SDL_JoystickEventState(int)
	void            SDL_WarpMouse(int x,int y)
	int             SDL_GetRelativeMouseState(int *x, int *y)
	SDL_GrabMode    SDL_WM_GrabInput(SDL_GrabMode mode)
	int             SDL_EnableUNICODE(int enable)

	ctypedef enum SDL_eventaction:
		SDL_ADDEVENT
		SDL_PEEKEVENT
		SDL_GETEVENT

		
	void            SDL_PumpEvents()
	int             SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, int mask)
 
	# Key and mod consts
	int KMOD_NONE
	int KMOD_LSHIFT
	int KMOD_RSHIFT
	int KMOD_LCTRL
	int KMOD_RCTRL
	int KMOD_LALT
	int KMOD_RALT
	int KMOD_LMETA
	int KMOD_RMETA
	int KMOD_NUM
	int KMOD_CAPS
	int KMOD_MODE
	int KMOD_RESERVED
	int SDLK_UNKNOWN
	int SDLK_FIRST
	int SDLK_BACKSPACE
	int SDLK_TAB
	int SDLK_CLEAR
	int SDLK_RETURN
	int SDLK_PAUSE
	int SDLK_ESCAPE
	int SDLK_SPACE
	int SDLK_EXCLAIM
	int SDLK_QUOTEDBL
	int SDLK_HASH
	int SDLK_DOLLAR
	int SDLK_AMPERSAND
	int SDLK_QUOTE
	int SDLK_LEFTPAREN
	int SDLK_RIGHTPAREN
	int SDLK_ASTERISK
	int SDLK_PLUS
	int SDLK_COMMA
	int SDLK_MINUS
	int SDLK_PERIOD
	int SDLK_SLASH
	int SDLK_0
	int SDLK_1
	int SDLK_2
	int SDLK_3
	int SDLK_4
	int SDLK_5
	int SDLK_6
	int SDLK_7
	int SDLK_8
	int SDLK_9
	int SDLK_COLON
	int SDLK_SEMICOLON
	int SDLK_LESS
	int SDLK_EQUALS
	int SDLK_GREATER
	int SDLK_QUESTION
	int SDLK_AT
	int SDLK_LEFTBRACKET
	int SDLK_BACKSLASH
	int SDLK_RIGHTBRACKET
	int SDLK_CARET
	int SDLK_UNDERSCORE
	int SDLK_BACKQUOTE
	int SDLK_a
	int SDLK_b
	int SDLK_c
	int SDLK_d
	int SDLK_e
	int SDLK_f
	int SDLK_g
	int SDLK_h
	int SDLK_i
	int SDLK_j
	int SDLK_k
	int SDLK_l
	int SDLK_m
	int SDLK_n
	int SDLK_o
	int SDLK_p
	int SDLK_q
	int SDLK_r
	int SDLK_s
	int SDLK_t
	int SDLK_u
	int SDLK_v
	int SDLK_w
	int SDLK_x
	int SDLK_y
	int SDLK_z
	int SDLK_DELETE
	int SDLK_WORLD_0
	int SDLK_WORLD_1
	int SDLK_WORLD_2
	int SDLK_WORLD_3
	int SDLK_WORLD_4
	int SDLK_WORLD_5
	int SDLK_WORLD_6
	int SDLK_WORLD_7
	int SDLK_WORLD_8
	int SDLK_WORLD_9
	int SDLK_WORLD_10
	int SDLK_WORLD_11
	int SDLK_WORLD_12
	int SDLK_WORLD_13
	int SDLK_WORLD_14
	int SDLK_WORLD_15
	int SDLK_WORLD_16
	int SDLK_WORLD_17
	int SDLK_WORLD_18
	int SDLK_WORLD_19
	int SDLK_WORLD_20
	int SDLK_WORLD_21
	int SDLK_WORLD_22
	int SDLK_WORLD_23
	int SDLK_WORLD_24
	int SDLK_WORLD_25
	int SDLK_WORLD_26
	int SDLK_WORLD_27
	int SDLK_WORLD_28
	int SDLK_WORLD_29
	int SDLK_WORLD_30
	int SDLK_WORLD_31
	int SDLK_WORLD_32
	int SDLK_WORLD_33
	int SDLK_WORLD_34
	int SDLK_WORLD_35
	int SDLK_WORLD_36
	int SDLK_WORLD_37
	int SDLK_WORLD_38
	int SDLK_WORLD_39
	int SDLK_WORLD_40
	int SDLK_WORLD_41
	int SDLK_WORLD_42
	int SDLK_WORLD_43
	int SDLK_WORLD_44
	int SDLK_WORLD_45
	int SDLK_WORLD_46
	int SDLK_WORLD_47
	int SDLK_WORLD_48
	int SDLK_WORLD_49
	int SDLK_WORLD_50
	int SDLK_WORLD_51
	int SDLK_WORLD_52
	int SDLK_WORLD_53
	int SDLK_WORLD_54
	int SDLK_WORLD_55
	int SDLK_WORLD_56
	int SDLK_WORLD_57
	int SDLK_WORLD_58
	int SDLK_WORLD_59
	int SDLK_WORLD_60
	int SDLK_WORLD_61
	int SDLK_WORLD_62
	int SDLK_WORLD_63
	int SDLK_WORLD_64
	int SDLK_WORLD_65
	int SDLK_WORLD_66
	int SDLK_WORLD_67
	int SDLK_WORLD_68
	int SDLK_WORLD_69
	int SDLK_WORLD_70
	int SDLK_WORLD_71
	int SDLK_WORLD_72
	int SDLK_WORLD_73
	int SDLK_WORLD_74
	int SDLK_WORLD_75
	int SDLK_WORLD_76
	int SDLK_WORLD_77
	int SDLK_WORLD_78
	int SDLK_WORLD_79
	int SDLK_WORLD_80
	int SDLK_WORLD_81
	int SDLK_WORLD_82
	int SDLK_WORLD_83
	int SDLK_WORLD_84
	int SDLK_WORLD_85
	int SDLK_WORLD_86
	int SDLK_WORLD_87
	int SDLK_WORLD_88
	int SDLK_WORLD_89
	int SDLK_WORLD_90
	int SDLK_WORLD_91
	int SDLK_WORLD_92
	int SDLK_WORLD_93
	int SDLK_WORLD_94
	int SDLK_WORLD_95
	int SDLK_KP0
	int SDLK_KP1
	int SDLK_KP2
	int SDLK_KP3
	int SDLK_KP4
	int SDLK_KP5
	int SDLK_KP6
	int SDLK_KP7
	int SDLK_KP8
	int SDLK_KP9
	int SDLK_KP_PERIOD
	int SDLK_KP_DIVIDE
	int SDLK_KP_MULTIPLY
	int SDLK_KP_MINUS
	int SDLK_KP_PLUS
	int SDLK_KP_ENTER
	int SDLK_KP_EQUALS
	int SDLK_UP
	int SDLK_DOWN
	int SDLK_RIGHT
	int SDLK_LEFT
	int SDLK_INSERT
	int SDLK_HOME
	int SDLK_END
	int SDLK_PAGEUP
	int SDLK_PAGEDOWN
	int SDLK_F1
	int SDLK_F2
	int SDLK_F3
	int SDLK_F4
	int SDLK_F5
	int SDLK_F6
	int SDLK_F7
	int SDLK_F8
	int SDLK_F9
	int SDLK_F10
	int SDLK_F11
	int SDLK_F12
	int SDLK_F13
	int SDLK_F14
	int SDLK_F15
	int SDLK_NUMLOCK
	int SDLK_CAPSLOCK
	int SDLK_SCROLLOCK
	int SDLK_RSHIFT
	int SDLK_LSHIFT
	int SDLK_RCTRL
	int SDLK_LCTRL
	int SDLK_RALT
	int SDLK_LALT
	int SDLK_RMETA
	int SDLK_LMETA
	int SDLK_LSUPER
	int SDLK_RSUPER
	int SDLK_MODE
	int SDLK_COMPOSE
	int SDLK_HELP
	int SDLK_PRINT
	int SDLK_SYSREQ
	int SDLK_BREAK
	int SDLK_MENU
	int SDLK_POWER
	int SDLK_EURO
	int SDLK_UNDO
