76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <nana/gui/effects.hpp>
 | 
						|
#include <nana/gui/programming_interface.hpp>
 | 
						|
 | 
						|
namespace nana
 | 
						|
{
 | 
						|
	namespace effects
 | 
						|
	{
 | 
						|
		bground_interface::~bground_interface()
 | 
						|
		{}
 | 
						|
 | 
						|
		bground_factory_interface::~bground_factory_interface()
 | 
						|
		{}
 | 
						|
 | 
						|
		//Here defines some effect implementations.
 | 
						|
		namespace impl
 | 
						|
		{
 | 
						|
			class transparent
 | 
						|
				: public bground_interface
 | 
						|
			{
 | 
						|
			public:
 | 
						|
				transparent(std::size_t percent)
 | 
						|
					: fade_rate_( percent <= 100 ? double(percent) / 100.0 : 0)
 | 
						|
				{}
 | 
						|
 | 
						|
				void take_effect(window wd, graph_reference graph) const
 | 
						|
				{
 | 
						|
					if(fade_rate_ < 0.001)
 | 
						|
						return;
 | 
						|
					graph.blend(::nana::rectangle{ graph.size() }, API::bgcolor(wd), fade_rate_);
 | 
						|
				}
 | 
						|
			private:
 | 
						|
				const double fade_rate_;
 | 
						|
			};
 | 
						|
 | 
						|
			class blur
 | 
						|
				: public bground_interface
 | 
						|
			{
 | 
						|
			public:
 | 
						|
				blur(std::size_t radius)
 | 
						|
					:radius_(radius)
 | 
						|
				{}
 | 
						|
 | 
						|
				void take_effect(window, graph_reference graph) const
 | 
						|
				{
 | 
						|
					graph.blur(::nana::rectangle{ graph.size() }, radius_);
 | 
						|
				}
 | 
						|
			private:
 | 
						|
				const std::size_t radius_;
 | 
						|
			};
 | 
						|
		}//end namespace impl
 | 
						|
		
 | 
						|
 | 
						|
 | 
						|
		//class bground_transparent
 | 
						|
			bground_transparent::bground_transparent(std::size_t percent)
 | 
						|
				: percent_(percent)
 | 
						|
			{}
 | 
						|
 | 
						|
			bground_interface* bground_transparent::create() const
 | 
						|
			{
 | 
						|
				return new impl::transparent(percent_);
 | 
						|
			}
 | 
						|
		//end class bgroun_transparent
 | 
						|
 | 
						|
		//class bground_blur
 | 
						|
			bground_blur::bground_blur(std::size_t radius)
 | 
						|
				: radius_(radius)
 | 
						|
			{}
 | 
						|
 | 
						|
			bground_interface * bground_blur::create() const
 | 
						|
			{
 | 
						|
				return new impl::blur(radius_);
 | 
						|
			}
 | 
						|
		//end class bground_blur
 | 
						|
	}
 | 
						|
}//end namespace nana
 |