1 #ifndef UTIL_IMAGE__IMAGE_IO_HANDLER__HPP 2 #define UTIL_IMAGE__IMAGE_IO_HANDLER__HPP 3 4 /* $Id: image_io_handler.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 * class CImageIOHandler -- abstract interface definition for image readers 33 * and writers 34 */ 35 36 #include <corelib/ncbiobj.hpp> 37 #include <util/image/image_io.hpp> 38 #include <string> 39 40 BEGIN_NCBI_SCOPE 41 42 class CImage; 43 44 45 /// 46 /// class CImageIOHandler 47 /// This is the base class for all image I/O handlers, and defines the standard 48 /// interface required for a class that supports reading and writing an image 49 /// 50 51 class CImageIOHandler : public CObject 52 { 53 public: 54 55 virtual ~CImageIOHandler(); 56 57 /// Read an entire image from a stream, returning a pointer to the image. 58 /// The callee is responsible for cleaning up the image 59 virtual CImage* ReadImage(CNcbiIstream& istr) = 0; 60 61 /// Read a portion of an image from a stream, returning a pointer to the 62 /// image. The callee is responsible for cleaning up the image 63 virtual CImage* ReadImage(CNcbiIstream& istr, 64 size_t x, size_t y, size_t w, size_t h) = 0; 65 66 /// Read a portion of an image from a stream, returning a pointer to the 67 /// image. The callee is responsible for cleaning up the image 68 virtual bool ReadImageInfo(CNcbiIstream& istr, 69 size_t* width, size_t* height, size_t* depth) = 0; 70 71 /// Read a scanline of an image from a file. This will come back as a 72 /// single string of unsigned characters; the order is RGBRGBRGB... ReadScanLine(CNcbiIstream &,vector<unsigned char> &)73 virtual void ReadScanLine(CNcbiIstream& /* istr */, 74 vector<unsigned char>& /* data */) {} 75 76 /// write images to file in HANDLER format 77 virtual void WriteImage(const CImage& image, 78 CNcbiOstream& ostr, 79 CImageIO::ECompress compress) = 0; 80 virtual void WriteImage(const CImage& image, 81 CNcbiOstream& ostr, 82 size_t x, size_t y, size_t w, size_t h, 83 CImageIO::ECompress compress) = 0; 84 85 }; 86 87 88 END_NCBI_SCOPE 89 90 #endif /// UTIL_IMAGE__IMAGE_IO_HANDLER__HPP 91