Browse Source

Poprawka opisu + funkcja odbijająca wokół osi poziomej.

Michał W. Urbańczyk 18 years ago
parent
commit
35ba2ff9e8
3 changed files with 26 additions and 0 deletions
  1. 25 0
      SDL_Extensions.cpp
  2. 1 0
      SDL_Extensions.h
  3. BIN
      h3m.txt

+ 25 - 0
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; i<ret->w; ++i)
+	{
+		for(int j=0; j<ret->h; ++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
 ///**************/

+ 1 - 0
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);
 };

BIN
h3m.txt