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
|