mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1129147 - Part 1. Take CanvasPath into a separate file, to avoid circular dependency. r=roc
This commit is contained in:
parent
c1209ca6f5
commit
36795ba9d7
@ -845,7 +845,7 @@ DOMInterfaces = {
|
||||
|
||||
'Path2D': {
|
||||
'nativeType': 'mozilla::dom::CanvasPath',
|
||||
'headerFile': 'CanvasRenderingContext2D.h'
|
||||
'headerFile': 'CanvasPath.h'
|
||||
},
|
||||
|
||||
'PeerConnectionImpl': {
|
||||
|
88
dom/canvas/CanvasPath.h
Normal file
88
dom/canvas/CanvasPath.h
Normal file
@ -0,0 +1,88 @@
|
||||
/* 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 : uint32_t;
|
||||
class SVGMatrix;
|
||||
|
||||
class CanvasPath MOZ_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);
|
||||
|
||||
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 LineTo(const gfx::Point& aPoint);
|
||||
void BezierTo(const gfx::Point& aCP1,
|
||||
const gfx::Point& aCP2,
|
||||
const gfx::Point& aCP3);
|
||||
|
||||
TemporaryRef<gfx::Path> GetPath(const CanvasWindingRule& aWinding,
|
||||
const gfx::DrawTarget* aTarget) const;
|
||||
|
||||
explicit CanvasPath(nsISupports* aParent);
|
||||
// TemporaryRef 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,
|
||||
TemporaryRef<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;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CanvasPath_h */
|
||||
|
@ -96,6 +96,7 @@
|
||||
#include "nsCCUncollectableMarker.h"
|
||||
#include "nsWrapperCacheInlines.h"
|
||||
#include "mozilla/dom/CanvasRenderingContext2DBinding.h"
|
||||
#include "mozilla/dom/CanvasPath.h"
|
||||
#include "mozilla/dom/HTMLImageElement.h"
|
||||
#include "mozilla/dom/HTMLVideoElement.h"
|
||||
#include "mozilla/dom/SVGMatrix.h"
|
||||
|
@ -44,74 +44,12 @@ class OwningStringOrCanvasGradientOrCanvasPattern;
|
||||
class TextMetrics;
|
||||
class SVGMatrix;
|
||||
class CanvasFilterChainObserver;
|
||||
class CanvasPath;
|
||||
|
||||
extern const mozilla::gfx::Float SIGMA_MAX;
|
||||
|
||||
template<typename T> class Optional;
|
||||
|
||||
class CanvasPath MOZ_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);
|
||||
|
||||
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 LineTo(const gfx::Point& aPoint);
|
||||
void BezierTo(const gfx::Point& aCP1,
|
||||
const gfx::Point& aCP2,
|
||||
const gfx::Point& aCP3);
|
||||
|
||||
TemporaryRef<gfx::Path> GetPath(const CanvasWindingRule& aWinding,
|
||||
const gfx::DrawTarget* aTarget) const;
|
||||
|
||||
explicit CanvasPath(nsISupports* aParent);
|
||||
// TemporaryRef 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,
|
||||
TemporaryRef<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;
|
||||
};
|
||||
|
||||
struct CanvasBidiProcessor;
|
||||
class CanvasRenderingContext2DUserData;
|
||||
class CanvasDrawObserver;
|
||||
|
@ -25,6 +25,7 @@ EXPORTS.mozilla.ipc += [
|
||||
|
||||
EXPORTS.mozilla.dom += [
|
||||
'CanvasGradient.h',
|
||||
'CanvasPath.h',
|
||||
'CanvasPattern.h',
|
||||
'CanvasRenderingContext2D.h',
|
||||
'CanvasUtils.h',
|
||||
|
Loading…
Reference in New Issue
Block a user