浏览代码

*small fixes for issues introduced in previous revision (or older, I'm not sure)

mateuszb 17 年之前
父节点
当前提交
6e53a4562f
共有 3 个文件被更改,包括 8 次插入3 次删除
  1. 2 2
      CAdvmapInterface.cpp
  2. 1 1
      SDL_Extensions.cpp
  3. 5 0
      mapHandler.cpp

+ 2 - 2
CAdvmapInterface.cpp

@@ -706,8 +706,8 @@ void CTerrainRect::showPath(const SDL_Rect * extRect)
 			int hvx = (x+arrows->ourImages[pn].bitmap->w)-(pos.x+pos.w),
 				hvy = (y+arrows->ourImages[pn].bitmap->h)-(pos.y+pos.h);
 
-			SDL_Rect prevClip;
-			SDL_GetClipRect(screen, &prevClip);
+			SDL_Rect prevClip;
+			SDL_GetClipRect(screen, &prevClip);
 			SDL_SetClipRect(screen, extRect); //preventing blitting outside of that rect
 
 			if(ADVOPT.smoothMove) //version for smooth hero move, with pos shifts

+ 1 - 1
SDL_Extensions.cpp

@@ -611,7 +611,7 @@ void CSDL_Ext::blitWithRotate3clip(SDL_Surface *src,SDL_Rect * srcRect, SDL_Surf
 			dp = (Uint8 *)dst->pixels + (dstRect->y + dstRect->h - 1 - i)*dst->pitch + (dstRect->x+dstRect->w)*dst->format->BytesPerPixel;
 			for(int j=0; j<dstRect->w; j++, sp++)
 			{
-				if((dstRect->x+dstRect->w - j-1) >= dst->clip_rect.x && (dstRect->x+dstRect->w - j-1) <= dst->clip_rect.x + dst->clip_rect.w)
+				if((dstRect->x+dstRect->w - j) >= dst->clip_rect.x && (dstRect->x+dstRect->w - j) <= dst->clip_rect.x + dst->clip_rect.w)
 				{
 					const SDL_Color * const color = src->format->palette->colors+(*sp);
 					*(--dp) = color->r;

+ 5 - 0
mapHandler.cpp

@@ -513,6 +513,10 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
 		 su = CSDL_Ext::newSurface(dx*32, dy*32, CSDL_Ext::std32bppSurface);
 	}
 
+	SDL_Rect prevClip;
+	SDL_GetClipRect(su, &prevClip);
+	if(extRect) SDL_SetClipRect(su, extRect); //preventing blitting outside of that rect
+
 	if (((dx+x)>((map->width+Woff)) || (dy+y)>((map->height+Hoff))) || ((x<-Woff)||(y<-Hoff) ) )
 		throw new std::string("terrainRect: out of range");
 	////printing terrain
@@ -757,6 +761,7 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
 			}
 		}
 	}
+	SDL_SetClipRect(su, &prevClip); //restoring clip_rect
 	//borders printed
 	return su;
 }