1 /// @brief Include to copy textures or a subset of either textures. These operations are performed without memory allocations.
2 /// @file gli/copy.hpp
3 
4 #pragma once
5 
6 #include "type.hpp"
7 
8 namespace gli
9 {
10 	/// Copy a specific image of a texture
11 	template <typename texture_src_type, typename texture_dst_type>
12 	void copy(
13 		texture_src_type const& TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc,
14 		texture_dst_type& TextureDst, size_t LayerDst, size_t FaceDst, size_t LevelDst);
15 
16 	/// Copy a texture
17 	template <typename texture_src_type, typename texture_dst_type>
18 	void copy(
19 		texture_src_type const& TextureSrc,
20 		texture_dst_type& TextureDst);
21 
22 	// Copy an entire level of a texture
23 	template <typename texture_src_type, typename texture_dst_type>
24 	void copy_level(
25 		texture_src_type const& TextureSrc, size_t BaseLevelSrc,
26 		texture_dst_type& TextureDst, size_t BaseLevelDst);
27 
28 	// Copy multiple levels of a texture
29 	template <typename texture_src_type, typename texture_dst_type>
30 	void copy_level(
31 		texture_src_type const& TextureSrc, size_t BaseLevelSrc,
32 		texture_dst_type& TextureDst, size_t BaseLevelDst,
33 		size_t LevelCount);
34 
35 	// Copy an entire face of a texture
36 	template <typename texture_src_type, typename texture_dst_type>
37 	void copy_face(
38 		texture_src_type const& TextureSrc, size_t BaseFaceSrc,
39 		texture_dst_type& TextureDst, size_t BaseFaceDst);
40 
41 	// Copy multiple faces of a texture
42 	template <typename texture_src_type, typename texture_dst_type>
43 	void copy_face(
44 		texture_src_type const& TextureSrc, size_t BaseFaceSrc,
45 		texture_dst_type& TextureDst, size_t BaseFaceDst,
46 		size_t FaceCount);
47 
48 	// Copy an entire layer of a texture
49 	template <typename texture_src_type, typename texture_dst_type>
50 	void copy_layer(
51 		texture_src_type const& TextureSrc, size_t BaseLayerSrc,
52 		texture_dst_type& TextureDst, size_t BaseLayerDst);
53 
54 	// Copy multiple layers of a texture
55 	template <typename texture_src_type, typename texture_dst_type>
56 	void copy_layer(
57 		texture_src_type const& TextureSrc, size_t BaseLayerSrc,
58 		texture_dst_type& TextureDst, size_t BaseLayerDst,
59 		size_t LayerCount);
60 }//namespace gli
61 
62 #include "./core/copy.inl"
63