En fait je viens de me rendre compte que "SDL_LoadBMP()" et "SDL_SaveBMP()" ne sont pas des fonctions mais des macros. J'ai donc modifié le fichier Import avec les éléments ci-dessous :
Malheureusement, j'ai un message d'erreur du type "Invalid memory access". Et là, je ne suis pas tellement plus avancé.
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Importation des Fonctions SDL
; Nom du fichier : General - SDL Import.pb
; Version du fichier : 0.0.2
; Programmation : En cours
; Programmé par : Guimauve
; Date : 14-02-2010
; Mise à jour : 28-02-2010
; Code PureBasic : 4.41
; Plateforme : Linux
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Structure SDL_SysWMinfo
version.SDL_version
data_.l
EndStructure
Structure Point
x.w
y.w
EndStructure
Import "/usr/lib/libSDL.so"
; <<<<<<<<<<<<<<<<<<<
; <<<<< General <<<<<
SDL_Init(Flag.l)
SDL_InitSubSystem(Flag.l)
SDL_QuitSubSystem(Flag.l)
SDL_Quit()
SDL_WasInit(Flag.l)
SDL_VERSION(*VersionA.SDL_version); --> Useless
SDL_GetError()
SDL_ClearError()
SDL_LoadObject(SO_file.s)
SDL_Linked_Version()
; SDL_SetError (const char *fmt, ...) ; --> À VALIDER
; SDL_Error(SDL_errorcode code) ; --> À VALIDER
; SDL_LoadFunction(*handle.i, Name.s) ; --> À VALIDER
; SDL_UnloadObject(*handle.i) ; --> À VALIDER
; <<<<<<<<<<<<<<<<<
; <<<<< Video <<<<<
SDL_GetVideoSurface()
SDL_GetVideoInfo()
SDL_VideoDriverName(namebuf.s, maxlen.l)
SDL_ListModes(*Format.SDL_PixelFormat, Flags.l)
SDL_VideoModeOK(Width.l, Height.l, BitsPerPixel.l, Flags.l)
SDL_SetVideoMode(Width.l, Height.l, BitsPerPixel.l, Flags.l)
SDL_UpdateRect(*Screen.SDL_Surface, x.l, y.l, Width.l, Height.l)
SDL_UpdateRects(*Screen.SDL_Surface, NumRects.l, *Rects.SDL_Rect)
SDL_Flip(*Screen.SDL_Surface)
SDL_SetColors(*Surface.SDL_Surface, *colors.SDL_Color, firstcolor.l, ncolors.l)
SDL_SetPalette(*Surface.SDL_Surface, Flags.l, *colors.SDL_Color, firstcolor.l, ncolors.l)
SDL_SetGamma(Red_gamma.f, Green_gamma.f, Blue_gamma.f)
SDL_MapRGB(*Format.SDL_PixelFormat, Red.a, Green.a, Blue.a)
SDL_MapRGBA(*Format.SDL_PixelFormat, Red.a, Green.a, Blue.a, Alpha.a)
SDL_GetRGB(Pixel.l, *Format.SDL_PixelFormat, *Red.a, *Green.a, *Blue.a) ; --> À VALIDER
SDL_GetRGBA(Pixel.l, *Format.SDL_PixelFormat, *Red.a, *Green.a, *Blue.a, *Alpha.a) ; --> À VALIDER
SDL_CreateRGBSurface(Flags.l, Width.l, Height.l, BitsPerPixel.l, Rmask.l, Gmask.l, Bmask.l, Amask.l)
SDL_CreateRGBSurfaceFrom(*pixels.i, Width.l, Height.l, Depth.l, Pitch.l, Rmask.l, Gmask.l, Bmask.l, Amask.l) ; --> À VALIDER
SDL_FreeSurface(*Surface.SDL_Surface)
SDL_LockSurface(*Surface.SDL_Surface)
SDL_UnlockSurface(*Surface.SDL_Surface)
SDL_ConvertSurface(*Source.SDL_Surface, *fmt.SDL_PixelFormat, Flags.l)
SDL_DisplayFormat(*Surface.SDL_Surface)
SDL_DisplayFormatAlpha(*Surface.SDL_Surface)
; SDL_LoadBMP(FileName.s) ; ---> NE FONCTIONNE PAS
; SDL_SaveBMP(*Surface.SDL_Surface, FileName.s) ; ---> NE FONCTIONNE PAS
SDL_LoadBMP_RW(*src.SDL_RWops, freesrc.l)
SDL_SaveBMP_RW(*Surface.SDL_Surface, *dst.SDL_RWops , freedst.l)
SDL_SetColorKey(*Surface.SDL_Surface, Flag.l, Key.l)
SDL_SetAlpha(*Surface.SDL_Surface, Flags.l, Alpha.l)
SDL_SetClipRect(*Surface.SDL_Surface, *Rect.SDL_Rect)
SDL_GetClipRect(*Surface.SDL_Surface, *Rect.SDL_Rect)
SDL_BlitSurface(*Source.SDL_Surface, *SourceRect.SDL_Rect, *Dest.SDL_Surface, *DestRect.SDL_Rect)
SDL_FillRect(*Dest.SDL_Surface, *DestRect.SDL_Rect, Color.l)
; SDL_GetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable) ; --> À VALIDER
; SDL_SetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable) ; --> À VALIDER
SDL_GL_LoadLibrary(Path.s)
SDL_GL_GetProcAddress(Proc.s)
SDL_GL_GetAttribute(Attribute.l, *Value.l) ; --> À VALIDER
SDL_GL_SetAttribute(Attribute.l, Value.l) ; --> À VALIDER
SDL_GL_SwapBuffers()
SDL_CreateYUVOverlay(Width.l, Height.l, Format.l, *Display.SDL_Surface)
SDL_LockYUVOverlay(*Overlay.SDL_Overlay)
SDL_UnlockYUVOverlay(*Overlay.SDL_Overlay)
SDL_DisplayYUVOverlay(*Overlay.SDL_Overlay, *DestRect.SDL_Rect)
SDL_FreeYUVOverlay(*Overlay.SDL_Overlay)
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Window management <<<<<
SDL_WM_SetCaption(Title.s, Icon.s)
SDL_WM_SetIcon(*icon.SDL_Surface, *mask.a)
SDL_WM_IconifyWindow()
SDL_WM_ToggleFullScreen(*Surface.SDL_Surface)
SDL_WM_GrabInput(Mode.b)
; SDL_GetWMInfo(*info.SDL_SysWMinfo)
; SDL_WM_GetCaption(char **title, char **icon) ; À VALIDER
; <<<<<<<<<<<<<<<<<<
; <<<<< Events <<<<<
SDL_PumpEvents()
SDL_PeepEvents(*Events.SDL_Event, numevents.l, Action.l, Mask.l)
SDL_PollEvent(*Event.SDL_Event)
SDL_WaitEvent(*Event.SDL_Event)
SDL_PushEvent(*Event.SDL_Event)
SDL_GetEventFilter()
SDL_EventState(Type.a, State.l)
SDL_GetKeyState(*numkeys.l)
SDL_GetModState()
SDL_SetModState(Modstate.l)
SDL_GetKeyName(Key.l)
SDL_EnableUNICODE(Enable.l)
SDL_EnableKeyRepeat(Delay.l, Interval.l)
SDL_GetMouseState(*x.l, *y.l)
SDL_GetRelativeMouseState(*x.l, *y.l)
SDL_GetAppState()
SDL_JoystickEventState(State.l)
SDL_StartTextInput()
SDL_StopTextInput()
SDL_SetTextInputRect(*Rect.SDL_Rect)
; SDL_SetEventFilter(SDL_EventFilter filter) ; --> À VALIDER
; <<<<<<<<<<<<<<<<<
; <<<<< Mouse <<<<<
SDL_WarpMouse(x.w, y.w)
SDL_CreateCursor(*data_.a, *mask.a, w.l, h.l, hot_x.l, hot_y.l) ; À VALIDER
SDL_FreeCursor(*Cursor.SDL_Cursor)
SDL_SetCursor(*Cursor.SDL_Cursor)
SDL_GetCursor()
SDL_ShowCursor(Toggle.l)
; <<<<<<<<<<<<<<<<<<<<
; <<<<< Joystick <<<<<
SDL_NumJoysticks()
SDL_JoystickUpdate()
SDL_JoystickName(Index.l)
SDL_JoystickOpen(Index.l)
SDL_JoystickOpened(Index.l)
SDL_JoystickIndex(*JoystickA.i)
SDL_JoystickNumAxes(*JoystickA.i)
SDL_JoystickNumBalls(*JoystickA.i)
SDL_JoystickNumHats(*JoystickA.i)
SDL_JoystickNumButtons(*JoystickA.i)
SDL_JoystickClose(*JoystickA.i)
SDL_JoystickGetAxis(*JoystickA.i, Axis.l)
SDL_JoystickGetHat(*JoystickA.i, Hat.l)
SDL_JoystickGetButton(*JoystickA.i, Button.l)
SDL_JoystickGetBall(*JoystickA.i, Ball.l, *Dx.l, *Dy.l)
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Files (RWops) <<<<<
SDL_RWFromFile(FileName.s, Mode.s)
; SDL_RWFromFP(FILE *fp, int autoclose)
SDL_AllocRW()
SDL_FreeRW(*Context.SDL_RWops)
EndImport
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur EventType <<<<<
Macro SDL_EventType(SDL_EventA)
SDL_EventA\type
EndMacro
Macro SDL_KeySym(SDL_EventA)
SDL_EventA\key\keysym\sym
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Évènement à propos de la souris <<<<<
Macro SDL_MouseButtonEvent_Button()
SDL_EventA\button\button
EndMacro
Macro SDL_MouseButtonEvent_State()
SDL_EventA\button\state
EndMacro
Macro SDL_MouseButtonEvent_X()
SDL_EventA\button\x
EndMacro
Macro SDL_MouseButtonEvent_Y()
SDL_EventA\button\y
EndMacro
Macro SDL_MouseButtonEvent_Position(Position)
Position\x = SDL_MouseButtonEvent_X()
Position\y = SDL_MouseButtonEvent_Y()
EndMacro
Macro SDL_MouseMotionEvent_State()
SDL_EventA\Motion\state
EndMacro
Macro SDL_MouseMotionEvent_X()
SDL_EventA\Motion\x
EndMacro
Macro SDL_MouseMotionEvent_Y()
SDL_EventA\Motion\y
EndMacro
Macro SDL_MouseMotionEvent_Position(Position)
Position\x = SDL_MouseMotionEvent_X()
Position\y = SDL_MouseMotionEvent_Y()
EndMacro
Macro SDL_MouseMotionEvent_XRel()
SDL_EventA\Motion\xrel
EndMacro
Macro SDL_MouseMotionEvent_YRel()
SDL_EventA\Motion\yrel
EndMacro
Macro SDL_MouseMotionEvent_PositionRel(Position)
Position\x = SDL_MouseMotionEvent_XRel()
Position\y = SDL_MouseMotionEvent_YRel()
EndMacro
Procedure.i SDL_LoadBMP(FileName.s)
*src.SDL_RWops = SDL_RWFromFile(FileName, "rb")
*Surface.SDL_Surface = SDL_LoadBMP_RW(*src, 1)
ProcedureReturn *Surface
EndProcedure
Procedure SDL_SaveBMP(*Surface.SDL_Surface, FileName.s)
*dst.SDL_RWops = SDL_RWFromFile(FileName, "wb")
SDL_SaveBMP_RW(*Surface, *dst, 1)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<