nana/source/gui/detail/dynamic_drawing_object.hpp
2016-08-11 02:26:47 +08:00

70 lines
1.4 KiB
C++

/*
* Dynamic Drawing Object Implementation
* Copyright(C) 2003-2013 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* @file: nana/gui/detail/dynamic_drawing_object.hpp
*
* !DON'T INCLUDE THIS HEADER FILE IN YOUR SOURCE CODE
*/
#ifndef NANA_GUI_DETAIL_DYNAMIC_DRAWING_OBJECT_HPP
#define NANA_GUI_DETAIL_DYNAMIC_DRAWING_OBJECT_HPP
#include <nana/paint/graphics.hpp>
#include <nana/paint/image.hpp>
namespace nana
{
namespace detail
{
namespace dynamic_drawing
{
class object
{
object(const object&) = delete;
object& operator=(const object&) = delete;
public:
object(){}
virtual ~object(){}
virtual bool diehard() const
{
return false;
}
virtual void draw(nana::paint::graphics&) const = 0;
};
//user_draw_function
class user_draw_function
: public object
{
public:
user_draw_function(std::function<void(paint::graphics&)> && f, bool diehard)
: diehard_(diehard), fn_(std::move(f))
{}
void draw(paint::graphics& graph) const
{
fn_(graph);
}
bool diehard() const
{
return diehard_;
}
private:
bool diehard_;
std::function<void(paint::graphics&)> fn_;
};
}//end namespace dynamic_drawing
}
}//end namespace nana
#endif