mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 04:39:03 +02:00
Window space is not a sensible space for CSS points, as returned by getBoxQuads, since the CSS points are relative to window origin and not the layout origin. This new method is useful in paired calling patterns, where the returned quads are further translated by the position of the document node relative to the window origin. Later parts of this patch demonstrate this calling pattern in a test. Differential Revision: https://phabricator.services.mozilla.com/D52788 --HG-- extra : moz-landing-system : lando
68 lines
2.3 KiB
C++
68 lines
2.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* 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 MOZILLA_GEOMETRYUTILS_H_
|
|
#define MOZILLA_GEOMETRYUTILS_H_
|
|
|
|
#include "mozilla/ErrorResult.h"
|
|
#include "nsTArray.h"
|
|
#include "nsCOMPtr.h"
|
|
|
|
/**
|
|
* This file defines utility functions for converting between layout
|
|
* coordinate systems.
|
|
*/
|
|
|
|
class nsINode;
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
struct BoxQuadOptions;
|
|
struct ConvertCoordinateOptions;
|
|
class DOMQuad;
|
|
class DOMRectReadOnly;
|
|
class DOMPoint;
|
|
struct DOMPointInit;
|
|
class OwningTextOrElementOrDocument;
|
|
class TextOrElementOrDocument;
|
|
enum class CallerType : uint32_t;
|
|
} // namespace dom
|
|
|
|
typedef dom::TextOrElementOrDocument GeometryNode;
|
|
typedef dom::OwningTextOrElementOrDocument OwningGeometryNode;
|
|
|
|
/**
|
|
* Computes quads for aNode using aOptions, according to
|
|
* GeometryUtils.getBoxQuads. May set an error in aRv.
|
|
*/
|
|
void GetBoxQuads(nsINode* aNode, const dom::BoxQuadOptions& aOptions,
|
|
nsTArray<RefPtr<dom::DOMQuad> >& aResult,
|
|
dom::CallerType aCallerType, ErrorResult& aRv);
|
|
|
|
void GetBoxQuadsFromWindowOrigin(nsINode* aNode,
|
|
const dom::BoxQuadOptions& aOptions,
|
|
nsTArray<RefPtr<dom::DOMQuad> >& aResult,
|
|
ErrorResult& aRv);
|
|
|
|
already_AddRefed<dom::DOMQuad> ConvertQuadFromNode(
|
|
nsINode* aTo, dom::DOMQuad& aQuad, const GeometryNode& aFrom,
|
|
const dom::ConvertCoordinateOptions& aOptions, dom::CallerType aCallerType,
|
|
ErrorResult& aRv);
|
|
|
|
already_AddRefed<dom::DOMQuad> ConvertRectFromNode(
|
|
nsINode* aTo, dom::DOMRectReadOnly& aRect, const GeometryNode& aFrom,
|
|
const dom::ConvertCoordinateOptions& aOptions, dom::CallerType aCallerType,
|
|
ErrorResult& aRv);
|
|
|
|
already_AddRefed<dom::DOMPoint> ConvertPointFromNode(
|
|
nsINode* aTo, const dom::DOMPointInit& aPoint, const GeometryNode& aFrom,
|
|
const dom::ConvertCoordinateOptions& aOptions, dom::CallerType aCallerType,
|
|
ErrorResult& aRv);
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif /* MOZILLA_GEOMETRYUTILS_H_ */
|