diff --git a/SDL_Extensions.cpp b/SDL_Extensions.cpp index d4e6c8019..72551bc24 100644 --- a/SDL_Extensions.cpp +++ b/SDL_Extensions.cpp @@ -46,6 +46,31 @@ SDL_Surface * CSDL_Ext::rotate01(SDL_Surface * toRot) SDL_FreeSurface(first); return ret; } +SDL_Surface * CSDL_Ext::hFlip(SDL_Surface * toRot) +{ + SDL_Surface * first = SDL_CreateRGBSurface(toRot->flags, toRot->w, toRot->h, toRot->format->BitsPerPixel, toRot->format->Rmask, toRot->format->Gmask, toRot->format->Bmask, toRot->format->Amask); + SDL_Surface * ret = SDL_ConvertSurface(first, toRot->format, toRot->flags); + for(int i=0; iw; ++i) + { + for(int j=0; jh; ++j) + { + { + Uint8 *p = (Uint8 *)toRot->pixels + (ret->h - j -1) * toRot->pitch + i * toRot->format->BytesPerPixel; + if(SDL_BYTEORDER == SDL_BIG_ENDIAN) + { + SDL_PutPixel(ret, i, j, p[0], p[1], p[2]); + } + else + { + SDL_PutPixel(ret, i, j, p[2], p[1], p[0]); + } + } + } + } + SDL_FreeSurface(first); + return ret; +}; + ///**************/ ///Rotates toRot surface by 90 degrees left ///**************/ diff --git a/SDL_Extensions.h b/SDL_Extensions.h index 10b26d8f8..d31c30804 100644 --- a/SDL_Extensions.h +++ b/SDL_Extensions.h @@ -7,6 +7,7 @@ class CSDL_Ext public: static void SDL_PutPixel(SDL_Surface *ekran, int x, int y, Uint8 R, Uint8 G, Uint8 B); static SDL_Surface * rotate01(SDL_Surface * toRot); + static SDL_Surface * hFlip(SDL_Surface * toRot); //horizontal flip static SDL_Surface * rotate02(SDL_Surface * toRot); static SDL_Surface * rotate03(SDL_Surface * toRot); }; diff --git a/h3m.txt b/h3m.txt index 79b085f30..40250367b 100644 Binary files a/h3m.txt and b/h3m.txt differ