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
 | 
						|
 |