RendererFactory.hh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef RENDERERFACTORY_HH
  2. #define RENDERERFACTORY_HH
  3. #include <memory>
  4. #include "components.hh"
  5. namespace openmsx {
  6. class Reactor;
  7. class Display;
  8. class VideoSystem;
  9. class Renderer;
  10. class VDP;
  11. class V9990Renderer;
  12. class V9990;
  13. class LDRenderer;
  14. class LaserdiscPlayer;
  15. /** Interface for renderer factories.
  16. * Every Renderer type has its own RendererFactory.
  17. * A RendererFactory can be queried about the availability of the
  18. * associated Renderer and can instantiate that Renderer.
  19. */
  20. namespace RendererFactory
  21. {
  22. /** Create the video system required by the current renderer setting.
  23. */
  24. std::unique_ptr<VideoSystem> createVideoSystem(Reactor& reactor);
  25. /** Create the Renderer selected by the current renderer setting.
  26. * @param vdp The VDP whose display will be rendered.
  27. * @param display TODO
  28. */
  29. std::unique_ptr<Renderer> createRenderer(VDP& vdp, Display& display);
  30. /** Create the V9990 Renderer selected by the current renderer setting.
  31. * @param vdp The V9990 VDP whose display will be rendered.
  32. * @param display TODO
  33. */
  34. std::unique_ptr<V9990Renderer> createV9990Renderer(
  35. V9990& vdp, Display& display);
  36. #if COMPONENT_LASERDISC
  37. /** Create the Laserdisc Renderer
  38. * @param ld The Laserdisc player whose display will be rendered.
  39. * @param display TODO
  40. */
  41. std::unique_ptr<LDRenderer> createLDRenderer(
  42. LaserdiscPlayer& ld, Display& display);
  43. #endif
  44. } // namespace RendererFactory
  45. } // namespace openmsx
  46. #endif