| @@ -9,7 +9,7 @@ liblol_a_SOURCES = \ | |||||
| timer.cpp timer.h bitfield.h profiler.cpp profiler.h input.h input.cpp \ | timer.cpp timer.h bitfield.h profiler.cpp profiler.h input.h input.cpp \ | ||||
| world.cpp world.h sample.cpp sample.h sampler.cpp sampler.h \ | world.cpp world.h sample.cpp sample.h sampler.cpp sampler.h \ | ||||
| text.cpp text.h emitter.cpp emitter.h numeric.h hash.cpp hash.h \ | text.cpp text.h emitter.cpp emitter.h numeric.h hash.cpp hash.h \ | ||||
| worldentity.cpp worldentity.h shader.cpp shader.h \ | |||||
| worldentity.cpp worldentity.h shader.cpp shader.h image.cpp image.h \ | |||||
| \ | \ | ||||
| sdlapp.cpp sdlapp.h sdlinput.cpp sdlinput.h \ | sdlapp.cpp sdlapp.h sdlinput.cpp sdlinput.h \ | ||||
| \ | \ | ||||
| @@ -44,6 +44,7 @@ | |||||
| #include "map.h" | #include "map.h" | ||||
| #include "layer.h" | #include "layer.h" | ||||
| #include "shader.h" | #include "shader.h" | ||||
| #include "image.h" | |||||
| // Managers | // Managers | ||||
| #include "ticker.h" | #include "ticker.h" | ||||
| @@ -0,0 +1,99 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||||
| // | |||||
| #if defined HAVE_CONFIG_H | |||||
| # include "config.h" | |||||
| #endif | |||||
| #include <cmath> | |||||
| #include <cstdio> | |||||
| #if defined USE_SDL | |||||
| # include <SDL.h> | |||||
| # include <SDL_image.h> | |||||
| #endif | |||||
| #include "core.h" | |||||
| #include "lolgl.h" | |||||
| namespace lol | |||||
| { | |||||
| /* | |||||
| * Image implementation class | |||||
| */ | |||||
| class ImageData | |||||
| { | |||||
| friend class Image; | |||||
| private: | |||||
| vec2i size; | |||||
| Image::format_t format; | |||||
| #if defined USE_SDL | |||||
| SDL_Surface *img; | |||||
| #endif | |||||
| }; | |||||
| /* | |||||
| * Public Image class | |||||
| */ | |||||
| Image::Image(char const *path) | |||||
| : data(new ImageData()) | |||||
| { | |||||
| #if defined USE_SDL | |||||
| for (char const *name = path; *name; name++) | |||||
| if ((data->img = IMG_Load(name))) | |||||
| break; | |||||
| if (!data->img) | |||||
| { | |||||
| #if !LOL_RELEASE | |||||
| fprintf(stderr, "ERROR: could not load %s\n", path); | |||||
| #endif | |||||
| SDL_Quit(); | |||||
| exit(1); | |||||
| } | |||||
| data->size = vec2i(data->img->w, data->img->h); | |||||
| data->format = data->img->format->Amask ? FORMAT_RGBA : FORMAT_RGB; | |||||
| #else | |||||
| data->size = 0; | |||||
| data->format = FORMAT_UNKNOWN; | |||||
| #endif | |||||
| } | |||||
| vec2i Image::GetSize() const | |||||
| { | |||||
| return data->size; | |||||
| } | |||||
| Image::format_t Image::GetFormat() const | |||||
| { | |||||
| return data->format; | |||||
| } | |||||
| void * Image::GetData() const | |||||
| { | |||||
| return data->img->pixels; | |||||
| } | |||||
| Image::~Image() | |||||
| { | |||||
| #if defined USE_LOL | |||||
| SDL_FreeSurface(data->img); | |||||
| #endif | |||||
| delete data; | |||||
| } | |||||
| } /* namespace lol */ | |||||
| @@ -0,0 +1,51 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||||
| // | |||||
| // | |||||
| // The Image class | |||||
| // --------------- | |||||
| // | |||||
| #if !defined __DH_IMAGE_H__ | |||||
| #define __DH_IMAGE_H__ | |||||
| #include "matrix.h" | |||||
| namespace lol | |||||
| { | |||||
| class ImageData; | |||||
| class Image | |||||
| { | |||||
| public: | |||||
| Image(char const *path); | |||||
| ~Image(); | |||||
| typedef enum | |||||
| { | |||||
| FORMAT_RGBA = 0, | |||||
| FORMAT_RGB, | |||||
| FORMAT_UNKNOWN, | |||||
| } | |||||
| format_t; | |||||
| vec2i GetSize() const; | |||||
| format_t GetFormat() const; | |||||
| void *GetData() const; | |||||
| private: | |||||
| ImageData *data; | |||||
| }; | |||||
| } /* namespace lol */ | |||||
| #endif // __DH_IMAGE_H__ | |||||
| @@ -26,6 +26,7 @@ | |||||
| <ClInclude Include="..\src\font.h" /> | <ClInclude Include="..\src\font.h" /> | ||||
| <ClInclude Include="..\src\forge.h" /> | <ClInclude Include="..\src\forge.h" /> | ||||
| <ClInclude Include="..\src\hash.h" /> | <ClInclude Include="..\src\hash.h" /> | ||||
| <ClInclude Include="..\src\image.h" /> | |||||
| <ClInclude Include="..\src\input.h" /> | <ClInclude Include="..\src\input.h" /> | ||||
| <ClInclude Include="..\src\layer.h" /> | <ClInclude Include="..\src\layer.h" /> | ||||
| <ClInclude Include="..\src\lolgl.h" /> | <ClInclude Include="..\src\lolgl.h" /> | ||||
| @@ -63,6 +64,7 @@ | |||||
| <ClCompile Include="..\src\font.cpp" /> | <ClCompile Include="..\src\font.cpp" /> | ||||
| <ClCompile Include="..\src\forge.cpp" /> | <ClCompile Include="..\src\forge.cpp" /> | ||||
| <ClCompile Include="..\src\hash.cpp" /> | <ClCompile Include="..\src\hash.cpp" /> | ||||
| <ClCompile Include="..\src\image.cpp" /> | |||||
| <ClCompile Include="..\src\input.cpp" /> | <ClCompile Include="..\src\input.cpp" /> | ||||
| <ClCompile Include="..\src\layer.cpp" /> | <ClCompile Include="..\src\layer.cpp" /> | ||||
| <ClCompile Include="..\src\map.cpp" /> | <ClCompile Include="..\src\map.cpp" /> | ||||
| @@ -42,6 +42,9 @@ | |||||
| <ClInclude Include="..\src\hash.h"> | <ClInclude Include="..\src\hash.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\src\image.h"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\src\input.h"> | <ClInclude Include="..\src\input.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -142,6 +145,9 @@ | |||||
| <ClCompile Include="..\src\hash.cpp"> | <ClCompile Include="..\src\hash.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\src\image.cpp"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\src\input.cpp"> | <ClCompile Include="..\src\input.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -26,6 +26,7 @@ | |||||
| <ClInclude Include="..\src\font.h" /> | <ClInclude Include="..\src\font.h" /> | ||||
| <ClInclude Include="..\src\forge.h" /> | <ClInclude Include="..\src\forge.h" /> | ||||
| <ClInclude Include="..\src\hash.h" /> | <ClInclude Include="..\src\hash.h" /> | ||||
| <ClInclude Include="..\src\image.h" /> | |||||
| <ClInclude Include="..\src\input.h" /> | <ClInclude Include="..\src\input.h" /> | ||||
| <ClInclude Include="..\src\layer.h" /> | <ClInclude Include="..\src\layer.h" /> | ||||
| <ClInclude Include="..\src\lolgl.h" /> | <ClInclude Include="..\src\lolgl.h" /> | ||||
| @@ -63,6 +64,7 @@ | |||||
| <ClCompile Include="..\src\font.cpp" /> | <ClCompile Include="..\src\font.cpp" /> | ||||
| <ClCompile Include="..\src\forge.cpp" /> | <ClCompile Include="..\src\forge.cpp" /> | ||||
| <ClCompile Include="..\src\hash.cpp" /> | <ClCompile Include="..\src\hash.cpp" /> | ||||
| <ClCompile Include="..\src\image.cpp" /> | |||||
| <ClCompile Include="..\src\input.cpp" /> | <ClCompile Include="..\src\input.cpp" /> | ||||
| <ClCompile Include="..\src\layer.cpp" /> | <ClCompile Include="..\src\layer.cpp" /> | ||||
| <ClCompile Include="..\src\map.cpp" /> | <ClCompile Include="..\src\map.cpp" /> | ||||
| @@ -42,6 +42,9 @@ | |||||
| <ClInclude Include="..\src\hash.h"> | <ClInclude Include="..\src\hash.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\src\image.h"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\src\input.h"> | <ClInclude Include="..\src\input.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -142,6 +145,9 @@ | |||||
| <ClCompile Include="..\src\hash.cpp"> | <ClCompile Include="..\src\hash.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\src\image.cpp"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\src\input.cpp"> | <ClCompile Include="..\src\input.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -31,6 +31,7 @@ | |||||
| <ClInclude Include="..\src\font.h" /> | <ClInclude Include="..\src\font.h" /> | ||||
| <ClInclude Include="..\src\forge.h" /> | <ClInclude Include="..\src\forge.h" /> | ||||
| <ClInclude Include="..\src\hash.h" /> | <ClInclude Include="..\src\hash.h" /> | ||||
| <ClInclude Include="..\src\image.h" /> | |||||
| <ClInclude Include="..\src\input.h" /> | <ClInclude Include="..\src\input.h" /> | ||||
| <ClInclude Include="..\src\layer.h" /> | <ClInclude Include="..\src\layer.h" /> | ||||
| <ClInclude Include="..\src\lolgl.h" /> | <ClInclude Include="..\src\lolgl.h" /> | ||||
| @@ -72,6 +73,7 @@ | |||||
| <ClCompile Include="..\src\font.cpp" /> | <ClCompile Include="..\src\font.cpp" /> | ||||
| <ClCompile Include="..\src\forge.cpp" /> | <ClCompile Include="..\src\forge.cpp" /> | ||||
| <ClCompile Include="..\src\hash.cpp" /> | <ClCompile Include="..\src\hash.cpp" /> | ||||
| <ClCompile Include="..\src\image.cpp" /> | |||||
| <ClCompile Include="..\src\input.cpp" /> | <ClCompile Include="..\src\input.cpp" /> | ||||
| <ClCompile Include="..\src\layer.cpp" /> | <ClCompile Include="..\src\layer.cpp" /> | ||||
| <ClCompile Include="..\src\map.cpp" /> | <ClCompile Include="..\src\map.cpp" /> | ||||
| @@ -42,6 +42,9 @@ | |||||
| <ClInclude Include="..\src\hash.h"> | <ClInclude Include="..\src\hash.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\src\image.h"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\src\input.h"> | <ClInclude Include="..\src\input.h"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -147,6 +150,9 @@ | |||||
| <ClCompile Include="..\src\hash.cpp"> | <ClCompile Include="..\src\hash.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\src\image.cpp"> | |||||
| <Filter>lolengine</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\src\input.cpp"> | <ClCompile Include="..\src\input.cpp"> | ||||
| <Filter>lolengine</Filter> | <Filter>lolengine</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||