SDLRenderer.cxx 940 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "SDLRenderer.hxx"
  2. SDLRenderer::SDLRenderer(SDLWindow& window)
  3. {
  4. renderer_ = SDL_CreateRenderer(window, 0, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
  5. if (renderer_==nullptr) {
  6. throw SDLError("Failed to create renderer.");
  7. }
  8. SDL_SetRenderDrawBlendMode(renderer_, SDL_BLENDMODE_BLEND);
  9. SDL_RendererInfo info{};
  10. SDL_GetRendererInfo(renderer_, &info);
  11. SDL_Log("Created renderer (%s) successfully.", info.name);
  12. }
  13. SDLRenderer::~SDLRenderer() noexcept
  14. {
  15. destroy();
  16. }
  17. SDLRenderer::SDLRenderer(SDLRenderer&& src) noexcept
  18. :renderer_{src.renderer_}
  19. {
  20. src.renderer_ = nullptr;
  21. }
  22. SDLRenderer& SDLRenderer::operator=(SDLRenderer&& src) noexcept
  23. {
  24. destroy();
  25. std::swap(renderer_, src.renderer_);
  26. return *this;
  27. }
  28. void SDLRenderer::destroy() noexcept
  29. {
  30. if (renderer_!=nullptr) {
  31. SDL_DestroyRenderer(renderer_);
  32. SDL_Log("Destroyed renderer successfully.");
  33. renderer_ = nullptr;
  34. }
  35. }