diff options
Diffstat (limited to 'guilib/DDSImage.h')
-rw-r--r-- | guilib/DDSImage.h | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/guilib/DDSImage.h b/guilib/DDSImage.h deleted file mode 100644 index b814e62e99..0000000000 --- a/guilib/DDSImage.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2005-2009 Team XBMC - * http://www.xbmc.org - * - * This Program 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 2, or (at your option) - * any later version. - * - * This Program 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 XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#pragma once - -#include <string> -#include <stdint.h> - -class CDDSImage -{ -public: - CDDSImage(); - CDDSImage(unsigned int width, unsigned int height, unsigned int format); - ~CDDSImage(); - - unsigned int GetWidth() const; - unsigned int GetHeight() const; - unsigned int GetFormat() const; - unsigned int GetSize() const; - unsigned char *GetData() const; - - bool ReadFile(const std::string &file); - - /*! \brief Create a DDS image file from the given an ARGB buffer - \param file name of the file to write - \param width width of the pixel buffer - \param height height of the pixel buffer - \param pitch pitch of the pixel buffer - \param argb pixel buffer - \param maxMSE maximum mean square error to allow, ignored if 0 (the default) - \return true on successful image creation, false otherwise - */ - bool Create(const std::string &file, unsigned int width, unsigned int height, unsigned int pitch, unsigned char const *argb, double maxMSE = 0); - - /*! \brief Decompress a DXT1/3/5 image to the given buffer - Assumes the buffer has been allocated to at least width*height*4 - \param argb pixel buffer to write to (at least width*height*4 bytes) - \param width width of the pixel buffer - \param height height of the pixel buffer - \param pitch pitch of the pixel buffer - \param dxt compressed dxt data - \param format format of the compressed dxt data - \return true on success, false otherwise - */ - static bool Decompress(unsigned char *argb, unsigned int width, unsigned int height, unsigned int pitch, unsigned char const *dxt, unsigned int format); - -private: - void Allocate(unsigned int width, unsigned int height, unsigned int format); - const char *GetFourCC(unsigned int format) const; - bool WriteFile(const std::string &file) const; - - /*! \brief Compress an ARGB buffer into a DXT1/3/5 image - \param width width of the pixel buffer - \param height height of the pixel buffer - \param pitch pitch of the pixel buffer - \param argb pixel buffer - \param maxMSE maximum mean square error to allow, ignored if 0 (the default) - \return true on successful compression within the given maxMSE, false otherwise - */ - bool Compress(unsigned int width, unsigned int height, unsigned int pitch, unsigned char const *argb, double maxMSE = 0); - - unsigned int GetStorageRequirements(unsigned int width, unsigned int height, unsigned int format) const; - enum { - ddsd_caps = 0x00000001, - ddsd_height = 0x00000002, - ddsd_width = 0x00000004, - ddsd_pitch = 0x00000008, - ddsd_pixelformat = 0x00001000, - ddsd_mipmapcount = 0x00020000, - ddsd_linearsize = 0x00080000, - ddsd_depth = 0x00800000 - }; - - enum { - ddpf_alphapixels = 0x00000001, - ddpf_fourcc = 0x00000004, - ddpf_rgb = 0x00000040 - }; - - enum { - ddscaps_complex = 0x00000008, - ddscaps_texture = 0x00001000, - ddscaps_mipmap = 0x00400000 - }; - - #pragma pack(push, 2) - typedef struct - { - uint32_t size; - uint32_t flags; - uint32_t fourcc; - uint32_t rgbBitCount; - uint32_t rBitMask; - uint32_t gBitMask; - uint32_t bBitMask; - uint32_t aBitMask; - } ddpixelformat; - -#define DDPF_ALPHAPIXELS 0x00000001 -#define DDPF_ALPHA 0x00000002 -#define DDPF_FOURCC 0x00000004 -#define DDPF_RGB 0x00000040 -#define DDPF_YUV 0x00000200 -#define DDPF_LUMINANCE 0x00020000 - - typedef struct - { - uint32_t flags1; - uint32_t flags2; - uint32_t reserved[2]; - } ddcaps2; - - typedef struct - { - uint32_t size; - uint32_t flags; - uint32_t height; - uint32_t width; - uint32_t linearSize; - uint32_t depth; - uint32_t mipmapcount; - uint32_t reserved[11]; - ddpixelformat pixelFormat; - ddcaps2 caps; - uint32_t reserved2; - } ddsurfacedesc2; - #pragma pack(pop) - - ddsurfacedesc2 m_desc; - unsigned char *m_data; -}; |