/usr/include/thunderbird/SVGPreserveAspectRatio.h is in thunderbird-dev 1:52.8.0-1~deb8u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | /* -*- 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_CONTENT_SVGPRESERVEASPECTRATIO_H_
#define MOZILLA_CONTENT_SVGPRESERVEASPECTRATIO_H_
#include "mozilla/HashFunctions.h" // for HashGeneric
#include "nsWrapperCache.h"
#include "nsCycleCollectionParticipant.h"
#include "mozilla/ErrorResult.h"
#include "nsSVGElement.h"
namespace mozilla {
// Alignment Types
enum SVGAlign : uint8_t {
SVG_PRESERVEASPECTRATIO_UNKNOWN = 0,
SVG_PRESERVEASPECTRATIO_NONE = 1,
SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,
SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,
SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,
SVG_PRESERVEASPECTRATIO_XMINYMID = 5,
SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,
SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,
SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,
SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,
SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
};
// These constants represent the range of valid enum values for the <align>
// parameter. They exclude the sentinel _UNKNOWN value.
const uint16_t SVG_ALIGN_MIN_VALID = SVG_PRESERVEASPECTRATIO_NONE;
const uint16_t SVG_ALIGN_MAX_VALID = SVG_PRESERVEASPECTRATIO_XMAXYMAX;
// Meet-or-slice Types
enum SVGMeetOrSlice : uint8_t {
SVG_MEETORSLICE_UNKNOWN = 0,
SVG_MEETORSLICE_MEET = 1,
SVG_MEETORSLICE_SLICE = 2
};
// These constants represent the range of valid enum values for the
// <meetOrSlice> parameter. They exclude the sentinel _UNKNOWN value.
const uint16_t SVG_MEETORSLICE_MIN_VALID = SVG_MEETORSLICE_MEET;
const uint16_t SVG_MEETORSLICE_MAX_VALID = SVG_MEETORSLICE_SLICE;
class SVGAnimatedPreserveAspectRatio;
class SVGPreserveAspectRatio final
{
friend class SVGAnimatedPreserveAspectRatio;
public:
SVGPreserveAspectRatio(SVGAlign aAlign, SVGMeetOrSlice aMeetOrSlice)
: mAlign(aAlign)
, mMeetOrSlice(aMeetOrSlice)
{}
bool operator==(const SVGPreserveAspectRatio& aOther) const;
explicit SVGPreserveAspectRatio()
: mAlign(SVG_PRESERVEASPECTRATIO_UNKNOWN)
, mMeetOrSlice(SVG_MEETORSLICE_UNKNOWN)
{}
nsresult SetAlign(uint16_t aAlign) {
if (aAlign < SVG_ALIGN_MIN_VALID || aAlign > SVG_ALIGN_MAX_VALID)
return NS_ERROR_FAILURE;
mAlign = static_cast<uint8_t>(aAlign);
return NS_OK;
}
SVGAlign GetAlign() const {
return static_cast<SVGAlign>(mAlign);
}
nsresult SetMeetOrSlice(uint16_t aMeetOrSlice) {
if (aMeetOrSlice < SVG_MEETORSLICE_MIN_VALID ||
aMeetOrSlice > SVG_MEETORSLICE_MAX_VALID)
return NS_ERROR_FAILURE;
mMeetOrSlice = static_cast<uint8_t>(aMeetOrSlice);
return NS_OK;
}
SVGMeetOrSlice GetMeetOrSlice() const {
return static_cast<SVGMeetOrSlice>(mMeetOrSlice);
}
uint32_t Hash() const {
return HashGeneric(mAlign, mMeetOrSlice);
}
private:
// We can't use enum types here because some compilers fail to pack them.
uint8_t mAlign;
uint8_t mMeetOrSlice;
};
namespace dom {
class DOMSVGPreserveAspectRatio final : public nsISupports,
public nsWrapperCache
{
public:
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMSVGPreserveAspectRatio)
DOMSVGPreserveAspectRatio(SVGAnimatedPreserveAspectRatio* aVal,
nsSVGElement *aSVGElement,
bool aIsBaseValue)
: mVal(aVal), mSVGElement(aSVGElement), mIsBaseValue(aIsBaseValue)
{
}
// WebIDL
nsSVGElement* GetParentObject() const { return mSVGElement; }
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
uint16_t Align();
void SetAlign(uint16_t aAlign, ErrorResult& rv);
uint16_t MeetOrSlice();
void SetMeetOrSlice(uint16_t aMeetOrSlice, ErrorResult& rv);
protected:
~DOMSVGPreserveAspectRatio();
SVGAnimatedPreserveAspectRatio* mVal; // kept alive because it belongs to mSVGElement
RefPtr<nsSVGElement> mSVGElement;
const bool mIsBaseValue;
};
} //namespace dom
} //namespace mozilla
#endif // MOZILLA_CONTENT_SVGPRESERVEASPECTRATIO_H_
|