Hyprland/src/render/Transformer.hpp

21 lines
809 B
C++
Raw Normal View History

2023-10-21 14:15:48 +01:00
#pragma once
#include "Framebuffer.hpp"
#include "pass/SurfacePassElement.hpp"
2023-10-21 14:15:48 +01:00
// A window transformer can be attached to a window.
// If any is attached, Hyprland will render the window to a separate fb, then call the transform() func with it,
// and finally render it back to the main fb after all transformers pass.
//
// Worth noting transformers for now only affect the main pass (not popups)
2023-10-21 14:15:48 +01:00
class IWindowTransformer {
public:
virtual ~IWindowTransformer() = default;
2023-10-21 14:15:48 +01:00
// called by Hyprland. For more data about what is being rendered, inspect render data.
// returns the out fb.
virtual CFramebuffer* transform(CFramebuffer* in) = 0;
// called by Hyprland before a window main pass is started.
virtual void preWindowRender(CSurfacePassElement::SRenderData* pRenderData);
2023-10-21 14:15:48 +01:00
};