1 /* 2 * Copyright (C) 2007,2008 Alex Shulgin 3 * 4 * This file is part of png++ the C++ wrapper for libpng. PNG++ is free 5 * software; the exact copying conditions are as follows: 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright notice, 11 * this list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. The name of the author may not be used to endorse or promote products 18 * derived from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 23 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 25 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 #ifndef PNGPP_RGB_PIXEL_HPP_INCLUDED 32 #define PNGPP_RGB_PIXEL_HPP_INCLUDED 33 34 #include "types.hpp" 35 #include "pixel_traits.hpp" 36 37 namespace png 38 { 39 40 /** 41 * \brief RGB pixel type. 42 */ 43 template< typename T > 44 struct basic_rgb_pixel 45 { 46 /** 47 * \brief Default constructor. Initializes all components 48 * with zeros. 49 */ basic_rgb_pixelpng::basic_rgb_pixel50 basic_rgb_pixel() 51 : red(0), green(0), blue(0) 52 { 53 } 54 55 /** 56 * \brief Constructs rgb_pixel object from \a red, \a green 57 * and \a blue components passed as parameters. 58 */ basic_rgb_pixelpng::basic_rgb_pixel59 basic_rgb_pixel(T red, T green, T blue) 60 : red(red), green(green), blue(blue) 61 { 62 } 63 64 T red; 65 T green; 66 T blue; 67 }; 68 69 /** 70 * The 8-bit RGB pixel type. 71 */ 72 typedef basic_rgb_pixel< byte > rgb_pixel; 73 74 /** 75 * The 16-bit RGB pixel type. 76 */ 77 typedef basic_rgb_pixel< uint_16 > rgb_pixel_16; 78 79 /** 80 * \brief Pixel traits specialization for basic_rgb_pixel. 81 */ 82 template< typename T > 83 struct pixel_traits< basic_rgb_pixel< T > > 84 : basic_pixel_traits< basic_rgb_pixel< T >, T, color_type_rgb > 85 { 86 }; 87 88 } // namespace png 89 90 #endif // PNGPP_RGB_PIXEL_HPP_INCLUDED 91