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 #pragma once 22 23 #include <string> 24 #include <vector> 25 26 namespace spades { 27 class Bitmap; 28 class IStream; 29 class IBitmapCodec { 30 public: 31 IBitmapCodec(); 32 virtual ~IBitmapCodec(); 33 34 static std::vector<IBitmapCodec *> GetAllCodecs(); 35 static bool EndsWith(const std::string &filename, const std::string &extension); 36 37 virtual std::string GetName() = 0; 38 39 virtual bool CanLoad() = 0; 40 virtual bool CanSave() = 0; 41 42 /** @return true if this codec supports the extension of the given filename. */ 43 virtual bool CheckExtension(const std::string &) = 0; 44 45 virtual Bitmap *Load(IStream *) = 0; 46 virtual void Save(IStream *, Bitmap *) = 0; 47 }; 48 }