You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
	
	
							112 lines
						
					
					
						
							3.3 KiB
						
					
					
				| #include "../type.hpp" | |
| #include <cstring> | |
|  | |
| namespace gli | |
| { | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t LayerSrc, size_t FaceSrc, size_t LevelSrc, | |
| 		texture_dst_type& TextureDst, size_t LayerDst, size_t FaceDst, size_t LevelDst | |
| 	) | |
| 	{ | |
| 		TextureDst.copy(TextureSrc, LayerSrc, FaceSrc, LevelSrc, LayerDst, FaceDst, LevelDst); | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy | |
| 	( | |
| 		texture_src_type const& TextureSrc, | |
| 		texture_dst_type& TextureDst | |
| 	) | |
| 	{ | |
| 		copy_layer(TextureSrc, 0, TextureDst, 0, TextureDst.layers()); | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_level | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseLevelSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseLevelDst, | |
| 		size_t LevelCount | |
| 	) | |
| 	{ | |
| 		for(size_t LayerIndex = 0, LayerCount = TextureSrc.layers(); LayerIndex < LayerCount; ++LayerIndex) | |
| 		for(size_t FaceIndex = 0, FaceCount = TextureSrc.faces(); FaceIndex < FaceCount; ++FaceIndex) | |
| 		for(size_t LevelIndex = 0; LevelIndex < LevelCount; ++LevelIndex) | |
| 		{ | |
| 			TextureDst.copy( | |
| 				TextureSrc, | |
| 				LayerIndex, FaceIndex, BaseLevelSrc + LevelIndex, | |
| 				LayerIndex, FaceIndex, BaseLevelDst + LevelIndex); | |
| 		} | |
| 	} | |
| 	 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_level | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseLevelSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseLevelDst | |
| 	) | |
| 	{ | |
| 		copy_level(TextureSrc, BaseLevelSrc, TextureDst, BaseLevelDst, 1); | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_face | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseFaceSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseFaceDst, | |
| 		size_t FaceCount | |
| 	) | |
| 	{ | |
| 		for(size_t LayerIndex = 0, LayerCount = TextureSrc.layers(); LayerIndex < LayerCount; ++LayerIndex) | |
| 		for(size_t FaceIndex = 0; FaceIndex < FaceCount; ++FaceIndex) | |
| 		for(size_t LevelIndex = 0, LevelCount = TextureSrc.levels(); LevelIndex < LevelCount; ++LevelIndex) | |
| 		{ | |
| 			TextureDst.copy( | |
| 				TextureSrc, | |
| 				LayerIndex, BaseFaceSrc + FaceIndex, LevelIndex, | |
| 				LayerIndex, BaseFaceDst + FaceIndex, LevelIndex); | |
| 		} | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_face | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseFaceSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseFaceDst | |
| 	) | |
| 	{ | |
| 		copy_face(TextureSrc, BaseFaceSrc, TextureDst, BaseFaceDst, 1); | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_layer | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseLayerSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseLayerDst, | |
| 		size_t LayerCount | |
| 	) | |
| 	{ | |
| 		for(size_t LayerIndex = 0; LayerIndex < LayerCount; ++LayerIndex) | |
| 		for(size_t FaceIndex = 0, FaceCount = TextureSrc.faces(); FaceIndex < FaceCount; ++FaceIndex) | |
| 		for(size_t LevelIndex = 0, LevelCount = TextureSrc.levels(); LevelIndex < LevelCount; ++LevelIndex) | |
| 		{ | |
| 			TextureDst.copy( | |
| 				TextureSrc, | |
| 				BaseLayerSrc + LayerIndex, FaceIndex, LevelIndex, | |
| 				BaseLayerDst + LayerIndex, FaceIndex, LevelIndex); | |
| 		} | |
| 	} | |
| 
 | |
| 	template <typename texture_src_type, typename texture_dst_type> | |
| 	void copy_layer | |
| 	( | |
| 		texture_src_type const& TextureSrc, size_t BaseLayerSrc, | |
| 		texture_dst_type& TextureDst, size_t BaseLayerDst | |
| 	) | |
| 	{ | |
| 		copy_layer(TextureSrc, BaseLayerSrc, TextureDst, BaseLayerDst, 1); | |
| 	} | |
| }//namespace gli
 | |
| 
 |