<commit_before>
#pragma once


#include <gloperate/base/GlmProperties.h>
#include <gloperate/pipeline/Input.h>
#include <gloperate/pipeline/Output.h>


namespace globjects {
    class Framebuffer;
}


namespace gloperate
{


class Stage;


/**
*  @brief
*    Interface that can be used for rendering stages and pipelines
*
*    A render stage is a stage that renders into the current framebuffer
*    and can therefore be assigned to a viewer. Therefore, it has to support
*    interface via input and output slots which is accessed by the viewer.
*
*    This class can be used to instanciate the necessary inputs and outputs
*    for rendering stages. It can just be instanciated on a stage or pipeline
*    and it will add the inputs and outputs directly to the stage (the interface
*    itself is not an object in the hierarchy).
*/
class RenderInterface
{
public:
    // Inputs
    Input<glm::vec4>                deviceViewport;  ///< Viewport (in real device coordinates)
    Input<glm::vec4>                virtualViewport; ///< Viewport (in virtual coordinates)
    Input<glm::vec3>                backgroundColor; ///< Background color (RGB)
    Input<int>                      frameCounter;    ///< Frame counter (number of frames)
    Input<float>                    timeDelta;       ///< Time delta since last frame (in seconds)
    Input<globjects::Framebuffer *> targetFBO;       ///< Target FBO. If null, the stage is supposed to render into the default frame buffer.

    // Outputs
    Output<bool>                    rendered;        ///< 'true' if output has been rendered<commit_msg>make render interface public<commit_after>
#pragma once


#include <gloperate/base/GlmProperties.h>
#include <gloperate/pipeline/Input.h>
#include <gloperate/pipeline/Output.h>

#include <gloperate/gloperate_api.h>


namespace globjects {
    class Framebuffer;
}


namespace gloperate
{


class Stage;


/**
*  @brief
*    Interface that can be used for rendering stages and pipelines
*
*    A render stage is a stage that renders into the current framebuffer
*    and can therefore be assigned to a viewer. Therefore, it has to support
*    interface via input and output slots which is accessed by the viewer.
*
*    This class can be used to instanciate the necessary inputs and outputs
*    for rendering stages. It can just be instanciated on a stage or pipeline
*    and it will add the inputs and outputs directly to the stage (the interface
*    itself is not an object in the hierarchy).
*/
class GLOPERATE_API RenderInterface
{
public:
    // Inputs
    Input<glm::vec4>                deviceViewport;  ///< Viewport (in real device coordinates)
    Input<glm::vec4>                virtualViewport; ///< Viewport (in virtual coordinates)
    Input<glm::vec3>                backgroundColor; ///< Background color (RGB)
    Input<int>                      frameCounter;    ///< Frame counter (number of frames)
    Input<float>                    timeDelta;       ///< Time delta since last frame (in seconds)
    Input<globjects::Framebuffer *> targetFBO;       ///< Target FBO. If null, the stage is supposed to render into the default frame buffer.

    // Outputs
    Output<bool>                    rendered;        ///< 'true' if output has been rendered
{'fraction_non_alphanumeric': 0.08096547509929729, 'fraction_numerical': 0.0018331805682859762, 'mean_word_length': 2.6216814159292037, 'pattern_counts': {'":': 0, '<': 38, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2562547', 'n_tokens_mistral': 893, 'n_tokens_neox': 861, 'n_words': 357}