Simple Image Loading LibrarY
0.1.0
|
00001 /*********************************************************************** 00002 filename: ImageLoaderManager.cpp 00003 created: 10 Jun 2006 00004 author: Olivier Delannoy 00005 00006 purpose: Manage the list of existing ImageLoader 00007 *************************************************************************/ 00008 /*************************************************************************** 00009 * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team 00010 * 00011 * Permission is hereby granted, free of charge, to any person obtaining 00012 * a copy of this software and associated documentation files (the 00013 * "Software"), to deal in the Software without restriction, including 00014 * without limitation the rights to use, copy, modify, merge, publish, 00015 * distribute, sublicense, and/or sell copies of the Software, and to 00016 * permit persons to whom the Software is furnished to do so, subject to 00017 * the following conditions: 00018 * 00019 * The above copyright notice and this permission notice shall be 00020 * included in all copies or substantial portions of the Software. 00021 * 00022 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00023 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00024 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00025 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 00026 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 00027 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 00028 * OTHER DEALINGS IN THE SOFTWARE. 00029 ***************************************************************************/ 00030 #ifdef HAVE_CONFIG_H 00031 #include <config.h> 00032 #endif 00033 00034 #include "SILLYImageLoaderManager.h" 00035 00036 #ifndef SILLY_OPT_INLINE 00037 #define inline 00038 #include "SILLYImageLoaderManager.icpp" 00039 #undef inline 00040 #endif 00041 #include "SILLYImageLoader.h" 00042 #include "loaders/SILLYTGAImageLoader.h" 00043 00044 #ifdef SILLY_HAVE_JPG 00045 #include "loaders/SILLYJPGImageLoader.h" 00046 #endif 00047 00048 #ifdef SILLY_HAVE_PNG 00049 #include "loaders/SILLYPNGImageLoader.h" 00050 #endif 00051 00052 // Start of SILLY namespace section 00053 namespace SILLY 00054 { 00055 00056 // we need to do "reference counting" for init/exit to allow silly to be used 00057 // from inside multiple independent libraries simultaneously. 00058 static size_t silly_init_counter = 0; 00059 00060 ImageLoaderManager* ImageLoaderManager::d_instance = 0; 00061 00062 ImageLoaderManager::ImageLoaderManager() 00063 { 00064 assert(d_instance == 0); 00065 d_instance = this; 00066 add(new TGAImageLoader); 00067 #ifdef SILLY_HAVE_JPG 00068 add(new JPGImageLoader); 00069 #endif 00070 #ifdef SILLY_HAVE_PNG 00071 add(new PNGImageLoader); 00072 #endif 00073 // Add other builtins loader here 00074 00075 } 00076 00077 ImageLoaderManager::~ImageLoaderManager() 00078 { 00079 for(ImageLoaderList::iterator iter = d_loaders.begin() ; iter != d_loaders.end() ; ++iter) 00080 { 00081 delete (*iter); 00082 } 00083 d_instance = 0; 00084 } 00085 00086 00087 bool SILLYInit() 00088 { 00089 if (ImageLoaderManager::getSingletonPtr() == 0) 00090 { 00091 if (!new ImageLoaderManager) 00092 { 00093 return false; 00094 } 00095 } 00096 ++silly_init_counter; 00097 return true; 00098 } 00099 00100 void SILLYCleanup() 00101 { 00102 if (--silly_init_counter == 0) 00103 { 00104 delete ImageLoaderManager::getSingletonPtr(); 00105 } 00106 } 00107 00108 } // End of SILLY namespace section 00109 00110