hyprlock/src/renderer/widgets/Background.hpp

70 lines
2.6 KiB
C++
Raw Normal View History

2024-02-18 23:08:03 +00:00
#pragma once
#include "IWidget.hpp"
#include "../../helpers/Color.hpp"
#include "../../helpers/Math.hpp"
#include "../../core/Timer.hpp"
2024-02-21 22:19:01 +00:00
#include "../Framebuffer.hpp"
#include "../AsyncResourceGatherer.hpp"
2024-02-18 23:08:03 +00:00
#include <string>
2024-02-21 22:19:01 +00:00
#include <unordered_map>
#include <any>
#include <chrono>
#include <filesystem>
2024-02-18 23:08:03 +00:00
struct SPreloadedAsset;
class COutput;
2024-02-18 23:08:03 +00:00
struct SFade {
std::chrono::system_clock::time_point start;
float a = 0;
std::shared_ptr<CTimer> crossFadeTimer = nullptr;
};
2024-02-18 23:08:03 +00:00
class CBackground : public IWidget {
public:
CBackground(const Vector2D& viewport, COutput* output_, const std::string& resourceID, const std::unordered_map<std::string, std::any>& props, bool ss_);
~CBackground();
2024-02-18 23:08:03 +00:00
2024-02-19 16:26:08 +00:00
virtual bool draw(const SRenderData& data);
void renderRect(CHyprColor color);
2024-02-18 23:08:03 +00:00
void onReloadTimerUpdate();
void onCrossFadeTimerUpdate();
void plantReloadTimer();
void startCrossFadeOrUpdateRender();
2024-02-18 23:08:03 +00:00
private:
2024-02-21 22:19:01 +00:00
// if needed
CFramebuffer blurredFB;
int blurSize = 10;
int blurPasses = 3;
float noise = 0.0117;
float contrast = 0.8916;
float brightness = 0.8172;
float vibrancy = 0.1696;
float vibrancy_darkness = 0.0;
Vector2D viewport;
std::string path = "";
std::string resourceID;
std::string pendingResourceID;
float crossFadeTime = -1.0;
CHyprColor color;
SPreloadedAsset* asset = nullptr;
COutput* output = nullptr;
bool isScreenshot = false;
SPreloadedAsset* pendingAsset = nullptr;
bool firstRender = true;
std::unique_ptr<SFade> fade;
int reloadTime = -1;
std::string reloadCommand;
CAsyncResourceGatherer::SPreloadRequest request;
std::shared_ptr<CTimer> reloadTimer;
std::filesystem::file_time_type modificationTime;
2024-02-18 23:08:03 +00:00
};