mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-15 01:24:45 +02:00
fix xbrz shadow
This commit is contained in:
@ -20,6 +20,7 @@
|
|||||||
#include "../windows/CMessage.h"
|
#include "../windows/CMessage.h"
|
||||||
#include "../renderSDL/SDL_PixelAccess.h"
|
#include "../renderSDL/SDL_PixelAccess.h"
|
||||||
#include "../render/IImage.h"
|
#include "../render/IImage.h"
|
||||||
|
#include "../render/IScreenHandler.h"
|
||||||
#include "../render/IRenderHandler.h"
|
#include "../render/IRenderHandler.h"
|
||||||
#include "../render/Canvas.h"
|
#include "../render/Canvas.h"
|
||||||
|
|
||||||
@ -115,7 +116,8 @@ void CWindowObject::updateShadow()
|
|||||||
void CWindowObject::setShadow(bool on)
|
void CWindowObject::setShadow(bool on)
|
||||||
{
|
{
|
||||||
//size of shadow
|
//size of shadow
|
||||||
static const int size = 8;
|
int sizeOriginal = 8;
|
||||||
|
int size = sizeOriginal * GH.screenHandler().getScalingFactor();
|
||||||
|
|
||||||
if(on == !shadowParts.empty())
|
if(on == !shadowParts.empty())
|
||||||
return;
|
return;
|
||||||
@ -180,9 +182,9 @@ void CWindowObject::setShadow(bool on)
|
|||||||
//FIXME: do something with this points
|
//FIXME: do something with this points
|
||||||
Point shadowStart;
|
Point shadowStart;
|
||||||
if (options & BORDERED)
|
if (options & BORDERED)
|
||||||
shadowStart = Point(size - 14, size - 14);
|
shadowStart = Point(sizeOriginal - 14, sizeOriginal - 14);
|
||||||
else
|
else
|
||||||
shadowStart = Point(size, size);
|
shadowStart = Point(sizeOriginal, sizeOriginal);
|
||||||
|
|
||||||
Point shadowPos;
|
Point shadowPos;
|
||||||
if (options & BORDERED)
|
if (options & BORDERED)
|
||||||
@ -198,8 +200,8 @@ void CWindowObject::setShadow(bool on)
|
|||||||
|
|
||||||
//create base 8x8 piece of shadow
|
//create base 8x8 piece of shadow
|
||||||
SDL_Surface * shadowCorner = CSDL_Ext::copySurface(shadowCornerTempl);
|
SDL_Surface * shadowCorner = CSDL_Ext::copySurface(shadowCornerTempl);
|
||||||
SDL_Surface * shadowBottom = CSDL_Ext::scaleSurface(shadowBottomTempl, fullsize.x - size, size);
|
SDL_Surface * shadowBottom = CSDL_Ext::scaleSurface(shadowBottomTempl, (fullsize.x - sizeOriginal) * GH.screenHandler().getScalingFactor(), size);
|
||||||
SDL_Surface * shadowRight = CSDL_Ext::scaleSurface(shadowRightTempl, size, fullsize.y - size);
|
SDL_Surface * shadowRight = CSDL_Ext::scaleSurface(shadowRightTempl, size, (fullsize.y - sizeOriginal) * GH.screenHandler().getScalingFactor());
|
||||||
|
|
||||||
blitAlphaCol(shadowBottom, 0);
|
blitAlphaCol(shadowBottom, 0);
|
||||||
blitAlphaRow(shadowRight, 0);
|
blitAlphaRow(shadowRight, 0);
|
||||||
|
Reference in New Issue
Block a user