/////////////////////////////////////////////////////////////////////////////////////////////////// // OpenGL Image Copyright (c) 2008 - 2011 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// // Created : 2011-04-05 // Updated : 2011-04-05 // Licence : This source is under MIT License // File : gli/core/image2d.hpp /////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef GLI_CORE_IMAGE2D_INCLUDED #define GLI_CORE_IMAGE2D_INCLUDED // STD #include #include #include #include // GLM #include #include #include #include #include namespace gli { enum format { FORMAT_NULL, // Unsigned integer formats R8U, RG8U, RGB8U, RGBA8U, R16U, RG16U, RGB16U, RGBA16U, R32U, RG32U, RGB32U, RGBA32U, // Signed integer formats R8I, RG8I, RGB8I, RGBA8I, R16I, RG16I, RGB16I, RGBA16I, R32I, RG32I, RGB32I, RGBA32I, // Floating formats R16F, RG16F, RGB16F, RGBA16F, R32F, RG32F, RGB32F, RGBA32F, // Packed formats RGBE8, RGB9E5, RG11B10F, R5G6B5, RGBA4, RGB10A2, // Depth formats D16, D24X8, D24S8, D32F, D32FS8X24, // Compressed formats DXT1, DXT3, DXT5, ATI1N_UNORM, ATI1N_SNORM, ATI2N_UNORM, ATI2N_SNORM, BP_UF16, BP_SF16, BP, FORMAT_MAX }; enum size_type { LINEAR_SIZE, BLOCK_SIZE, BIT_PER_PIXEL, COMPONENT }; class image2D { public: typedef glm::uvec2 dimensions_type; typedef glm::vec2 texcoord_type; typedef glm::uint32 size_type; typedef glm::byte value_type; typedef gli::format format_type; typedef std::vector data_type; public: image2D(); image2D( image2D const & Image); explicit image2D( dimensions_type const & Dimensions, format_type const & Format); template explicit image2D( dimensions_type const & Dimensions, format_type const & Format, genType const & Value); explicit image2D( dimensions_type const & Dimensions, format_type const & Format, std::vector const & Data); ~image2D(); template void setPixel( dimensions_type const & TexelCoord, genType const & TexelData); size_type value_size() const; size_type capacity() const; dimensions_type dimensions() const; size_type components() const; format_type format() const; value_type * data(); value_type const * const data() const; private: data_type Data; dimensions_type Dimensions; format_type Format; }; }//namespace gli #include "image2d.inl" #endif//GLI_CORE_IMAGE2D_INCLUDED