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

#include <ImageLoader.h>

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

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

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

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

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

Дополнительные унаследованные члены

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

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

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

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

◆ PCX_LOD_Loader()

PCX_LOD_Loader::PCX_LOD_Loader ( LOD::File lod,
const String filename 
)
inline

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

110  {
111  this->resource_name = filename;
112  this->lod = lod;
113  }

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

Методы

◆ Load()

bool PCX_LOD_Loader::Load ( unsigned int *  width,
unsigned int *  height,
void **  out_pixels,
IMAGE_FORMAT format 
)
virtual

Замещает ImageLoader.

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

254  {
255  *width = 0;
256  *height = 0;
257  *pixels = nullptr;
259 
260  size_t data_size = 0;
261  void *pcx_data = lod->LoadCompressedTexture(resource_name, &data_size);
262  if (pcx_data == nullptr) {
263  log->Warning(L"Unable to load %s", resource_name.c_str());
264  return false;
265  }
266 
267  if (!PCX::IsValid(pcx_data)) {
268  free(pcx_data);
269  return false;
270  }
271 
272  PCX::GetSize(pcx_data, width, height);
273  unsigned int num_pixels = *width * *height;
274  *pixels = new uint16_t[num_pixels + 2];
275 
276  if (pixels) {
277  if (!this->DecodePCX(pcx_data, (uint16_t*)*pixels, width,
278  height)) {
279  delete[] *(uint16_t**)pixels;
280  *pixels = nullptr;
281  } else {
283  }
284  }
285 
286  free(pcx_data);
287 
288  return *pixels != nullptr;
289 }

Перекрестные ссылки PCX_Loader::DecodePCX(), PCX::GetSize(), IMAGE_FORMAT_R5G6B5, IMAGE_INVALID_FORMAT, PCX::IsValid(), ImageLoader::log, ImageLoader::resource_name и Log::Warning().

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

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

◆ lod

LOD::File* PCX_LOD_Loader::lod
protected

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

Используется в PCX_LOD_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_LOD_Loader::lod
LOD::File * lod
Definition: ImageLoader.h:119
pixels
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: SDL_opengl.h:1572
lod
GLint lod
Definition: SDL_opengl_glext.h:3478