1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Reworked image container classes for easier support of new features

This commit is contained in:
Ivan Savenko
2025-01-15 17:05:45 +00:00
parent 2ee5f2df02
commit 4a600a9d4c
24 changed files with 855 additions and 980 deletions

View File

@@ -87,8 +87,7 @@ std::shared_ptr<CPicture> CWindowObject::createBg(const ImagePath & imageName, b
if(imageName.empty())
return nullptr;
auto image = std::make_shared<CPicture>(imageName);
image->getSurface()->setBlitMode(EImageBlitMode::OPAQUE);
auto image = std::make_shared<CPicture>(imageName, Point(0,0), EImageBlitMode::OPAQUE);
if(playerColored)
image->setPlayerColor(LOCPLINT->playerID);
return image;
@@ -116,8 +115,7 @@ void CWindowObject::updateShadow()
void CWindowObject::setShadow(bool on)
{
//size of shadow
int sizeOriginal = 8;
int size = sizeOriginal * GH.screenHandler().getScalingFactor();
int size = 8;
if(on == !shadowParts.empty())
return;
@@ -182,9 +180,9 @@ void CWindowObject::setShadow(bool on)
//FIXME: do something with this points
Point shadowStart;
if (options & BORDERED)
shadowStart = Point(sizeOriginal - 14, sizeOriginal - 14);
shadowStart = Point(size - 14, size - 14);
else
shadowStart = Point(sizeOriginal, sizeOriginal);
shadowStart = Point(size, size);
Point shadowPos;
if (options & BORDERED)
@@ -200,8 +198,8 @@ void CWindowObject::setShadow(bool on)
//create base 8x8 piece of shadow
SDL_Surface * shadowCorner = CSDL_Ext::copySurface(shadowCornerTempl);
SDL_Surface * shadowBottom = CSDL_Ext::scaleSurface(shadowBottomTempl, (fullsize.x - sizeOriginal) * GH.screenHandler().getScalingFactor(), size);
SDL_Surface * shadowRight = CSDL_Ext::scaleSurface(shadowRightTempl, size, (fullsize.y - sizeOriginal) * GH.screenHandler().getScalingFactor());
SDL_Surface * shadowBottom = CSDL_Ext::scaleSurface(shadowBottomTempl, (fullsize.x - size), size);
SDL_Surface * shadowRight = CSDL_Ext::scaleSurface(shadowRightTempl, size, (fullsize.y - size));
blitAlphaCol(shadowBottom, 0);
blitAlphaRow(shadowRight, 0);