/* * This file is part of rasdaman community. * * Rasdaman community is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Rasdaman community is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with rasdaman community. If not, see . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ /** * INCLUDE: tiff.hh * * MODULE: conversion * * PURPOSE: * Provides interface to convert data between TIFF and internal format. * The convertFrom() and convertTo() methods accept a null-terminated * option string of the following syntax: * optionString ::= ( option )* * option ::= "comptype=" string * "quality=" int * "bpp=" int * "bps=" int * "depth=" int * * CLASSES: r_Conv_TIFF * * COMMENTS: * */ #ifndef _R_CONV_TIFF_HH_ #define _R_CONV_TIFF_HH_ #include "conversion/convertor.hh" //@ManMemo: Module {\bf conversion} /*@Doc: TIFF convertor class. Supported parameters are \begin{tabular}{lcl} {\tt comptype} && string && compression type (see below)\\ {\tt quality} && int && quality parameter (JPEG)\\ {\tt bpp} && int && override number of bits per p (if not set in the tiff)\\ {\tt bps} && int && override number of bits per s (if not set in the tiff)\\ {\tt depth} && int && override number of colors in the mdd\\ \end{tabular} The compression type defaults to lzw, but it may be one of the following (but not all types may be supported by the version of the TIFF library; note also that some compression types are only valid for specific colour depths): \begin{tabular}{ll} {\tt none}\\ {\tt ccittrle}\\ {\tt ccittfax3}\\ {\tt ccittfax4}\\ {\tt lzw}\\ {\tt ojpeg}\\ {\tt jpeg}\\ {\tt next}\\ {\tt ccittrlew}\\ {\tt packbits}\\ {\tt thunderscan}\\ {\tt pixarfilm}\\ {\tt pixarlog}\\ {\tt deflate}\\ {\tt dcs}\\ {\tt jbig}\\ {\tt sgilog} && Not Linux\\ {\tt sgilog24} && Not Linux\\ {\tt it8ctpad} && Not Linux\\ {\tt it8lw} && Not Linux\\ {\tt it8mp} && Not Linux\\ {\tt it8bl} && Not Linux\\ \end{tabular} For more information refer to the TIFFlib manual pages. */ class r_Conv_TIFF : public r_Convert_Memory { public: /// constructor using an r_Type object r_Conv_TIFF( const char *src, const r_Minterval &interv, const r_Type *tp ) throw(r_Error); /// constructor using convert_type_e shortcut r_Conv_TIFF( const char *src, const r_Minterval &interv, int type ) throw(r_Error); /// destructor ~r_Conv_TIFF( void ); /// convert to TIFF virtual r_convDesc &convertTo( const char *options=NULL) throw(r_Error); /// convert from TIFF virtual r_convDesc &convertFrom( const char *options=NULL ) throw(r_Error); /// cloning virtual r_Convertor *clone( void ) const; /// identification virtual const char *get_name( void ) const; virtual r_Data_Format get_data_format( void ) const; /// translate string compression type to libtiff compression type static int get_compression_from_name(const char* strComp); /// translate string resolution unit type to libtiff resolution unit type static int get_resunit_from_name(const char* strComp); private: /// init TIFF class void initTIFF( void ); /// parameters char *compType; int quality; int override_bpp; int override_bps; int override_depth; /// connection between string compression type and libtiff compression type static const convert_string_t compNames[]; /// connection between string resolution unit type and libtiff resolution unit type static const convert_string_t resunitNames[]; /// default rows per strip (32) static const int defaultRPS; /// temporary dummy file static const char dummyFileFmt[]; /// default quality factor (0..100) for lossy compression static const unsigned int TIFF_DEFAULT_QUALITY; }; #endif