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 */
|
---|
14 | const SDL_version * (NV_SDL_APIENTRY *IMG_Linked_Version) (void) = nullptr;
|
---|
15 | int (NV_SDL_APIENTRY *IMG_Init) (int flags) = nullptr;
|
---|
16 | void (NV_SDL_APIENTRY *IMG_Quit) (void) = nullptr;
|
---|
17 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTyped_RW) (SDL_RWops *src, int freesrc, char *type) = nullptr;
|
---|
18 | SDL_Surface * (NV_SDL_APIENTRY *IMG_Load) (const char *file) = nullptr;
|
---|
19 | SDL_Surface * (NV_SDL_APIENTRY *IMG_Load_RW) (SDL_RWops *src, int freesrc) = nullptr;
|
---|
20 | int (NV_SDL_APIENTRY *IMG_isICO) (SDL_RWops *src) = nullptr;
|
---|
21 | int (NV_SDL_APIENTRY *IMG_isCUR) (SDL_RWops *src) = nullptr;
|
---|
22 | int (NV_SDL_APIENTRY *IMG_isBMP) (SDL_RWops *src) = nullptr;
|
---|
23 | int (NV_SDL_APIENTRY *IMG_isGIF) (SDL_RWops *src) = nullptr;
|
---|
24 | int (NV_SDL_APIENTRY *IMG_isJPG) (SDL_RWops *src) = nullptr;
|
---|
25 | int (NV_SDL_APIENTRY *IMG_isPNG) (SDL_RWops *src) = nullptr;
|
---|
26 | int (NV_SDL_APIENTRY *IMG_isTIF) (SDL_RWops *src) = nullptr;
|
---|
27 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadICO_RW) (SDL_RWops *src) = nullptr;
|
---|
28 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadCUR_RW) (SDL_RWops *src) = nullptr;
|
---|
29 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadBMP_RW) (SDL_RWops *src) = nullptr;
|
---|
30 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadGIF_RW) (SDL_RWops *src) = nullptr;
|
---|
31 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadJPG_RW) (SDL_RWops *src) = nullptr;
|
---|
32 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadPNG_RW) (SDL_RWops *src) = nullptr;
|
---|
33 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTGA_RW) (SDL_RWops *src) = nullptr;
|
---|
34 | SDL_Surface * (NV_SDL_APIENTRY *IMG_LoadTIF_RW) (SDL_RWops *src) = nullptr;
|
---|
35 |
|
---|
36 | bool 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
|
---|