1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-26 03:52:01 +02:00

Merge pull request #4651 from Laserlicht/optimize_vid

optimize videowindow (black bg)
This commit is contained in:
Ivan Savenko 2024-09-27 18:50:49 +03:00 committed by GitHub
commit c983aa3887
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 4 deletions

View File

@ -34,6 +34,7 @@
#include "../widgets/TextControls.h"
#include "../widgets/ObjectLists.h"
#include "../widgets/VideoWidget.h"
#include "../widgets/GraphicalPrimitiveCanvas.h"
#include "../render/Canvas.h"
#include "../render/IRenderHandler.h"
@ -1616,22 +1617,26 @@ VideoWindow::VideoWindow(VideoPath video, ImagePath rim, bool showBackground, fl
addUsedEvents(LCLICK | KEYBOARD);
if(showBackground)
backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
if(!rim.empty())
{
setBackground(rim);
videoPlayer = std::make_shared<VideoWidgetOnce>(Point(80, 186), video, true, [this](){ exit(false); });
pos = center(Rect(0, 0, 800, 600));
}
else
{
blackBackground = std::make_shared<GraphicalPrimitiveCanvas>(Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
videoPlayer = std::make_shared<VideoWidgetOnce>(Point(0, 0), video, true, scaleFactor, [this](){ exit(false); });
pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h));
blackBackground->addBox(Point(0, 0), Point(pos.x, pos.y), Colors::BLACK);
}
if(showBackground)
backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(-pos.x, -pos.y, GH.screenDimensions().x, GH.screenDimensions().y));
if(backgroundAroundWindow)
backgroundAroundWindow->pos.moveTo(Point(0, 0));
if(!rim.empty())
setBackground(rim);
}
void VideoWindow::exit(bool skipped)

View File

@ -44,6 +44,7 @@ class CFilledTexture;
class IImage;
class VideoWidget;
class VideoWidgetOnce;
class GraphicalPrimitiveCanvas;
enum class EUserEvent;
@ -506,6 +507,7 @@ class VideoWindow : public CWindowObject
{
std::shared_ptr<VideoWidgetOnce> videoPlayer;
std::shared_ptr<CFilledTexture> backgroundAroundWindow;
std::shared_ptr<GraphicalPrimitiveCanvas> blackBackground;
std::function<void(bool)> closeCb;