image::paste may make a graphics if the graphics object is empty
This commit is contained in:
		
							parent
							
								
									13674fdc48
								
							
						
					
					
						commit
						358c0f662e
					
				@ -37,7 +37,7 @@ namespace nana{
 | 
			
		||||
		///  The construction that creates the widget and set the titel or caption
 | 
			
		||||
 | 
			
		||||
		group(window    parent,          ///< 
 | 
			
		||||
			  string    titel_ /*= { STR("") }*/,     ///< 
 | 
			
		||||
			  ::nana::string    titel,     ///< 
 | 
			
		||||
			  bool      format = false,  ///< Use a formated label?
 | 
			
		||||
			  unsigned  gap = 2,         ///< betwen the content  and the external limit
 | 
			
		||||
			  rectangle r = {} ,          ///<
 | 
			
		||||
@ -67,11 +67,10 @@ namespace nana{
 | 
			
		||||
		}
 | 
			
		||||
	private:
 | 
			
		||||
		void _m_add_child(const char* field, widget*);
 | 
			
		||||
 | 
			
		||||
		void _m_init();
 | 
			
		||||
		void _m_complete_creation() override;
 | 
			
		||||
		::nana::string _m_caption() const override;
 | 
			
		||||
		void _m_caption(::nana::string&&) override;
 | 
			
		||||
		void init();
 | 
			
		||||
	private:
 | 
			
		||||
		std::unique_ptr<implement> impl_;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -28,20 +28,21 @@ namespace nana{
 | 
			
		||||
 | 
			
		||||
		unsigned gap{2};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		implement() = default;
 | 
			
		||||
		implement(window grp_panel, ::nana::string titel, bool vsb, unsigned gap=2)
 | 
			
		||||
			: caption (grp_panel, std::move(titel), vsb),
 | 
			
		||||
			  place_content{grp_panel},
 | 
			
		||||
			  gap{gap}
 | 
			
		||||
		{
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void create(window pnl)
 | 
			
		||||
		{
 | 
			
		||||
			caption.create(pnl);
 | 
			
		||||
			caption.caption(STR(""));
 | 
			
		||||
			place_content.bind(pnl);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		implement() = default;
 | 
			
		||||
		implement(window grp_panel, string titel, bool format, unsigned gap=2)
 | 
			
		||||
			: caption (grp_panel, std::move(titel), format),
 | 
			
		||||
			  place_content{grp_panel},
 | 
			
		||||
			  gap{gap}
 | 
			
		||||
		{
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	group::group()
 | 
			
		||||
@ -56,17 +57,17 @@ namespace nana{
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	group::group(	window    parent,              ///<
 | 
			
		||||
					string    titel_   /*={}*/,     ///<
 | 
			
		||||
					::nana::string    titel   /*={}*/,     ///<
 | 
			
		||||
					bool      format /*=false*/,  ///<
 | 
			
		||||
					unsigned  gap /*=2*/,         ///<
 | 
			
		||||
					rectangle r /*={} */,          ///<
 | 
			
		||||
		            bool      vsb /*= true */        ///<
 | 
			
		||||
					)
 | 
			
		||||
		: panel(parent, r, vsb),
 | 
			
		||||
		  impl_(new implement(*this, std::move(titel_), vsb))
 | 
			
		||||
		  impl_(new implement(*this, std::move(titel), vsb, gap))
 | 
			
		||||
	{
 | 
			
		||||
		impl_->caption.format(format);
 | 
			
		||||
		init();
 | 
			
		||||
		_m_init();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -114,7 +115,7 @@ namespace nana{
 | 
			
		||||
		impl_->place_content[field] << wdg->handle();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void group::init()
 | 
			
		||||
	void group::_m_init()
 | 
			
		||||
	{
 | 
			
		||||
		this->div(nullptr);
 | 
			
		||||
 | 
			
		||||
@ -153,7 +154,7 @@ namespace nana{
 | 
			
		||||
		impl_->create(handle());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		init();
 | 
			
		||||
		_m_init();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	::nana::string group::_m_caption() const
 | 
			
		||||
 | 
			
		||||
@ -263,38 +263,33 @@ namespace paint
 | 
			
		||||
 | 
			
		||||
		void image::paste(graphics& dst, const point& p_dst) const
 | 
			
		||||
		{
 | 
			
		||||
			if(image_ptr_ && !dst.empty())
 | 
			
		||||
				image_ptr_->paste(::nana::rectangle{ image_ptr_->size() }, dst, p_dst);
 | 
			
		||||
 | 
			
		||||
			if (!image_ptr_)
 | 
			
		||||
				throw std::runtime_error("image is empty");
 | 
			
		||||
 | 
			
		||||
			if (dst.empty())
 | 
			
		||||
				throw std::invalid_argument("graphics is empty");
 | 
			
		||||
			this->paste(rectangle{ this->size() }, dst, p_dst);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void image::paste(const nana::rectangle& r_src, graphics & dst, const nana::point& p_dst) const
 | 
			
		||||
		void image::paste(const rectangle& r_src, graphics & dst, const point& p_dst) const
 | 
			
		||||
		{
 | 
			
		||||
			if(image_ptr_ && !dst.empty())
 | 
			
		||||
			if (image_ptr_)
 | 
			
		||||
			{
 | 
			
		||||
				if (dst.empty())
 | 
			
		||||
					dst.make({ r_src.width, r_src.height });	//throws if failed to create
 | 
			
		||||
 | 
			
		||||
				image_ptr_->paste(r_src, dst, p_dst);
 | 
			
		||||
 | 
			
		||||
			if (!image_ptr_)
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				throw std::runtime_error("image is empty");
 | 
			
		||||
 | 
			
		||||
			if (dst.empty())
 | 
			
		||||
				throw std::invalid_argument("graphics is empty");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void image::stretch(const nana::rectangle& r_src, graphics& dst, const nana::rectangle & r_dst) const
 | 
			
		||||
		{
 | 
			
		||||
			if(image_ptr_ && !dst.empty())
 | 
			
		||||
			if (image_ptr_)
 | 
			
		||||
			{
 | 
			
		||||
				if (dst.empty())
 | 
			
		||||
					dst.make({ r_src.width, r_src.height });	//throws if failed to create
 | 
			
		||||
 | 
			
		||||
				image_ptr_->stretch(r_src, dst, r_dst);
 | 
			
		||||
 | 
			
		||||
			if (!image_ptr_)
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				throw std::runtime_error("image is empty");
 | 
			
		||||
 | 
			
		||||
			if (dst.empty())
 | 
			
		||||
				throw std::invalid_argument("graphics is empty");
 | 
			
		||||
		}
 | 
			
		||||
	//end class image
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user