summaryrefslogtreecommitdiff
path: root/lib/nes/app/ui/screen-freeze.hh
blob: fe67aada90dd9093ce36cd64324817526f0d109a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include "nes/app/ui/screen.hh"
#include "nes/common/rgb.hh"
#include "nes/common/display.hh"

namespace nes::app
{
	/// Freeze screen which preserves the display buffer at a certain state.
	///
	/// This is usually used to preserve the image from the console when the game should not continue.
	class screen_freeze final : public screen
	{
		rgb frozen_data_[display::width * display::height]{};

	public:
		explicit screen_freeze() = default;

		auto render(renderer&) -> void override;
		auto process_events() -> action override;

		/// Update the image shown to the back buffer of the given display.
		auto freeze(display const&) -> void;
	};
} // namespace nes::app