| @@ -38,7 +38,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| private: | private: | ||||
| jobject bmp; | jobject bmp; | ||||
| @@ -130,9 +130,9 @@ bool AndroidImageData::Close() | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * AndroidImageData::GetData() const | |||||
| uint8_t *AndroidImageData::GetData() const | |||||
| { | { | ||||
| return pixels; | |||||
| return (uint8_t *)pixels; | |||||
| } | } | ||||
| } /* namespace lol */ | } /* namespace lol */ | ||||
| @@ -30,7 +30,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| private: | private: | ||||
| uint8_t *pixels; | uint8_t *pixels; | ||||
| @@ -46,7 +46,7 @@ bool DummyImageData::Open(char const *path) | |||||
| m_size = ivec2(256); | m_size = ivec2(256); | ||||
| m_format = PixelFormat::RGBA_8; | m_format = PixelFormat::RGBA_8; | ||||
| pixels = (uint8_t *)malloc(256 * 256 * 4 * sizeof(*pixels)); | |||||
| pixels = new uint8_t[256 * 256 * 4 * sizeof(*pixels)]; | |||||
| uint8_t *parser = pixels; | uint8_t *parser = pixels; | ||||
| for (int j = 0; j < 256; j++) | for (int j = 0; j < 256; j++) | ||||
| for (int i = 0; i < 256; i++) | for (int i = 0; i < 256; i++) | ||||
| @@ -62,12 +62,12 @@ bool DummyImageData::Open(char const *path) | |||||
| bool DummyImageData::Close() | bool DummyImageData::Close() | ||||
| { | { | ||||
| free(pixels); | |||||
| delete[] pixels; | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * DummyImageData::GetData() const | |||||
| uint8_t * DummyImageData::GetData() const | |||||
| { | { | ||||
| return pixels; | return pixels; | ||||
| } | } | ||||
| @@ -37,7 +37,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| private: | private: | ||||
| Gdiplus::Bitmap *m_bitmap; | Gdiplus::Bitmap *m_bitmap; | ||||
| @@ -147,7 +147,7 @@ bool GdiPlusImageData::Close() | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * GdiPlusImageData::GetData() const | |||||
| uint8_t * GdiPlusImageData::GetData() const | |||||
| { | { | ||||
| return m_bdata.Scan0; | return m_bdata.Scan0; | ||||
| } | } | ||||
| @@ -34,7 +34,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| private: | private: | ||||
| uint8_t *pixels; | uint8_t *pixels; | ||||
| @@ -90,7 +90,7 @@ bool IosImageData::Close() | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * IosImageData::GetData() const | |||||
| uint8_t * IosImageData::GetData() const | |||||
| { | { | ||||
| return pixels; | return pixels; | ||||
| } | } | ||||
| @@ -35,7 +35,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| private: | private: | ||||
| static void* Malloc(uint32_t size, void* data) { return malloc(size); }; | static void* Malloc(uint32_t size, void* data) { return malloc(size); }; | ||||
| @@ -179,7 +179,7 @@ bool Ps3ImageData::Close() | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * Ps3ImageData::GetData() const | |||||
| uint8_t * Ps3ImageData::GetData() const | |||||
| { | { | ||||
| return pixels; | return pixels; | ||||
| } | } | ||||
| @@ -43,7 +43,7 @@ public: | |||||
| virtual bool Open(char const *); | virtual bool Open(char const *); | ||||
| virtual bool Close(); | virtual bool Close(); | ||||
| virtual void *GetData() const; | |||||
| virtual uint8_t *GetData() const; | |||||
| static SDL_Surface *Create32BppSurface(ivec2 size); | static SDL_Surface *Create32BppSurface(ivec2 size); | ||||
| @@ -96,9 +96,9 @@ bool SdlImageData::Close() | |||||
| return true; | return true; | ||||
| } | } | ||||
| void * SdlImageData::GetData() const | |||||
| uint8_t * SdlImageData::GetData() const | |||||
| { | { | ||||
| return m_img->pixels; | |||||
| return (uint8_t *)m_img->pixels; | |||||
| } | } | ||||
| SDL_Surface *SdlImageData::Create32BppSurface(ivec2 size) | SDL_Surface *SdlImageData::Create32BppSurface(ivec2 size) | ||||
| @@ -76,7 +76,7 @@ public: | |||||
| virtual bool Open(char const *) = 0; | virtual bool Open(char const *) = 0; | ||||
| virtual bool Close() = 0; | virtual bool Close() = 0; | ||||
| virtual void *GetData() const = 0; | |||||
| virtual uint8_t *GetData() const = 0; | |||||
| protected: | protected: | ||||
| ivec2 m_size; | ivec2 m_size; | ||||
| @@ -22,13 +22,16 @@ namespace lol | |||||
| static bool RegisterAllLoaders() | static bool RegisterAllLoaders() | ||||
| { | { | ||||
| /* We cannot make this an ImageLoader member function, because the | |||||
| /* HACK: We cannot make this an ImageLoader member function, because the | |||||
| * REGISTER_IMAGE_LOADER macro forward-declares free functions from | * REGISTER_IMAGE_LOADER macro forward-declares free functions from | ||||
| * the "lol" namespace. An apparent bug in Visual Studio's compiler | * the "lol" namespace. An apparent bug in Visual Studio's compiler | ||||
| * makes it think these functions are actually in the top-level | * makes it think these functions are actually in the top-level | ||||
| * namespace when the forward declaration is in a class member function. | * namespace when the forward declaration is in a class member function. | ||||
| * To avoid the problem, we make the forward declaration in a free | * To avoid the problem, we make the forward declaration in a free | ||||
| * function. */ | |||||
| * function. | |||||
| * The bug was reported to Microsoft and fixed by them, but the fix | |||||
| * is not yet available. | |||||
| * https://connect.microsoft.com/VisualStudio/feedback/details/730878/ */ | |||||
| #if defined __ANDROID__ | #if defined __ANDROID__ | ||||
| REGISTER_IMAGE_LOADER(AndroidImageData) | REGISTER_IMAGE_LOADER(AndroidImageData) | ||||
| #endif | #endif | ||||
| @@ -71,7 +74,7 @@ PixelFormat Image::GetFormat() const | |||||
| return m_data->m_format; | return m_data->m_format; | ||||
| } | } | ||||
| void * Image::GetData() const | |||||
| uint8_t * Image::GetData() const | |||||
| { | { | ||||
| return m_data->GetData(); | return m_data->GetData(); | ||||
| } | } | ||||
| @@ -29,7 +29,7 @@ public: | |||||
| ivec2 GetSize() const; | ivec2 GetSize() const; | ||||
| PixelFormat GetFormat() const; | PixelFormat GetFormat() const; | ||||
| void *GetData() const; | |||||
| uint8_t *GetData() const; | |||||
| private: | private: | ||||
| class ImageData *m_data; | class ImageData *m_data; | ||||
| @@ -133,10 +133,10 @@ void TileSet::TickDraw(float seconds) | |||||
| int w = PotUp(data->isize.x); | int w = PotUp(data->isize.x); | ||||
| int h = PotUp(data->isize.y); | int h = PotUp(data->isize.y); | ||||
| uint8_t *pixels = (uint8_t *)data->img->GetData(); | |||||
| uint8_t *pixels = data->img->GetData(); | |||||
| if (w != data->isize.x || h != data->isize.y) | if (w != data->isize.x || h != data->isize.y) | ||||
| { | { | ||||
| uint8_t *tmp = (uint8_t *)malloc(planes * w * h); | |||||
| uint8_t *tmp = new uint8_t[planes * w * h]; | |||||
| for (int line = 0; line < data->isize.y; line++) | for (int line = 0; line < data->isize.y; line++) | ||||
| memcpy(tmp + planes * w * line, | memcpy(tmp + planes * w * line, | ||||
| pixels + planes * data->isize.x * line, | pixels + planes * data->isize.x * line, | ||||
| @@ -148,7 +148,7 @@ void TileSet::TickDraw(float seconds) | |||||
| data->m_texture->SetData(pixels); | data->m_texture->SetData(pixels); | ||||
| if (pixels != data->img->GetData()) | if (pixels != data->img->GetData()) | ||||
| free(pixels); | |||||
| delete[] pixels; | |||||
| delete data->img; | delete data->img; | ||||
| data->img = nullptr; | data->img = nullptr; | ||||
| } | } | ||||
| @@ -30,7 +30,7 @@ LOLUNIT_FIXTURE(ImageTest) | |||||
| LOLUNIT_ASSERT_EQUAL(size.x, 256); | LOLUNIT_ASSERT_EQUAL(size.x, 256); | ||||
| LOLUNIT_ASSERT_EQUAL(size.y, 16); | LOLUNIT_ASSERT_EQUAL(size.y, 16); | ||||
| uint8_t *data = (uint8_t *)image.GetData(); | |||||
| uint8_t *data = image.GetData(); | |||||
| LOLUNIT_ASSERT(data); | LOLUNIT_ASSERT(data); | ||||
| LOLUNIT_ASSERT_EQUAL((int)data[0], 0x00); | LOLUNIT_ASSERT_EQUAL((int)data[0], 0x00); | ||||