// // Copyright 2008 Christian Henning // // Distributed under the Boost Software License, Version 1.0 // See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt // #ifndef BOOST_GIL_EXTENSION_IO_PNM_TAGS_HPP #define BOOST_GIL_EXTENSION_IO_PNM_TAGS_HPP #define BOOST_GIL_EXTENSION_IO_PNM_READ_ENABLED // TODO: Document, explain, review #include #include namespace boost { namespace gil { /// Defines pnm tag. struct pnm_tag : format_tag {}; /// see http://en.wikipedia.org/wiki/Portable_Bitmap_File_Format for reference /// Defines type for image type property. struct pnm_image_type : property_base< uint32_t > { using mono_asc_t = std::integral_constant; using gray_asc_t = std::integral_constant; using color_asc_t = std::integral_constant; using mono_bin_t = std::integral_constant; using gray_bin_t = std::integral_constant; using color_bin_t = std::integral_constant; }; /// Defines type for image width property. struct pnm_image_width : property_base< uint32_t > {}; /// Defines type for image height property. struct pnm_image_height : property_base< uint32_t > {}; /// Defines type for image max value property. struct pnm_image_max_value : property_base< uint32_t > {}; /// Read information for pnm images. /// /// The structure is returned when using read_image_info. template<> struct image_read_info< pnm_tag > { /// The image type. pnm_image_type::type _type; /// The image width. pnm_image_width::type _width; /// The image height. pnm_image_height::type _height; /// The image max value. pnm_image_max_value::type _max_value; }; /// Read settings for pnm images. /// /// The structure can be used for all read_xxx functions, except read_image_info. template<> struct image_read_settings< pnm_tag > : public image_read_settings_base { /// Default constructor image_read_settings< pnm_tag >() : image_read_settings_base() {} /// Constructor /// \param top_left Top left coordinate for reading partial image. /// \param dim Dimensions for reading partial image. image_read_settings( const point_t& top_left , const point_t& dim ) : image_read_settings_base( top_left , dim ) {} }; /// Write information for pnm images. /// /// The structure can be used for write_view() function. template<> struct image_write_info< pnm_tag > { }; } // namespace gil } // namespace boost #endif