Mercurial > malikania
view libclient/malikania/backend/sdl/image_backend.hpp @ 43:fabbe1759cec
Misc: switch to mlk namespace, closes #589
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 29 Nov 2016 22:25:17 +0100 |
parents | a47a4477f347 |
children | 858621081b95 |
line wrap: on
line source
/* * image_backend.hpp -- image object (SDL2 implementation) * * Copyright (c) 2013-2016 Malikania Authors * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef MALIKANIA_IMAGE_BACKEND_HPP #define MALIKANIA_IMAGE_BACKEND_HPP #include <memory> #include <SDL.h> #include <malikania/size.hpp> #include <malikania/image.hpp> namespace mlk { class image; class point; class rectangle; class window; class image::backend_impl { private: std::unique_ptr<SDL_Surface, void (*)(SDL_Surface *)> m_surface; std::unique_ptr<SDL_Texture, void (*)(SDL_Texture *)> m_texture; mlk::size m_size; void create_texture(window& window); public: backend_impl(image& self, std::string data); inline SDL_Texture* texture() noexcept { return m_texture.get(); } inline const mlk::size& size() const noexcept { return m_size; } void draw(window& window, const point& position); void draw(window& window, const rectangle& source, const rectangle& target); }; } // !mlk #endif // !MALIKANIA_IMAGE_BACKEND_HPP