2020-12-05 13:08:24 +01:00
|
|
|
#pragma once
|
2020-10-30 21:26:22 +01:00
|
|
|
|
2020-12-22 09:42:57 +01:00
|
|
|
#include "util/types.hpp"
|
|
|
|
|
#include "util/atomic.hpp"
|
|
|
|
|
#include <vector>
|
2020-10-30 21:26:22 +01:00
|
|
|
|
|
|
|
|
#include "display.h"
|
|
|
|
|
|
|
|
|
|
class GSFrameBase
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
GSFrameBase() = default;
|
|
|
|
|
GSFrameBase(const GSFrameBase&) = delete;
|
|
|
|
|
virtual ~GSFrameBase() = default;
|
|
|
|
|
|
|
|
|
|
virtual void close() = 0;
|
|
|
|
|
virtual bool shown() = 0;
|
|
|
|
|
virtual void hide() = 0;
|
|
|
|
|
virtual void show() = 0;
|
|
|
|
|
virtual void toggle_fullscreen() = 0;
|
|
|
|
|
|
|
|
|
|
virtual void delete_context(draw_context_t ctx) = 0;
|
|
|
|
|
virtual draw_context_t make_context() = 0;
|
|
|
|
|
virtual void set_current(draw_context_t ctx) = 0;
|
|
|
|
|
virtual void flip(draw_context_t ctx, bool skip_frame = false) = 0;
|
|
|
|
|
virtual int client_width() = 0;
|
|
|
|
|
virtual int client_height() = 0;
|
2024-09-11 20:32:27 +02:00
|
|
|
virtual f64 client_display_rate() = 0;
|
2024-07-31 02:36:08 +02:00
|
|
|
virtual bool has_alpha() = 0;
|
2020-10-30 21:26:22 +01:00
|
|
|
|
|
|
|
|
virtual display_handle_t handle() const = 0;
|
|
|
|
|
|
2022-11-05 11:05:36 +01:00
|
|
|
virtual bool can_consume_frame() const = 0;
|
2023-08-12 23:06:22 +02:00
|
|
|
virtual void present_frame(std::vector<u8>& data, u32 pitch, u32 width, u32 height, bool is_bgra) const = 0;
|
|
|
|
|
virtual void take_screenshot(const std::vector<u8> sshot_data, u32 sshot_width, u32 sshot_height, bool is_bgra) = 0;
|
2020-10-30 21:26:22 +01:00
|
|
|
};
|