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 #ifndef UNISON_VIDEO_BLITTERS_HPP
7 #define UNISON_VIDEO_BLITTERS_HPP
9 #include <unison/video/Coord.hpp>
10 #include <unison/video/RenderOptions.hpp>
21 static void blit_upper(const Surface &src, Rect src_rect, Surface &dst, Point dst_pos, void (*blit_lower)(const Surface &, const Rect &, Surface &, const Point &));
23 static void blit_lower_none(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos);
25 static void blit_lower_mask(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos);
27 static void blit_lower_alpha(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos);
29 static void blit_lower_add(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos);
31 static void blit_lower_mod(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos);
33 static void blit_blend_none(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos)
35 blit_upper(src, src_rect, dst, dst_pos, blit_lower_none);
38 static void blit_blend_mask(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos)
40 blit_upper(src, src_rect, dst, dst_pos, blit_lower_mask);
43 static void blit_blend_alpha(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos)
45 blit_upper(src, src_rect, dst, dst_pos, blit_lower_alpha);
48 static void blit_blend_add(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos)
50 blit_upper(src, src_rect, dst, dst_pos, blit_lower_add);
53 static void blit_blend_mod(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos)
55 blit_upper(src, src_rect, dst, dst_pos, blit_lower_mod);
58 static void blit_blend(const Surface &src, const Rect &src_rect, Surface &dst, const Point &dst_pos, BlendMode blend)
63 blit_blend_none(src, src_rect, dst, dst_pos);
66 blit_blend_mask(src, src_rect, dst, dst_pos);
69 blit_blend_alpha(src, src_rect, dst, dst_pos);
72 blit_blend_add(src, src_rect, dst, dst_pos);
75 blit_blend_mod(src, src_rect, dst, dst_pos);