| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | // Copyright (c) 2016-2018 Easy2D - Nomango
 | 
					
						
							|  |  |  |  | // 
 | 
					
						
							|  |  |  |  | // Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					
						
							|  |  |  |  | // of this software and associated documentation files (the "Software"), to deal
 | 
					
						
							|  |  |  |  | // in the Software without restriction, including without limitation the rights
 | 
					
						
							|  |  |  |  | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
					
						
							|  |  |  |  | // copies of the Software, and to permit persons to whom the Software is
 | 
					
						
							|  |  |  |  | // furnished to do so, subject to the following conditions:
 | 
					
						
							|  |  |  |  | // 
 | 
					
						
							|  |  |  |  | // The above copyright notice and this permission notice shall be included in
 | 
					
						
							|  |  |  |  | // all copies or substantial portions of the Software.
 | 
					
						
							|  |  |  |  | // 
 | 
					
						
							|  |  |  |  | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
					
						
							|  |  |  |  | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
					
						
							|  |  |  |  | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
					
						
							|  |  |  |  | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
					
						
							|  |  |  |  | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
					
						
							|  |  |  |  | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
					
						
							|  |  |  |  | // THE SOFTWARE.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2018-11-23 14:55:03 +08:00
										 |  |  |  | #include "include-forwards.h"
 | 
					
						
							| 
									
										
										
										
											2019-03-12 00:27:54 +08:00
										 |  |  |  | #include <d2d1.h>
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace easy2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API Geometry | 
					
						
							| 
									
										
										
										
											2019-01-24 12:21:01 +08:00
										 |  |  |  | 		: public virtual Object | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-11-20 15:18:54 +08:00
										 |  |  |  | 		friend class Canvas; | 
					
						
							| 
									
										
										
										
											2018-11-20 14:30:39 +08:00
										 |  |  |  | 		friend class GeometryNode; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		Geometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~Geometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 15:00:01 +08:00
										 |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1><EFBFBD>а<EFBFBD>Χ<EFBFBD><CEA7>
 | 
					
						
							|  |  |  |  | 		Rect GetBoundingBox(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		// <20>ж<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool ContainsPoint( | 
					
						
							|  |  |  |  | 			Point const& point | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 13:48:49 +08:00
										 |  |  |  | 		// <20><>ȡͼ<C8A1><CDBC>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֱ<EFBFBD>ߵij<DFB5><C4B3><EFBFBD>
 | 
					
						
							|  |  |  |  | 		float GetLength(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>·<EFBFBD><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>λ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool ComputePointAt( | 
					
						
							|  |  |  |  | 			float length, | 
					
						
							|  |  |  |  | 			Point* point, | 
					
						
							|  |  |  |  | 			Point* tangent | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 15:00:01 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		float ComputeArea(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2019-03-10 13:44:02 +08:00
										 |  |  |  | 		ComPtr<ID2D1Geometry> geo_; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:30:39 +08:00
										 |  |  |  | 	// ֱ<><D6B1>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API LineGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 14:30:39 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		LineGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		LineGeometry( | 
					
						
							|  |  |  |  | 			Point const& begin, | 
					
						
							|  |  |  |  | 			Point const& end | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~LineGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		Point const& GetBegin() const { return begin_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		Point const& GetEnd() const { return end_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetLine( | 
					
						
							|  |  |  |  | 			Point const& begin, | 
					
						
							|  |  |  |  | 			Point const& end | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetBegin( | 
					
						
							|  |  |  |  | 			Point const& begin | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetEnd( | 
					
						
							|  |  |  |  | 			Point const& end | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	protected: | 
					
						
							|  |  |  |  | 		Point begin_; | 
					
						
							|  |  |  |  | 		Point end_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API RectangleGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		RectangleGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		RectangleGeometry( | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 			Rect const& rect | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		RectangleGeometry( | 
					
						
							|  |  |  |  | 			Point const& left_top, | 
					
						
							|  |  |  |  | 			Size const& size | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~RectangleGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Rect const& GetRect() const { return rect_; } | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		void SetRect(Rect const& rect); | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Rect rect_; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API CircleGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		CircleGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		CircleGeometry( | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 			Point const& center, | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 			float radius | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~CircleGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		float GetRadius() const { return radius_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetRadius( | 
					
						
							|  |  |  |  | 			float radius | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Point const& GetCenter() const { return center_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetCenter( | 
					
						
							|  |  |  |  | 			Point const& center | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetCircle( | 
					
						
							|  |  |  |  | 			Point const& center, | 
					
						
							|  |  |  |  | 			float radius | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Point center_; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		float radius_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API EllipseGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		EllipseGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		EllipseGeometry( | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 			Point const& center, | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~EllipseGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		float GetRadiusX() const { return radius_x_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		float GetRadiusY() const { return radius_y_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetRadius( | 
					
						
							|  |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Point const& GetCenter() const { return center_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetCenter( | 
					
						
							|  |  |  |  | 			Point const& center | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetEllipse( | 
					
						
							|  |  |  |  | 			Point const& center, | 
					
						
							|  |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		Point center_; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		float radius_x_; | 
					
						
							|  |  |  |  | 		float radius_y_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API PathGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		PathGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~PathGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							| 
									
										
										
										
											2018-11-20 14:01:55 +08:00
										 |  |  |  | 		void BeginPath( | 
					
						
							|  |  |  |  | 			Point const& begin_pos = Point{}	/* <20><>ʼ<EFBFBD><CABC> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		void EndPath( | 
					
						
							|  |  |  |  | 			bool closed = true		/* ·<><C2B7><EFBFBD>Ƿ<EFBFBD><C7B7>պ<EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶<EFBFBD>
 | 
					
						
							|  |  |  |  | 		void AddLine( | 
					
						
							|  |  |  |  | 			Point const& point		/* <20>˵<EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>߶<EFBFBD>
 | 
					
						
							|  |  |  |  | 		void AddLines( | 
					
						
							| 
									
										
										
										
											2019-01-21 21:24:45 +08:00
										 |  |  |  | 			Array<Point> const& points | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		void AddBezier( | 
					
						
							|  |  |  |  | 			Point const& point1,	/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD> */ | 
					
						
							|  |  |  |  | 			Point const& point2,	/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĵڶ<C4B5><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD> */ | 
					
						
							|  |  |  |  | 			Point const& point3		/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5>յ<EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 15:56:56 +08:00
										 |  |  |  | 		// <20><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 		void AddArc( | 
					
						
							|  |  |  |  | 			Point const& point,		/* <20>յ<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2019-02-03 22:38:39 +08:00
										 |  |  |  | 			Size const& radius,		/* <20><>Բ<EFBFBD>뾶 */ | 
					
						
							| 
									
										
										
										
											2018-11-20 15:56:56 +08:00
										 |  |  |  | 			float rotation,			/* <20><>Բ<EFBFBD><D4B2>ת<EFBFBD>Ƕ<EFBFBD> */ | 
					
						
							|  |  |  |  | 			bool clockwise = true,	/* ˳ʱ<CBB3><CAB1> or <20><>ʱ<EFBFBD><CAB1> */ | 
					
						
							|  |  |  |  | 			bool is_small = true	/* <20>Ƿ<EFBFBD>ȡС<C8A1><D0A1> 180<38><30> <20>Ļ<EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		void ClearPath(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2019-03-10 13:44:02 +08:00
										 |  |  |  | 		ComPtr<ID2D1PathGeometry>	current_geometry_; | 
					
						
							|  |  |  |  | 		ComPtr<ID2D1GeometrySink>	current_sink_; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-11-20 14:30:39 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2019-02-09 00:03:24 +08:00
										 |  |  |  | 	class E2D_API RoundedRectGeometry | 
					
						
							| 
									
										
										
										
											2018-11-20 14:30:39 +08:00
										 |  |  |  | 		: public Geometry | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		RoundedRectGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		RoundedRectGeometry( | 
					
						
							|  |  |  |  | 			Rect const& rect, | 
					
						
							|  |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		virtual ~RoundedRectGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		float GetRadiusX() const { return radius_x_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		float GetRadiusY() const { return radius_y_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetRadius( | 
					
						
							|  |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		Rect const& GetRect() const { return rect_; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetRect( | 
					
						
							|  |  |  |  | 			Rect const& rect | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		void SetRoundedRect( | 
					
						
							|  |  |  |  | 			Rect const& rect, | 
					
						
							|  |  |  |  | 			float radius_x, | 
					
						
							|  |  |  |  | 			float radius_y | 
					
						
							|  |  |  |  | 		); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	protected: | 
					
						
							|  |  |  |  | 		Rect	rect_; | 
					
						
							|  |  |  |  | 		float	radius_x_; | 
					
						
							|  |  |  |  | 		float	radius_y_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-11-20 01:20:06 +08:00
										 |  |  |  | } |