World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс PCX_File_Loader

#include <ImageLoader.h>

+ Граф наследования:PCX_File_Loader:
+ Граф связей класса PCX_File_Loader:

Открытые члены

 PCX_File_Loader (LODFile_IconsBitmaps *lod, const String &filename)
 
virtual bool Load (unsigned int *width, unsigned int *height, void **pixels, IMAGE_FORMAT *format)
 
- Открытые члены унаследованные от ImageLoader
 ImageLoader ()
 
virtual String GetResourceName () const
 

Защищенные члены

bool InternalLoad (void *file, size_t size, unsigned int *width, unsigned int *height, void **pixels, IMAGE_FORMAT *format)
 
- Защищенные члены унаследованные от PCX_Loader
bool DecodePCX (const void *pcx_data, uint16_t *pOutPixels, unsigned int *width, unsigned int *height)
 

Защищенные данные

LODFile_IconsBitmapslod
 
- Защищенные данные унаследованные от ImageLoader
String resource_name
 
Loglog
 

Подробное описание

См. определение в файле ImageLoader.h строка 77

Конструктор(ы)

◆ PCX_File_Loader()

PCX_File_Loader::PCX_File_Loader ( LODFile_IconsBitmaps lod,
const String filename 
)
inline

См. определение в файле ImageLoader.h строка 79

79  {
80  this->resource_name = filename;
81  this->lod = lod;
82  }

Перекрестные ссылки lod и ImageLoader::resource_name.

Методы

◆ Load()

bool PCX_File_Loader::Load ( unsigned int *  width,
unsigned int *  height,
void **  pixels,
IMAGE_FORMAT format 
)
virtual

Замещает ImageLoader.

Переопределяется в PCX_LOD_File_Loader.

См. определение в файле ImageLoader.cpp строка 184

185  {
186  *width = 0;
187  *height = 0;
188  *pixels = nullptr;
190 
191  FILE *file = fopen(this->resource_name.c_str(), "rb");
192  if (!file) {
193  log->Warning(L"Unable to load %s", this->resource_name.c_str());
194  return false;
195  }
196 
197  fseek(file, 0, SEEK_END);
198  size_t filesize = ftell(file);
199  fseek(file, 0, SEEK_SET);
200 
201  bool res = InternalLoad(file, filesize, width, height, pixels, format);
202 
203  fclose(file);
204 
205  return res;
206 }

Перекрестные ссылки IMAGE_INVALID_FORMAT, InternalLoad(), ImageLoader::log, ImageLoader::resource_name и Log::Warning().

+ Граф вызовов:

◆ InternalLoad()

bool PCX_File_Loader::InternalLoad ( void file,
size_t  size,
unsigned int *  width,
unsigned int *  height,
void **  pixels,
IMAGE_FORMAT format 
)
protected

См. определение в файле ImageLoader.cpp строка 208

210  {
211  if (!PCX::IsValid(file)) {
212  return false;
213  }
214 
215  PCX::GetSize(file, width, height);
216  unsigned int num_pixels = *width * *height;
217  *pixels = new uint16_t[num_pixels + 2];
218 
219  if (pixels) {
220  if (!this->DecodePCX(file, (uint16_t*)*pixels, width,
221  height)) {
222  delete[] *(uint16_t**)pixels;
223  *pixels = nullptr;
224  } else {
226  }
227  }
228 
229  return *pixels != nullptr;
230 }

Перекрестные ссылки PCX_Loader::DecodePCX(), PCX::GetSize(), IMAGE_FORMAT_R5G6B5 и PCX::IsValid().

Используется в Load() и PCX_LOD_File_Loader::Load().

+ Граф вызовов:
+ Граф вызова функции:

Данные класса

◆ lod

LODFile_IconsBitmaps* PCX_File_Loader::lod
protected

См. определение в файле ImageLoader.h строка 91

Используется в PCX_File_Loader().


Объявления и описания членов классов находятся в файлах:
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
height
EGLSurface EGLint EGLint EGLint EGLint height
Definition: SDL_egl.h:1596
IMAGE_INVALID_FORMAT
@ IMAGE_INVALID_FORMAT
Definition: Image.h:12
PCX_Loader::DecodePCX
bool DecodePCX(const void *pcx_data, uint16_t *pOutPixels, unsigned int *width, unsigned int *height)
Definition: ImageLoader.cpp:179
format
SDL_AudioFormat format
Definition: SDL_audio.h:194
IMAGE_FORMAT_R5G6B5
@ IMAGE_FORMAT_R5G6B5
Definition: Image.h:5
width
EGLSurface EGLint EGLint EGLint width
Definition: SDL_egl.h:1596
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
PCX::IsValid
bool IsValid(const void *pcx_data)
Definition: PCX.cpp:30
ImageLoader::log
Log * log
Definition: ImageLoader.h:22
ImageLoader::resource_name
String resource_name
Definition: ImageLoader.h:21
PCX::GetSize
void GetSize(const void *pcx_data, unsigned int *width, unsigned int *height)
Definition: PCX.cpp:35
PCX_File_Loader::lod
LODFile_IconsBitmaps * lod
Definition: ImageLoader.h:91
PCX_File_Loader::InternalLoad
bool InternalLoad(void *file, size_t size, unsigned int *width, unsigned int *height, void **pixels, IMAGE_FORMAT *format)
Definition: ImageLoader.cpp:208
res
GLuint res
Definition: SDL_opengl_glext.h:7940
pixels
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: SDL_opengl.h:1572