Simple Image Loading LibrarY  0.1.0
SILLYImageLoaderManager.cpp
1 /***********************************************************************
2  filename: ImageLoaderManager.cpp
3  created: 10 Jun 2006
4  author: Olivier Delannoy
5 
6  purpose: Manage the list of existing ImageLoader
7 *************************************************************************/
8 /***************************************************************************
9  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files (the
13  * "Software"), to deal in the Software without restriction, including
14  * without limitation the rights to use, copy, modify, merge, publish,
15  * distribute, sublicense, and/or sell copies of the Software, and to
16  * permit persons to whom the Software is furnished to do so, subject to
17  * the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  * OTHER DEALINGS IN THE SOFTWARE.
29  ***************************************************************************/
30 #ifdef HAVE_CONFIG_H
31 #include <config.h>
32 #endif
33 
34 #include "SILLYImageLoaderManager.h"
35 
36 #ifndef SILLY_OPT_INLINE
37 #define inline
38 #include "SILLYImageLoaderManager.icpp"
39 #undef inline
40 #endif
41 #include "SILLYImageLoader.h"
42 #include "loaders/SILLYTGAImageLoader.h"
43 
44 #ifdef SILLY_HAVE_JPG
45 #include "loaders/SILLYJPGImageLoader.h"
46 #endif
47 
48 #ifdef SILLY_HAVE_PNG
49 #include "loaders/SILLYPNGImageLoader.h"
50 #endif
51 
52 // Start of SILLY namespace section
53 namespace SILLY
54 {
55 
56 // we need to do "reference counting" for init/exit to allow silly to be used
57 // from inside multiple independent libraries simultaneously.
58 static size_t silly_init_counter = 0;
59 
60 ImageLoaderManager* ImageLoaderManager::d_instance = 0;
61 
63 {
64  assert(d_instance == 0);
65  d_instance = this;
66  add(new TGAImageLoader);
67 #ifdef SILLY_HAVE_JPG
68  add(new JPGImageLoader);
69 #endif
70 #ifdef SILLY_HAVE_PNG
71  add(new PNGImageLoader);
72 #endif
73 // Add other builtins loader here
74 
75 }
76 
78 {
79  for(ImageLoaderList::iterator iter = d_loaders.begin() ; iter != d_loaders.end() ; ++iter)
80  {
81  delete (*iter);
82  }
83  d_instance = 0;
84 }
85 
86 
87 bool SILLYInit()
88 {
89  if (ImageLoaderManager::getSingletonPtr() == 0)
90  {
91  if (!new ImageLoaderManager)
92  {
93  return false;
94  }
95  }
96  ++silly_init_counter;
97  return true;
98 }
99 
101 {
102  if (--silly_init_counter == 0)
103  {
104  delete ImageLoaderManager::getSingletonPtr();
105  }
106 }
107 
108 } // End of SILLY namespace section
109 
110 
bool SILLYInit()
Initialize the SILLY Library.
Manage the list of all supported ImageLoader.
void add(ImageLoader *loader)
Register an ImageLoader object.
void SILLYCleanup()
Cleanup SILLY library internal.
Simple Image Loading LibrarY namespace.
Loader class for JPG Image.
Loader for PNG Image.
Loader for Targa image.