mirror of
https://github.com/yuzu-emu/FasTC
synced 2024-11-22 11:13:59 +00:00
Add some more skeleton code to prepare for png image loading.
This commit is contained in:
parent
ff5cab75ee
commit
abb5ca2a44
5 changed files with 106 additions and 22 deletions
|
@ -0,0 +1,14 @@
|
|||
|
||||
SET( SOURCES
|
||||
ImageFile.cpp
|
||||
)
|
||||
|
||||
SET( HEADERS
|
||||
ImageLoader.h
|
||||
ImageFile.h
|
||||
)
|
||||
|
||||
ADD_LIBRARY(TexCompIO
|
||||
${SOURCES}
|
||||
${HEADERS}
|
||||
)
|
|
@ -1,10 +1,11 @@
|
|||
#include "ImageFile.h"
|
||||
#include <string.h>
|
||||
|
||||
ImageFile::ImageFile(const char *filename) :
|
||||
m_PixelData(0)
|
||||
m_PixelData(0),
|
||||
m_FileFormat( DetectFileFormat(filename) )
|
||||
{
|
||||
unsigned char *rawData = ReadFileData(filename);
|
||||
DetectFileFormat(filename);
|
||||
LoadImage(rawData);
|
||||
delete [] rawData;
|
||||
}
|
||||
|
@ -24,17 +25,33 @@ ImageFile::~ImageFile() {
|
|||
}
|
||||
}
|
||||
|
||||
void ImageFile::GetPixels() const {
|
||||
EImageFileFormat ImageFile::DetectFileFormat(const char *filename) {
|
||||
|
||||
int len = strlen(filename);
|
||||
if(len >= 256) {
|
||||
// !FIXME! Report Error...
|
||||
return kNumImageFileFormats;
|
||||
}
|
||||
|
||||
int dotPos = len - 1;
|
||||
|
||||
while(dotPos >= 0 && filename[dotPos--] != '.');
|
||||
|
||||
if(dotPos < 0) {
|
||||
// !FIXME! Report Error.....
|
||||
return kNumImageFileFormats;
|
||||
}
|
||||
|
||||
const char *ext = &filename[dotPos];
|
||||
|
||||
if(strcmp(ext, ".png") == 0) {
|
||||
return eFileFormat_PNG;
|
||||
}
|
||||
return kNumImageFileFormats;
|
||||
}
|
||||
|
||||
EImageFileFormat ImageFile::DetectFileFormat() {
|
||||
}
|
||||
|
||||
void ImageFile::LoadImage(const unsigend char *rawImageData) {
|
||||
}
|
||||
|
||||
void ImageFile::LoadPNGImage(const unsigned char *rawImageData) {
|
||||
bool ImageFile::LoadImage(const unsigned char *rawImageData) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
#ifedef _IMAGE_FILE_H_
|
||||
#ifndef _IMAGE_FILE_H_
|
||||
#define _IMAGE_FILE_H_
|
||||
|
||||
enum EImageFileFormat {
|
||||
eFileFormat_PNG,
|
||||
|
||||
kNumImageFileFormats
|
||||
};
|
||||
#include "ImageLoader.h"
|
||||
|
||||
class ImageFile {
|
||||
|
||||
|
@ -15,8 +11,8 @@ public:
|
|||
ImageFile(const char *filename, EImageFileFormat format);
|
||||
~ImageFile();
|
||||
|
||||
void GetWidth() const { return m_Width; }
|
||||
void GetHeight() const { return m_Height; }
|
||||
unsigned int GetWidth() const { return m_Width; }
|
||||
unsigned int GetHeight() const { return m_Height; }
|
||||
const unsigned char *GetPixels() const { return m_PixelData; }
|
||||
|
||||
private:
|
||||
|
@ -27,11 +23,8 @@ public:
|
|||
const EImageFileFormat m_FileFormat;
|
||||
|
||||
static unsigned char *ReadFileData(const char *filename);
|
||||
static EFileFormat DetectFileFormat(const char *filename);
|
||||
static EImageFileFormat DetectFileFormat(const char *filename);
|
||||
|
||||
bool LoadImage(const unsigned char *rawImageData);
|
||||
bool LoadPNGImage(const unsigned char *rawImageData);
|
||||
};
|
||||
|
||||
|
||||
#endif // _IMAGE_FILE_H_
|
||||
|
|
46
IO/ImageLoader.h
Normal file
46
IO/ImageLoader.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
#ifndef _IMAGE_LOADER_H_
|
||||
#define _IMAGE_LOADER_H_
|
||||
|
||||
enum EImageFileFormat {
|
||||
eFileFormat_PNG,
|
||||
|
||||
kNumImageFileFormats
|
||||
};
|
||||
|
||||
class ImageLoader {
|
||||
|
||||
protected:
|
||||
int m_RedChannelPrecision;
|
||||
unsigned char *m_RedData;
|
||||
|
||||
int m_GreenChannelPrecision;
|
||||
unsigned char *m_GreenData;
|
||||
|
||||
int m_BlueChannelPrecision;
|
||||
unsigned char *m_BlueData;
|
||||
|
||||
int m_AlphaChannelPrecision;
|
||||
unsigned char *m_AlphaData;
|
||||
|
||||
const unsigned char *const m_RawData;
|
||||
|
||||
ImageLoader(const unsigned char *rawData);
|
||||
virtual ~ImageLoader();
|
||||
|
||||
public:
|
||||
virtual void ReadData() = 0;
|
||||
|
||||
int GetRedChannelPrecision() const { return m_RedChannelPrecision; }
|
||||
unsigned char * GetRedPixelData() const { return m_RedData; }
|
||||
|
||||
int GetGreenChannelPrecision() const { return m_GreenChannelPrecision; }
|
||||
unsigned char * GetGreenPixelData() const { return m_GreenData; }
|
||||
|
||||
int GetBlueChannelPrecision() const { return m_BlueChannelPrecision; }
|
||||
unsigned char * GetBluePixelData() const { return m_BlueData; }
|
||||
|
||||
int GetAlphaChannelPrecision() const { return m_AlphaChannelPrecision; }
|
||||
unsigned char * GetAlphaPixelData() const { return m_AlphaData; }
|
||||
};
|
||||
|
||||
#endif // _IMAGE_LOADER_H_
|
14
IO/ImageLoaderPNG.h
Normal file
14
IO/ImageLoaderPNG.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef _IMAGE_LOADER_PNG_H_
|
||||
#define _IMAGE_LOADER_PNG_H_
|
||||
|
||||
#include "ImageLoader.h"
|
||||
|
||||
class ImageLoaderPNG : public ImageLoader {
|
||||
public:
|
||||
ImageLoader(const unsigned char *rawData);
|
||||
virtual ~ImageLoader();
|
||||
|
||||
void ReadData();
|
||||
};
|
||||
|
||||
#endif // _IMAGE_LOADER_H_
|
Loading…
Reference in a new issue