forked from mirrors/gecko-dev
We're converting to nscoord in some places unnecessarily, reducing the precision of the computed value we return. This makes some tests unnecessarily fail if we change the base of nscoord. Differential Revision: https://phabricator.services.mozilla.com/D79996
99 lines
2.3 KiB
C++
99 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/. */
|
|
|
|
/* DOM object representing values in DOM computed style */
|
|
|
|
#ifndef nsROCSSPrimitiveValue_h___
|
|
#define nsROCSSPrimitiveValue_h___
|
|
|
|
#include "CSSValue.h"
|
|
#include "nsCoord.h"
|
|
#include "nsString.h"
|
|
|
|
class nsIURI;
|
|
|
|
/**
|
|
* Read-only CSS primitive value - a DOM object representing values in DOM
|
|
* computed style.
|
|
*/
|
|
class nsROCSSPrimitiveValue final : public mozilla::dom::CSSValue {
|
|
public:
|
|
enum : uint16_t {
|
|
CSS_UNKNOWN,
|
|
CSS_NUMBER,
|
|
CSS_PERCENTAGE,
|
|
CSS_EMS,
|
|
CSS_EXS,
|
|
CSS_PX,
|
|
CSS_CM,
|
|
CSS_MM,
|
|
CSS_IN,
|
|
CSS_PT,
|
|
CSS_PC,
|
|
CSS_DEG,
|
|
CSS_MS,
|
|
CSS_S,
|
|
CSS_HZ,
|
|
CSS_KHZ,
|
|
CSS_DIMENSION,
|
|
CSS_STRING,
|
|
CSS_URI,
|
|
CSS_RGBCOLOR,
|
|
CSS_NUMBER_INT32,
|
|
CSS_NUMBER_UINT32,
|
|
};
|
|
|
|
// CSSValue
|
|
void GetCssText(nsString& aText, mozilla::ErrorResult& aRv) final;
|
|
uint16_t CssValueType() const final;
|
|
|
|
// CSSPrimitiveValue
|
|
uint16_t PrimitiveType();
|
|
|
|
// nsROCSSPrimitiveValue
|
|
nsROCSSPrimitiveValue();
|
|
|
|
void SetNumber(float aValue);
|
|
void SetNumber(int32_t aValue);
|
|
void SetNumber(uint32_t aValue);
|
|
void SetPercent(float aValue);
|
|
void SetDegree(float aValue);
|
|
void SetPixels(float aValue);
|
|
void SetAppUnits(nscoord aValue);
|
|
void SetAppUnits(float aValue);
|
|
void SetString(const nsACString& aString);
|
|
void SetString(const nsAString& aString);
|
|
|
|
template <size_t N>
|
|
void SetString(const char (&aString)[N]) {
|
|
SetString(nsLiteralCString(aString));
|
|
}
|
|
|
|
void SetURI(nsIURI* aURI);
|
|
void SetTime(float aValue);
|
|
void Reset();
|
|
|
|
virtual ~nsROCSSPrimitiveValue();
|
|
|
|
protected:
|
|
uint16_t mType;
|
|
|
|
union {
|
|
float mFloat;
|
|
int32_t mInt32;
|
|
uint32_t mUint32;
|
|
char16_t* mString;
|
|
nsIURI* MOZ_OWNING_REF mURI;
|
|
} mValue;
|
|
};
|
|
|
|
inline nsROCSSPrimitiveValue* mozilla::dom::CSSValue::AsPrimitiveValue() {
|
|
return CssValueType() == mozilla::dom::CSSValue::CSS_PRIMITIVE_VALUE
|
|
? static_cast<nsROCSSPrimitiveValue*>(this)
|
|
: nullptr;
|
|
}
|
|
|
|
#endif /* nsROCSSPrimitiveValue_h___ */
|