mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-12-27 11:41:49 +01:00
117 lines
5.0 KiB
C
117 lines
5.0 KiB
C
|
/*
|
||
|
* Metaphrasis is a static conversion class for transforming RGBA image
|
||
|
* buffers into verious GX texture formats for Wii homebrew development.
|
||
|
* Copyright (C) 2008 Armin Tamzarian
|
||
|
*
|
||
|
* This file is part of Metaphrasis.
|
||
|
*
|
||
|
* Metaphrasis is free software: you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU Lesser General Public License as published
|
||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||
|
* (at your option) any later version.
|
||
|
*
|
||
|
* Metaphrasis 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 Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public License
|
||
|
* along with Metaphrasis. If not, see <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
|
||
|
/** \mainpage Metaphrasis
|
||
|
*
|
||
|
* \section sec_intro Introduction
|
||
|
*
|
||
|
* Metaphrasis is a static conversion class for transforming RGBA image buffers into verious GX texture formats for Wii homebrew development.
|
||
|
* <br>
|
||
|
* Metaphrasis is written in C++ and makes use of a community standard and newly developed algorithms for conversion of 32-bit RGBA data buffers into various GX texture formats common to both the Gamecube and Wii platforms.
|
||
|
* <p>
|
||
|
* This library was developed in-full by Armin Tamzarian with the support of developers in \#wiibrew on EFnet, Chaosteil of libwiisprite, and DrTwox of GRRLIB.
|
||
|
*
|
||
|
* \section sec_installation_source Installation (Source Code)
|
||
|
*
|
||
|
* -# Extract the Metaphrasis archive.
|
||
|
* -# Copy the contents of the <i>src</i> directory into your project's development path.
|
||
|
* -# Include the Metaphrasis header file in your code using syntax such as the following:
|
||
|
* \code
|
||
|
* #include "Metaphrasis.h"
|
||
|
* \endcode
|
||
|
*
|
||
|
* \section sec_installation_library Installation (Library)
|
||
|
*
|
||
|
* -# Extract the Metaphrasis archive.
|
||
|
* -# Copy the contents of the <i>lib</i> directory into your <i>devKitPro/libogc</i> directory.
|
||
|
* -# Include the Metaphrasis header file in your code using syntax such as the following:
|
||
|
* \code
|
||
|
* #include "Metaphrasis.h"
|
||
|
* \endcode
|
||
|
*
|
||
|
* \section sec_usage Usage
|
||
|
*
|
||
|
* -# Create a buffer full of 32-bit RGBA values noting both the pixel height and width of the buffer.
|
||
|
* -# Call one of the many conversion routines from within your code. (Note: All methods within the Metaphrasis class are static and thus no class instance need be allocated)
|
||
|
* \code
|
||
|
* uint32_t* rgba8Buffer = Metaphrasis::convertBufferToRGBA8(rgbaBuffer, bufferWidth, bufferHeight);
|
||
|
* \endcode
|
||
|
* -# Free your temporary RGBA value buffer if you no longer need said values.
|
||
|
*
|
||
|
* Currently supported conversion routines are as follows:
|
||
|
* \li convertBufferToI4
|
||
|
* \li convertBufferToI8
|
||
|
* \li convertBufferToIA4
|
||
|
* \li convertBufferToIA8
|
||
|
* \li convertBufferToRGBA8
|
||
|
* \li convertBufferToRGB565
|
||
|
* \li convertBufferToRGB5A3
|
||
|
*
|
||
|
* \section sec_license License
|
||
|
*
|
||
|
* Metaphrasis is distributed under the GNU Lesser General Public License.
|
||
|
*
|
||
|
* \section sec_contact Contact
|
||
|
*
|
||
|
* If you have any suggestions, questions, or comments regarding this library feel free to e-mail me at tamzarian1989 [at] gmail [dawt] com.
|
||
|
*/
|
||
|
|
||
|
#ifndef METAPHRASIS_H_
|
||
|
#define METAPHRASIS_H_
|
||
|
|
||
|
#include <gccore.h>
|
||
|
#include <stdint.h>
|
||
|
#include <malloc.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
/*! \class Metaphrasis
|
||
|
* \brief A static conversion class for transforming RGBA image buffers into verious GX texture formats for
|
||
|
* Wii homebrew development.
|
||
|
* \author Armin Tamzarian
|
||
|
* \version 0.1.0
|
||
|
*
|
||
|
* Metaphrasis is a static conversion class for transforming RGBA image buffers into verious GX texture formats for
|
||
|
* Wii homebrew development. Metaphrasis is written in C++ and makes use of a community standard and newly developed
|
||
|
* algorithms for conversion of 32-bit RGBA data buffers into various GX texture formats common to both the Gamecube
|
||
|
* and Wii platforms.
|
||
|
*/
|
||
|
class Metaphrasis {
|
||
|
public:
|
||
|
Metaphrasis();
|
||
|
virtual ~Metaphrasis();
|
||
|
|
||
|
static uint32_t* convertBufferToI4(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToI8(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToIA4(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToIA8(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToRGBA8(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToRGB565(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
static uint32_t* convertBufferToRGB5A3(uint32_t* rgbaBuffer, uint16_t bufferWidth, uint16_t bufferHeight);
|
||
|
|
||
|
static uint8_t convertRGBAToIA4(uint32_t rgba);
|
||
|
static uint16_t convertRGBAToIA8(uint32_t rgba);
|
||
|
static uint16_t convertRGBAToRGB565(uint32_t rgba);
|
||
|
static uint16_t convertRGBAToRGB5A3(uint32_t rgba);
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif /*METAPHRASIS_H_*/
|