| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // 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 <vector>
- #include <cassert>
- #include <cmath>
- #include <cstring>
- // GLM
- #include <glm/glm.hpp>
- #include <glm/gtx/number_precision.hpp>
- #include <glm/gtx/raw_data.hpp>
- #include <glm/gtx/gradient_paint.hpp>
- #include <glm/gtx/component_wise.hpp>
- 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<value_type> data_type;
- public:
- image2D();
- image2D(
- image2D const & Image);
- explicit image2D(
- dimensions_type const & Dimensions,
- format_type const & Format);
- template <typename genType>
- 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<value_type> const & Data);
- ~image2D();
- template <typename genType>
- 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
|