70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 | 
