source: trunk/src/lib/sdl_image.cc @ 109

Last change on this file since 109 was 109, checked in by epyon, 12 years ago
  • prevent multiple loadings of the same library
File size: 2.9 KB
Line 
1// Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
2// http://chaosforge.org/
3//
4// This file is part of NV Libraries.
5// For conditions of distribution and use, see copyright notice in nv.hh
6
7#include "nv/lib/sdl_image.hh"
8
9#if defined( NV_SDL_DYNAMIC )
10
11#include "nv/library.hh"
12
13/* SDL_image.h functions */
14const SDL_version * (NV_SDL_APIENTRY *IMG_Linked_Version) (void) = nullptr;
15int (NV_SDL_APIENTRY *IMG_Init) (int flags) = nullptr;
16void (NV_SDL_APIENTRY *IMG_Quit) (void) = nullptr;
17SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTyped_RW) (SDL_RWops *src, int freesrc, char *type) = nullptr;
18SDL_Surface * (NV_SDL_APIENTRY *IMG_Load) (const char *file) = nullptr;
19SDL_Surface * (NV_SDL_APIENTRY *IMG_Load_RW) (SDL_RWops *src, int freesrc) = nullptr;
20int (NV_SDL_APIENTRY *IMG_isICO) (SDL_RWops *src) = nullptr;
21int (NV_SDL_APIENTRY *IMG_isCUR) (SDL_RWops *src) = nullptr;
22int (NV_SDL_APIENTRY *IMG_isBMP) (SDL_RWops *src) = nullptr;
23int (NV_SDL_APIENTRY *IMG_isGIF) (SDL_RWops *src) = nullptr;
24int (NV_SDL_APIENTRY *IMG_isJPG) (SDL_RWops *src) = nullptr;
25int (NV_SDL_APIENTRY *IMG_isPNG) (SDL_RWops *src) = nullptr;
26int (NV_SDL_APIENTRY *IMG_isTIF) (SDL_RWops *src) = nullptr;
27SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadICO_RW) (SDL_RWops *src) = nullptr;
28SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadCUR_RW) (SDL_RWops *src) = nullptr;
29SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadBMP_RW) (SDL_RWops *src) = nullptr;
30SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadGIF_RW) (SDL_RWops *src) = nullptr;
31SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadJPG_RW) (SDL_RWops *src) = nullptr;
32SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadPNG_RW) (SDL_RWops *src) = nullptr;
33SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTGA_RW) (SDL_RWops *src) = nullptr;
34SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTIF_RW) (SDL_RWops *src) = nullptr;
35
36bool nv::load_sdl_image_library( const char* path )
37{
38#       define NV_SDL_IMAGE_LOAD( symbol ) *(void **) (&symbol) = sdl_image_library.get(#symbol);
39        static nv::library sdl_image_library;
40        if ( sdl_image_library.is_open() ) return true;
41        sdl_image_library.open( path );
42
43        NV_SDL_IMAGE_LOAD( IMG_Linked_Version );
44        NV_SDL_IMAGE_LOAD( IMG_Init );
45        NV_SDL_IMAGE_LOAD( IMG_Quit );
46        NV_SDL_IMAGE_LOAD( IMG_LoadTyped_RW );
47        NV_SDL_IMAGE_LOAD( IMG_Load );
48        NV_SDL_IMAGE_LOAD( IMG_Load_RW );
49        NV_SDL_IMAGE_LOAD( IMG_isICO );
50        NV_SDL_IMAGE_LOAD( IMG_isCUR );
51        NV_SDL_IMAGE_LOAD( IMG_isBMP );
52        NV_SDL_IMAGE_LOAD( IMG_isGIF );
53        NV_SDL_IMAGE_LOAD( IMG_isJPG );
54        NV_SDL_IMAGE_LOAD( IMG_isPNG );
55        NV_SDL_IMAGE_LOAD( IMG_isTIF );
56        NV_SDL_IMAGE_LOAD( IMG_LoadICO_RW );
57        NV_SDL_IMAGE_LOAD( IMG_LoadCUR_RW );
58        NV_SDL_IMAGE_LOAD( IMG_LoadBMP_RW );
59        NV_SDL_IMAGE_LOAD( IMG_LoadGIF_RW );
60        NV_SDL_IMAGE_LOAD( IMG_LoadJPG_RW );
61        NV_SDL_IMAGE_LOAD( IMG_LoadPNG_RW );
62        NV_SDL_IMAGE_LOAD( IMG_LoadTGA_RW );
63        NV_SDL_IMAGE_LOAD( IMG_LoadTIF_RW );
64
65#       undef NV_SDL_IMAGE_LOAD
66        return true;
67}
68#endif
Note: See TracBrowser for help on using the repository browser.