00001 //------------------------------------------------------------------------------ 00002 // This file is part of the OpenStructure project <www.openstructure.org> 00003 // 00004 // Copyright (C) 2008-2011 by the OpenStructure authors 00005 // Copyright (C) 2003-2010 by the IPLT authors 00006 // 00007 // This library is free software; you can redistribute it and/or modify it under 00008 // the terms of the GNU Lesser General Public License as published by the Free 00009 // Software Foundation; either version 3.0 of the License, or (at your option) 00010 // any later version. 00011 // This library is distributed in the hope that it will be useful, but WITHOUT 00012 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00013 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00014 // details. 00015 // 00016 // You should have received a copy of the GNU Lesser General Public License 00017 // along with this library; if not, write to the Free Software Foundation, Inc., 00018 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 //------------------------------------------------------------------------------ 00020 #ifndef OST_IO_DF3_HANDLER_HH 00021 #define OST_IO_DF3_HANDLER_HH 00022 00023 /* 00024 Author: Marco Biasini 00025 */ 00026 #include "map_io_handler.hh" 00027 00028 namespace ost { namespace io { 00029 00030 class DLLEXPORT_OST_IO DF3: public ImageFormatBase 00031 { 00032 public: 00033 00034 DF3(bool normalize_on_save = false); 00035 00036 bool GetNormalizeOnSave() const; 00037 void SetNormalizeOnSave(bool normalize_on_save); 00038 Real GetMaximum() const; 00039 Real GetMinimum() const; 00040 static String FORMAT_STRING; 00041 static String FORMAT_NAME_STRING; 00042 static String FORMAT_ALIGNMENT_STRING; 00043 00044 private: 00045 00046 bool normalize_on_save_; 00047 }; 00048 00049 class DLLEXPORT_OST_IO DF3MapIOHandler: public MapIOHandler 00050 { 00051 public: 00052 virtual void Import(img::MapHandle& sh, const boost::filesystem::path& loc, 00053 const ImageFormatBase& formatstruct); 00054 virtual void Import(img::MapHandle& sh, std::istream& loc, 00055 const ImageFormatBase& formatstruct); 00056 virtual void Export(const img::MapHandle& sh, const boost::filesystem::path& loc, 00057 const ImageFormatBase& formatstruct) const; 00058 virtual void Export(const img::MapHandle& sh, std::ostream& loc, 00059 const ImageFormatBase& formatstruct) const; 00060 static bool MatchContent(unsigned char* header); 00061 static bool MatchType(const ImageFormatBase& type); 00062 static bool MatchSuffix(const String& loc); 00063 00064 static bool ProvidesImport() { return false; } 00065 static bool ProvidesExport() { return true; } 00066 00067 static String GetFormatName() { return "DF3"; }; 00068 static String GetFormatDescription() { return "PovRay Density file format"; }; 00069 }; 00070 00071 typedef MapIOHandlerFactory<DF3MapIOHandler> MapIODF3HandlerFactory; 00072 00073 }} // ns 00074 00075 #endif