OXYGENHUB
◆ main openmsx / src / video / RendererFactory.hh
1.5 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
1
#ifndef RENDERERFACTORY_HH
2
#define RENDERERFACTORY_HH
3
4
#include "components.hh"
5
6
#include <memory>
7
8
namespace openmsx {
9
10
class Reactor;
11
class Display;
12
class VideoSystem;
13
class Renderer;
14
class VDP;
15
class V9990Renderer;
16
class V9990;
17
class LDRenderer;
18
class LaserdiscPlayer;
19
20
/** Interface for renderer factories.
21
  * Every Renderer type has its own RendererFactory.
22
  * A RendererFactory can be queried about the availability of the
23
  * associated Renderer and can instantiate that Renderer.
24
  */
25
namespace RendererFactory
26
{
27
	/** Create the video system required by the current renderer setting.
28
	  */
29
	[[nodiscard]] std::unique_ptr<VideoSystem> createVideoSystem(Reactor& reactor);
30
31
	/** Create the Renderer selected by the current renderer setting.
32
	  * @param vdp The VDP whose display will be rendered.
33
	  * @param display TODO
34
	  */
35
	[[nodiscard]] std::unique_ptr<Renderer> createRenderer(VDP& vdp, Display& display);
36
37
	/** Create the V9990 Renderer selected by the current renderer setting.
38
	  * @param vdp The V9990 VDP whose display will be rendered.
39
	  * @param display TODO
40
	  */
41
	[[nodiscard]] std::unique_ptr<V9990Renderer> createV9990Renderer(
42
		V9990& vdp, Display& display);
43
44
#if COMPONENT_LASERDISC
45
	/** Create the Laserdisc Renderer
46
	  * @param ld The Laserdisc player whose display will be rendered.
47
	  * @param display TODO
48
	  */
49
	[[nodiscard]] std::unique_ptr<LDRenderer> createLDRenderer(
50
		LaserdiscPlayer& ld, Display& display);
51
#endif
52
53
} // namespace RendererFactory
54
} // namespace openmsx
55
56
#endif