1 /* 2 Copyright (c) 2013 yvt 3 4 This file is part of OpenSpades. 5 6 OpenSpades is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 OpenSpades is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with OpenSpades. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 21 #include <cctype> 22 23 #include "IBitmapCodec.h" 24 #include "Debug.h" 25 #include "Exception.h" 26 27 namespace spades { 28 29 static std::vector<IBitmapCodec *> *allCodecs = NULL; 30 InitCodecList()31 static void InitCodecList() { 32 if (allCodecs) 33 return; 34 allCodecs = new std::vector<IBitmapCodec *>(); 35 } 36 GetAllCodecs()37 std::vector<IBitmapCodec *> IBitmapCodec::GetAllCodecs() { return *allCodecs; } 38 EndsWith(const std::string & filename,const std::string & extension)39 bool IBitmapCodec::EndsWith(const std::string &filename, const std::string &extension) { 40 SPADES_MARK_FUNCTION_DEBUG(); 41 42 if (filename.size() < extension.size()) 43 return false; 44 for (size_t i = 0; i < extension.size(); i++) { 45 int a = tolower(extension[i]); 46 int b = tolower(filename[i + filename.size() - extension.size()]); 47 if (a != b) 48 return false; 49 } 50 return true; 51 } 52 IBitmapCodec()53 IBitmapCodec::IBitmapCodec() { 54 SPADES_MARK_FUNCTION(); 55 56 InitCodecList(); 57 allCodecs->push_back(this); 58 } 59 ~IBitmapCodec()60 IBitmapCodec::~IBitmapCodec() { 61 SPADES_MARK_FUNCTION(); 62 // FIXME: uninstall bitmap codec? 63 } 64 } 65