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 <unison/video/Blittable.hpp>
7 #include <unison/video/DisplayList.hpp>
13 Blittable::~Blittable()
17 void Blittable::blit_section(const SurfaceSection §ion, const Point &dst_pos, const RenderOptions &options)
19 blit(section.image, dst_pos, section.clip_rect, options);
22 void Blittable::blit_section(const TextureSection §ion, const Point &dst_pos, const RenderOptions &options)
24 blit(section.image, dst_pos, section.clip_rect, options);
27 void Blittable::draw(const DisplayList &list)
32 BlittableSection::BlittableSection(Blittable &image, const Rect &clip_rect) :
38 void BlittableSection::blit(const Surface &src, const Point &dst_pos, const Rect &src_rect, const RenderOptions &options)
40 Rect overlap = clip_rect.get_overlap(Rect(dst_pos, src_rect.size));
45 Rect clipped_src_rect(src_rect.pos, overlap.size);
46 clipped_src_rect.pos += overlap.pos;
47 clipped_src_rect.pos -= dst_pos;
48 image.blit(src, overlap.pos - clip_rect.pos, clipped_src_rect, options);
51 void BlittableSection::blit(const Texture &src, const Point &dst_pos, const Rect &src_rect, const RenderOptions &options)
53 Rect overlap = clip_rect.get_overlap(Rect(dst_pos, src_rect.size));
58 Rect clipped_src_rect(src_rect.pos, overlap.size);
59 clipped_src_rect.pos += overlap.pos;
60 clipped_src_rect.pos -= dst_pos;
61 image.blit(src, overlap.pos - clip_rect.pos, clipped_src_rect, options);
64 void BlittableSection::fill(const Color &color, const Rect &rect)
66 Rect overlap = clip_rect.get_overlap(rect);
67 overlap.pos -= clip_rect.pos;
68 image.fill(color, overlap);
71 void BlittableSection::fill_blend(const Color &color, const Rect &rect)
73 Rect overlap = clip_rect.get_overlap(rect);
74 overlap.pos -= clip_rect.pos;
75 image.fill_blend(color, overlap);