1 // Copyright Timothy Goya 2007.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
6 #include "Renderer.hpp"
7 #include <unison/video/Surface.hpp>
8 #include <unison/video/Window.hpp>
18 Renderer::Renderer(const std::vector<Backend::Renderer *> &renderers) :
31 std::vector<Backend::Renderer *>::const_reverse_iterator found = std::find_if(renderers.rbegin(), renderers.rend(), std::mem_fun(&Unison::Video::Backend::Renderer::is_usable));
32 if(found == renderers.rend())
34 fputs("No usable renderers found\n", stderr);
48 std::string Renderer::get_name()
53 bool Renderer::is_usable()
55 return std::find_if(renderers.begin(), renderers.end(), std::mem_fun(&Unison::Video::Backend::Renderer::is_usable)) != renderers.end();
58 Surface Renderer::load_surface(const std::string &filename)
61 return renderer->load_surface(filename);
64 Surface Renderer::load_surface(const std::string &filename, const Color &colorkey)
67 return renderer->load_surface(filename, colorkey);
70 void Renderer::save_surface(const Surface &surface, const std::string &filename)
73 return renderer->save_surface(surface, filename);
76 void Renderer::blit(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos, const RenderOptions &options)
79 renderer->blit(src, src_rect, dst, dst_pos, options);
82 void Renderer::blit(Backend::Texture *src, const Rect &src_rect, Surface &dst, const Point &dst_pos, const RenderOptions &options)
85 renderer->blit(src, src_rect, dst, dst_pos, options);
88 void Renderer::fill(Surface &dst, const Color &color, const Rect &rect)
91 renderer->fill(dst, color, rect);
94 void Renderer::fill_blend(Surface &dst, const Color &color, const Rect &rect)
97 renderer->fill_blend(dst, color, rect);
100 Backend::Window *Renderer::create_window(const Area &size, const Area &logical_size, bool fullscreen)
103 return renderer->create_window(size, logical_size, fullscreen);
106 Backend::Texture *Renderer::create_texture(const Surface &surface)
109 return renderer->create_texture(surface);