forked from mirrors/gecko-dev
		
	 a8e64a94e1
			
		
	
	
		a8e64a94e1
		
	
	
	
	
		
			
			MozReview-Commit-ID: 3uS9s5ZrPFd --HG-- extra : rebase_source : ff64b4468ee99ba08fd8638298a27711b7fb6393
		
			
				
	
	
		
			91 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 | |
|  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef CanvasPath_h
 | |
| #define CanvasPath_h
 | |
| 
 | |
| #include "mozilla/Attributes.h"
 | |
| #include "mozilla/RefPtr.h"
 | |
| #include "nsWrapperCache.h"
 | |
| #include "mozilla/gfx/2D.h"
 | |
| #include "mozilla/dom/BindingDeclarations.h"
 | |
| #include "mozilla/ErrorResult.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace dom {
 | |
| 
 | |
| enum class CanvasWindingRule : uint8_t;
 | |
| class SVGMatrix;
 | |
| 
 | |
| class CanvasPath final :
 | |
|   public nsWrapperCache
 | |
| {
 | |
| public:
 | |
|   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CanvasPath)
 | |
|   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(CanvasPath)
 | |
| 
 | |
|   nsCOMPtr<nsISupports> GetParentObject() { return mParent; }
 | |
| 
 | |
|   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 | |
| 
 | |
|   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
 | |
|                                                   ErrorResult& rv);
 | |
|   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
 | |
|                                                   CanvasPath& aCanvasPath,
 | |
|                                                   ErrorResult& rv);
 | |
|   static already_AddRefed<CanvasPath> Constructor(const GlobalObject& aGlobal,
 | |
|                                                   const nsAString& aPathString,
 | |
|                                                   ErrorResult& rv);
 | |
| 
 | |
|   void ClosePath();
 | |
|   void MoveTo(double x, double y);
 | |
|   void LineTo(double x, double y);
 | |
|   void QuadraticCurveTo(double cpx, double cpy, double x, double y);
 | |
|   void BezierCurveTo(double cp1x, double cp1y,
 | |
|                      double cp2x, double cp2y,
 | |
|                      double x, double y);
 | |
|   void ArcTo(double x1, double y1, double x2, double y2, double radius,
 | |
|              ErrorResult& error);
 | |
|   void Rect(double x, double y, double w, double h);
 | |
|   void Arc(double x, double y, double radius,
 | |
|            double startAngle, double endAngle, bool anticlockwise,
 | |
|            ErrorResult& error);
 | |
|   void Ellipse(double x, double y, double radiusX, double radiusY,
 | |
|                double rotation, double startAngle, double endAngle,
 | |
|                bool anticlockwise, ErrorResult& error);
 | |
| 
 | |
|   void LineTo(const gfx::Point& aPoint);
 | |
|   void BezierTo(const gfx::Point& aCP1,
 | |
|                 const gfx::Point& aCP2,
 | |
|                 const gfx::Point& aCP3);
 | |
| 
 | |
|   already_AddRefed<gfx::Path> GetPath(const CanvasWindingRule& aWinding,
 | |
|                                   const gfx::DrawTarget* aTarget) const;
 | |
| 
 | |
|   explicit CanvasPath(nsISupports* aParent);
 | |
|   // already_AddRefed arg because the return value from Path::CopyToBuilder()
 | |
|   // is passed directly and we can't drop the only ref to have a raw pointer.
 | |
|   CanvasPath(nsISupports* aParent,
 | |
|              already_AddRefed<gfx::PathBuilder> aPathBuilder);
 | |
| 
 | |
|   void AddPath(CanvasPath& aCanvasPath,
 | |
|                const Optional<NonNull<SVGMatrix>>& aMatrix);
 | |
| 
 | |
| private:
 | |
|   virtual ~CanvasPath() {}
 | |
| 
 | |
|   nsCOMPtr<nsISupports> mParent;
 | |
|   static gfx::Float ToFloat(double aValue) { return gfx::Float(aValue); }
 | |
| 
 | |
|   mutable RefPtr<gfx::Path> mPath;
 | |
|   mutable RefPtr<gfx::PathBuilder> mPathBuilder;
 | |
| 
 | |
|   void EnsurePathBuilder() const;
 | |
| };
 | |
| 
 | |
| } // namespace dom
 | |
| } // namespace mozilla
 | |
| 
 | |
| #endif /* CanvasPath_h */
 | |
| 
 |