1 #ifndef UTIL_IMAGE__IMAGE_IO_GIF__HPP 2 #define UTIL_IMAGE__IMAGE_IO_GIF__HPP 3 4 /* $Id: image_io_gif.hpp 103491 2007-05-04 17:18:18Z kazimird $ 5 * =========================================================================== 6 * 7 * PUBLIC DOMAIN NOTICE 8 * National Center for Biotechnology Information 9 * 10 * This software/database is a "United States Government Work" under the 11 * terms of the United States Copyright Act. It was written as part of 12 * the author's official duties as a United States Government employee and 13 * thus cannot be copyrighted. This software/database is freely available 14 * to the public for use. The National Library of Medicine and the U.S. 15 * Government have not placed any restriction on its use or reproduction. 16 * 17 * Although all reasonable efforts have been taken to ensure the accuracy 18 * and reliability of the software and data, the NLM and the U.S. 19 * Government do not and cannot warrant the performance or results that 20 * may be obtained by using this software or data. The NLM and the U.S. 21 * Government disclaim all warranties, express or implied, including 22 * warranties of performance, merchantability or fitness for any particular 23 * purpose. 24 * 25 * Please cite the author in any work or product based on this material. 26 * 27 * =========================================================================== 28 * 29 * Authors: Mike DiCuccio 30 * 31 * File Description: 32 * CImageIOGif -- interface class for reading/writing CompuServ GIF files 33 */ 34 35 #include "image_io_handler.hpp" 36 #include <string> 37 38 // global-space predeclaration 39 struct GifFileType; 40 41 42 BEGIN_NCBI_SCOPE 43 44 class CImage; 45 46 47 // 48 // class CImageIOGif 49 // This is an internal class for handling GIF format files. It relies on 50 // libgif / libungif for GIF encoding, and will support compression only if 51 // that library does 52 // 53 54 class CImageIOGif : public CImageIOHandler 55 { 56 public: 57 58 // read GIF images from files 59 CImage* ReadImage(CNcbiIstream& istr); 60 CImage* ReadImage(CNcbiIstream& istr, 61 size_t x, size_t y, size_t w, size_t h); 62 bool ReadImageInfo(CNcbiIstream& istr, 63 size_t* width, size_t* height, size_t* depth); 64 65 // write images to file in GIF format 66 void WriteImage(const CImage& image, CNcbiOstream& ostr, 67 CImageIO::ECompress compress); 68 void WriteImage(const CImage& image, CNcbiOstream& ostr, 69 size_t x, size_t y, size_t w, size_t h, 70 CImageIO::ECompress compress); 71 72 private: 73 74 void x_UnpackData(GifFileType* fp, 75 const unsigned char* from_data, 76 unsigned char* to_data); 77 78 void x_ReadLine(GifFileType* fp, unsigned char* data); 79 }; 80 81 82 END_NCBI_SCOPE 83 84 #endif // UTIL_IMAGE__IMAGE_IO_GIF__HPP 85