Bug 984761 - Use a typed enum for filter primitive types. r=bjacob

This commit is contained in:
Markus Stange 2014-03-20 10:12:43 +08:00
Родитель dce2cc2f16
Коммит f8a92c33b8
20 изменённых файлов: 115 добавлений и 113 удалений

Просмотреть файл

@ -77,7 +77,7 @@ SVGFEBlendElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
uint32_t mode = mEnumAttributes[MODE].GetAnimValue();
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eBlend);
FilterPrimitiveDescription descr(PrimitiveType::Blend);
descr.Attributes().Set(eBlendBlendmode, mode);
return descr;
}

Просмотреть файл

@ -93,7 +93,7 @@ SVGFEColorMatrixElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
uint32_t type = mEnumAttributes[TYPE].GetAnimValue();
const SVGNumberList &values = mNumberListAttributes[VALUES].GetAnimValue();
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eColorMatrix);
FilterPrimitiveDescription descr(PrimitiveType::ColorMatrix);
if (!mNumberListAttributes[VALUES].IsExplicitlySet() &&
(type == SVG_FECOLORMATRIX_TYPE_MATRIX ||
type == SVG_FECOLORMATRIX_TYPE_SATURATE ||

Просмотреть файл

@ -78,7 +78,7 @@ SVGFEComponentTransferElement::GetPrimitiveDescription(nsSVGFilterInstance* aIns
eComponentTransferFunctionA
};
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eComponentTransfer);
FilterPrimitiveDescription descr(PrimitiveType::ComponentTransfer);
for (int32_t i = 0; i < 4; i++) {
if (childForChannel[i]) {
descr.Attributes().Set(attributeNames[i], childForChannel[i]->ComputeAttributes());

Просмотреть файл

@ -114,7 +114,7 @@ SVGFECompositeElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eComposite);
FilterPrimitiveDescription descr(PrimitiveType::Composite);
uint32_t op = mEnumAttributes[OPERATOR].GetAnimValue();
descr.Attributes().Set(eCompositeOperator, op);

Просмотреть файл

@ -169,7 +169,7 @@ SVGFEConvolveMatrixElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstan
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
const FilterPrimitiveDescription failureDescription(FilterPrimitiveDescription::eNone);
const FilterPrimitiveDescription failureDescription(PrimitiveType::Empty);
const SVGNumberList &kernelMatrix =
mNumberListAttributes[KERNELMATRIX].GetAnimValue();
@ -230,7 +230,7 @@ SVGFEConvolveMatrixElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstan
Size kernelUnitLength =
GetKernelUnitLength(aInstance, &mNumberPairAttributes[KERNEL_UNIT_LENGTH]);
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eConvolveMatrix);
FilterPrimitiveDescription descr(PrimitiveType::ConvolveMatrix);
AttributeMap& atts = descr.Attributes();
atts.Set(eConvolveMatrixKernelSize, IntSize(orderX, orderY));
atts.Set(eConvolveMatrixKernelMatrix, &kernelMatrix[0], kmLength);

Просмотреть файл

@ -68,7 +68,7 @@ SVGFEDiffuseLightingElement::GetPrimitiveDescription(nsSVGFilterInstance* aInsta
{
float diffuseConstant = mNumberAttributes[DIFFUSE_CONSTANT].GetAnimValue();
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eDiffuseLighting);
FilterPrimitiveDescription descr(PrimitiveType::DiffuseLighting);
descr.Attributes().Set(eDiffuseLightingDiffuseConstant, diffuseConstant);
return AddLightingAttributes(descr, aInstance);
}

Просмотреть файл

@ -99,7 +99,7 @@ SVGFEDisplacementMapElement::GetPrimitiveDescription(nsSVGFilterInstance* aInsta
if (aInputsAreTainted[1]) {
// If the map is tainted, refuse to apply the effect and act as a
// pass-through filter instead, as required by the spec.
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eOffset);
FilterPrimitiveDescription descr(PrimitiveType::Offset);
descr.Attributes().Set(eOffsetOffset, IntPoint(0, 0));
return descr;
}
@ -108,7 +108,7 @@ SVGFEDisplacementMapElement::GetPrimitiveDescription(nsSVGFilterInstance* aInsta
&mNumberAttributes[SCALE]);
uint32_t xChannel = mEnumAttributes[CHANNEL_X].GetAnimValue();
uint32_t yChannel = mEnumAttributes[CHANNEL_Y].GetAnimValue();
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eDisplacementMap);
FilterPrimitiveDescription descr(PrimitiveType::DisplacementMap);
descr.Attributes().Set(eDisplacementMapScale, scale);
descr.Attributes().Set(eDisplacementMapXChannel, xChannel);
descr.Attributes().Set(eDisplacementMapYChannel, yChannel);

Просмотреть файл

@ -93,7 +93,7 @@ SVGFEDropShadowElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
&mNumberPairAttributes[STD_DEV],
nsSVGNumberPair::eSecond);
if (stdX < 0 || stdY < 0) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
IntPoint offset(int32_t(aInstance->GetPrimitiveNumber(
@ -101,7 +101,7 @@ SVGFEDropShadowElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
int32_t(aInstance->GetPrimitiveNumber(
SVGContentUtils::Y, &mNumberAttributes[DY])));
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eDropShadow);
FilterPrimitiveDescription descr(PrimitiveType::DropShadow);
descr.Attributes().Set(eDropShadowStdDeviation, Size(stdX, stdY));
descr.Attributes().Set(eDropShadowOffset, offset);

Просмотреть файл

@ -39,7 +39,7 @@ SVGFEFloodElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eFlood);
FilterPrimitiveDescription descr(PrimitiveType::Flood);
nsIFrame* frame = GetPrimaryFrame();
if (frame) {
nsStyleContext* style = frame->StyleContext();

Просмотреть файл

@ -76,10 +76,10 @@ SVGFEGaussianBlurElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance
&mNumberPairAttributes[STD_DEV],
nsSVGNumberPair::eSecond);
if (stdX < 0 || stdY < 0) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eGaussianBlur);
FilterPrimitiveDescription descr(PrimitiveType::GaussianBlur);
descr.Attributes().Set(eGaussianBlurStdDeviation, Size(stdX, stdY));
return descr;
}

Просмотреть файл

@ -198,7 +198,7 @@ SVGFEImageElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
{
nsIFrame* frame = GetPrimaryFrame();
if (!frame) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
nsCOMPtr<imgIRequest> currentRequest;
@ -218,7 +218,7 @@ SVGFEImageElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
}
if (!currentFrame) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
gfxPlatform* platform = gfxPlatform::GetPlatform();
@ -239,7 +239,7 @@ SVGFEImageElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
Filter filter = ToFilter(nsLayoutUtils::GetGraphicsFilterForFrame(frame));
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eImage);
FilterPrimitiveDescription descr(PrimitiveType::Image);
descr.Attributes().Set(eImageFilter, (uint32_t)filter);
descr.Attributes().Set(eImageTransform, TM);

Просмотреть файл

@ -33,7 +33,7 @@ SVGFEMergeElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
return FilterPrimitiveDescription(FilterPrimitiveDescription::eMerge);
return FilterPrimitiveDescription(PrimitiveType::Merge);
}
void

Просмотреть файл

@ -119,7 +119,7 @@ SVGFEMorphologyElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
{
int32_t rx, ry;
GetRXY(&rx, &ry, *aInstance);
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eMorphology);
FilterPrimitiveDescription descr(PrimitiveType::Morphology);
descr.Attributes().Set(eMorphologyRadii, Size(rx, ry));
descr.Attributes().Set(eMorphologyOperator,
(uint32_t)mEnumAttributes[OPERATOR].GetAnimValue());

Просмотреть файл

@ -65,7 +65,7 @@ SVGFEOffsetElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eOffset);
FilterPrimitiveDescription descr(PrimitiveType::Offset);
IntPoint offset(int32_t(aInstance->GetPrimitiveNumber(
SVGContentUtils::X, &mNumberAttributes[DX])),
int32_t(aInstance->GetPrimitiveNumber(

Просмотреть файл

@ -78,10 +78,10 @@ SVGFESpecularLightingElement::GetPrimitiveDescription(nsSVGFilterInstance* aInst
// specification defined range (15.22)
if (specularExponent < 1 || specularExponent > 128) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eSpecularLighting);
FilterPrimitiveDescription descr(PrimitiveType::SpecularLighting);
descr.Attributes().Set(eSpecularLightingSpecularConstant, specularConstant);
descr.Attributes().Set(eSpecularLightingSpecularExponent, specularExponent);
return AddLightingAttributes(descr, aInstance);

Просмотреть файл

@ -53,7 +53,7 @@ SVGFETileElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
const nsTArray<bool>& aInputsAreTainted,
nsTArray<RefPtr<SourceSurface>>& aInputImages)
{
return FilterPrimitiveDescription(FilterPrimitiveDescription::eTile);
return FilterPrimitiveDescription(PrimitiveType::Tile);
}
bool

Просмотреть файл

@ -132,7 +132,7 @@ SVGFETurbulenceElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
uint16_t stitch = mEnumAttributes[STITCHTILES].GetAnimValue();
if (fX == 0 || fY == 0) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
// We interpret the base frequency as relative to user space units. In other
@ -145,7 +145,7 @@ SVGFETurbulenceElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
1 / firstPeriodInFilterSpace.height);
gfxPoint offset = firstPeriodInFilterSpace.TopLeft();
FilterPrimitiveDescription descr(FilterPrimitiveDescription::eTurbulence);
FilterPrimitiveDescription descr(PrimitiveType::Turbulence);
descr.Attributes().Set(eTurbulenceOffset, IntPoint(offset.x, offset.y));
descr.Attributes().Set(eTurbulenceBaseFrequency, frequencyInFilterSpace);
descr.Attributes().Set(eTurbulenceSeed, seed);

Просмотреть файл

@ -511,7 +511,7 @@ nsSVGFELightingElement::AddLightingAttributes(FilterPrimitiveDescription aDescri
{
nsIFrame* frame = GetPrimaryFrame();
if (!frame) {
return FilterPrimitiveDescription(FilterPrimitiveDescription::eNone);
return FilterPrimitiveDescription(PrimitiveType::Empty);
}
nsStyleContext* style = frame->StyleContext();

Просмотреть файл

@ -591,10 +591,10 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
const AttributeMap& atts = aDescription.Attributes();
switch (aDescription.Type()) {
case FilterPrimitiveDescription::eNone:
case PrimitiveType::Empty:
return nullptr;
case FilterPrimitiveDescription::eBlend:
case PrimitiveType::Blend:
{
uint32_t mode = atts.GetUint(eBlendBlendmode);
RefPtr<FilterNode> filter;
@ -622,7 +622,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eColorMatrix:
case PrimitiveType::ColorMatrix:
{
float colorMatrix[20];
uint32_t type = atts.GetUint(eColorMatrixType);
@ -642,7 +642,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eMorphology:
case PrimitiveType::Morphology:
{
Size radii = atts.GetSize(eMorphologyRadii);
int32_t rx = radii.width;
@ -669,7 +669,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eFlood:
case PrimitiveType::Flood:
{
Color color = atts.GetColor(eFloodColor);
RefPtr<FilterNode> filter = aDT->CreateFilter(FilterType::FLOOD);
@ -677,7 +677,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eTile:
case PrimitiveType::Tile:
{
RefPtr<FilterNode> filter = aDT->CreateFilter(FilterType::TILE);
filter->SetAttribute(ATT_TILE_SOURCE_RECT, aSourceRegions[0]);
@ -685,7 +685,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eComponentTransfer:
case PrimitiveType::ComponentTransfer:
{
RefPtr<FilterNode> filters[4]; // one for each FILTER_*_TRANSFER type
static const AttributeName componentFunctionNames[4] = {
@ -713,7 +713,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return lastFilter;
}
case FilterPrimitiveDescription::eConvolveMatrix:
case PrimitiveType::ConvolveMatrix:
{
RefPtr<FilterNode> filter = aDT->CreateFilter(FilterType::CONVOLVE_MATRIX);
filter->SetAttribute(ATT_CONVOLVE_MATRIX_KERNEL_SIZE, atts.GetIntSize(eConvolveMatrixKernelSize));
@ -744,13 +744,13 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eOffset:
case PrimitiveType::Offset:
{
return FilterWrappers::Offset(aDT, aSources[0],
atts.GetIntPoint(eOffsetOffset));
}
case FilterPrimitiveDescription::eDisplacementMap:
case PrimitiveType::DisplacementMap:
{
RefPtr<FilterNode> filter = aDT->CreateFilter(FilterType::DISPLACEMENT_MAP);
filter->SetAttribute(ATT_DISPLACEMENT_MAP_SCALE,
@ -771,7 +771,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eTurbulence:
case PrimitiveType::Turbulence:
{
RefPtr<FilterNode> filter = aDT->CreateFilter(FilterType::TURBULENCE);
filter->SetAttribute(ATT_TURBULENCE_BASE_FREQUENCY,
@ -794,7 +794,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return FilterWrappers::Offset(aDT, filter, atts.GetIntPoint(eTurbulenceOffset));
}
case FilterPrimitiveDescription::eComposite:
case PrimitiveType::Composite:
{
RefPtr<FilterNode> filter;
uint32_t op = atts.GetUint(eCompositeOperator);
@ -822,7 +822,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eMerge:
case PrimitiveType::Merge:
{
if (aSources.Length() == 0) {
return nullptr;
@ -838,13 +838,13 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eGaussianBlur:
case PrimitiveType::GaussianBlur:
{
return FilterWrappers::GaussianBlur(aDT, aSources[0],
atts.GetSize(eGaussianBlurStdDeviation));
}
case FilterPrimitiveDescription::eDropShadow:
case PrimitiveType::DropShadow:
{
RefPtr<FilterNode> alpha = FilterWrappers::ToAlpha(aDT, aSources[0]);
RefPtr<FilterNode> blur = FilterWrappers::GaussianBlur(aDT, alpha,
@ -873,11 +873,11 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eDiffuseLighting:
case FilterPrimitiveDescription::eSpecularLighting:
case PrimitiveType::DiffuseLighting:
case PrimitiveType::SpecularLighting:
{
bool isSpecular =
aDescription.Type() == FilterPrimitiveDescription::eSpecularLighting;
aDescription.Type() == PrimitiveType::SpecularLighting;
AttributeMap lightAttributes = atts.GetAttributeMap(eLightingLight);
@ -945,7 +945,7 @@ FilterNodeFromPrimitiveDescription(const FilterPrimitiveDescription& aDescriptio
return filter;
}
case FilterPrimitiveDescription::eImage:
case PrimitiveType::Image:
{
Matrix TM = atts.GetMatrix(eImageTransform);
if (!TM.Determinant()) {
@ -997,18 +997,18 @@ InputAlphaModelForPrimitive(const FilterPrimitiveDescription& aDescr,
AlphaModel aOriginalAlphaModel)
{
switch (aDescr.Type()) {
case FilterPrimitiveDescription::eTile:
case FilterPrimitiveDescription::eOffset:
case PrimitiveType::Tile:
case PrimitiveType::Offset:
return aOriginalAlphaModel;
case FilterPrimitiveDescription::eColorMatrix:
case FilterPrimitiveDescription::eComponentTransfer:
case PrimitiveType::ColorMatrix:
case PrimitiveType::ComponentTransfer:
return UNPREMULTIPLIED;
case FilterPrimitiveDescription::eDisplacementMap:
case PrimitiveType::DisplacementMap:
return aInputIndex == 0 ? PREMULTIPLIED : UNPREMULTIPLIED;
case FilterPrimitiveDescription::eConvolveMatrix:
case PrimitiveType::ConvolveMatrix:
return aDescr.Attributes().GetBool(eConvolveMatrixPreserveAlpha) ?
UNPREMULTIPLIED : PREMULTIPLIED;
@ -1180,22 +1180,22 @@ ResultChangeRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
const AttributeMap& atts = aDescription.Attributes();
switch (aDescription.Type()) {
case FilterPrimitiveDescription::eNone:
case FilterPrimitiveDescription::eFlood:
case FilterPrimitiveDescription::eTurbulence:
case FilterPrimitiveDescription::eImage:
case PrimitiveType::Empty:
case PrimitiveType::Flood:
case PrimitiveType::Turbulence:
case PrimitiveType::Image:
return nsIntRegion();
case FilterPrimitiveDescription::eBlend:
case FilterPrimitiveDescription::eComposite:
case FilterPrimitiveDescription::eMerge:
case PrimitiveType::Blend:
case PrimitiveType::Composite:
case PrimitiveType::Merge:
return UnionOfRegions(aInputChangeRegions);
case FilterPrimitiveDescription::eColorMatrix:
case FilterPrimitiveDescription::eComponentTransfer:
case PrimitiveType::ColorMatrix:
case PrimitiveType::ComponentTransfer:
return aInputChangeRegions[0];
case FilterPrimitiveDescription::eMorphology:
case PrimitiveType::Morphology:
{
Size radii = atts.GetSize(eMorphologyRadii);
int32_t rx = clamped(int32_t(ceil(radii.width)), 0, kMorphologyMaxRadius);
@ -1203,10 +1203,10 @@ ResultChangeRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aInputChangeRegions[0].Inflated(nsIntMargin(ry, rx, ry, rx));
}
case FilterPrimitiveDescription::eTile:
case PrimitiveType::Tile:
return ThebesIntRect(aDescription.PrimitiveSubregion());
case FilterPrimitiveDescription::eConvolveMatrix:
case PrimitiveType::ConvolveMatrix:
{
Size kernelUnitLength = atts.GetSize(eConvolveMatrixKernelUnitLength);
IntSize kernelSize = atts.GetIntSize(eConvolveMatrixKernelSize);
@ -1218,19 +1218,19 @@ ResultChangeRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aInputChangeRegions[0].Inflated(m);
}
case FilterPrimitiveDescription::eOffset:
case PrimitiveType::Offset:
{
IntPoint offset = atts.GetIntPoint(eOffsetOffset);
return aInputChangeRegions[0].MovedBy(offset.x, offset.y);
}
case FilterPrimitiveDescription::eDisplacementMap:
case PrimitiveType::DisplacementMap:
{
int32_t scale = ceil(abs(atts.GetFloat(eDisplacementMapScale)));
return aInputChangeRegions[0].Inflated(nsIntMargin(scale, scale, scale, scale));
}
case FilterPrimitiveDescription::eGaussianBlur:
case PrimitiveType::GaussianBlur:
{
Size stdDeviation = atts.GetSize(eGaussianBlurStdDeviation);
int32_t dx = InflateSizeForBlurStdDev(stdDeviation.width);
@ -1238,7 +1238,7 @@ ResultChangeRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aInputChangeRegions[0].Inflated(nsIntMargin(dy, dx, dy, dx));
}
case FilterPrimitiveDescription::eDropShadow:
case PrimitiveType::DropShadow:
{
IntPoint offset = atts.GetIntPoint(eDropShadowOffset);
nsIntRegion offsetRegion = aInputChangeRegions[0].MovedBy(offset.x, offset.y);
@ -1250,8 +1250,8 @@ ResultChangeRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return blurRegion;
}
case FilterPrimitiveDescription::eDiffuseLighting:
case FilterPrimitiveDescription::eSpecularLighting:
case PrimitiveType::DiffuseLighting:
case PrimitiveType::SpecularLighting:
{
Size kernelUnitLength = atts.GetSize(eLightingKernelUnitLength);
int32_t dx = ceil(kernelUnitLength.width);
@ -1304,10 +1304,10 @@ PostFilterExtentsForPrimitive(const FilterPrimitiveDescription& aDescription,
const AttributeMap& atts = aDescription.Attributes();
switch (aDescription.Type()) {
case FilterPrimitiveDescription::eNone:
case PrimitiveType::Empty:
return nsIntRect();
case FilterPrimitiveDescription::eComposite:
case PrimitiveType::Composite:
{
uint32_t op = atts.GetUint(eCompositeOperator);
if (op == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) {
@ -1339,7 +1339,7 @@ PostFilterExtentsForPrimitive(const FilterPrimitiveDescription& aDescription,
return ResultChangeRegionForPrimitive(aDescription, aInputExtents);
}
case FilterPrimitiveDescription::eFlood:
case PrimitiveType::Flood:
{
if (atts.GetColor(eFloodColor).a == 0.0f) {
return nsIntRect();
@ -1347,13 +1347,13 @@ PostFilterExtentsForPrimitive(const FilterPrimitiveDescription& aDescription,
return ThebesIntRect(aDescription.PrimitiveSubregion());
}
case FilterPrimitiveDescription::eTurbulence:
case FilterPrimitiveDescription::eImage:
case PrimitiveType::Turbulence:
case PrimitiveType::Image:
{
return ThebesIntRect(aDescription.PrimitiveSubregion());
}
case FilterPrimitiveDescription::eMorphology:
case PrimitiveType::Morphology:
{
uint32_t op = atts.GetUint(eMorphologyOperator);
if (op == SVG_OPERATOR_ERODE) {
@ -1408,23 +1408,23 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
const AttributeMap& atts = aDescription.Attributes();
switch (aDescription.Type()) {
case FilterPrimitiveDescription::eFlood:
case FilterPrimitiveDescription::eTurbulence:
case FilterPrimitiveDescription::eImage:
case PrimitiveType::Flood:
case PrimitiveType::Turbulence:
case PrimitiveType::Image:
MOZ_CRASH("this shouldn't be called for filters without inputs");
return nsIntRegion();
case FilterPrimitiveDescription::eNone:
case PrimitiveType::Empty:
return nsIntRegion();
case FilterPrimitiveDescription::eBlend:
case FilterPrimitiveDescription::eComposite:
case FilterPrimitiveDescription::eMerge:
case FilterPrimitiveDescription::eColorMatrix:
case FilterPrimitiveDescription::eComponentTransfer:
case PrimitiveType::Blend:
case PrimitiveType::Composite:
case PrimitiveType::Merge:
case PrimitiveType::ColorMatrix:
case PrimitiveType::ComponentTransfer:
return aResultNeededRegion;
case FilterPrimitiveDescription::eMorphology:
case PrimitiveType::Morphology:
{
Size radii = atts.GetSize(eMorphologyRadii);
int32_t rx = clamped(int32_t(ceil(radii.width)), 0, kMorphologyMaxRadius);
@ -1432,10 +1432,10 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aResultNeededRegion.Inflated(nsIntMargin(ry, rx, ry, rx));
}
case FilterPrimitiveDescription::eTile:
case PrimitiveType::Tile:
return nsIntRect(INT32_MIN/2, INT32_MIN/2, INT32_MAX, INT32_MAX);
case FilterPrimitiveDescription::eConvolveMatrix:
case PrimitiveType::ConvolveMatrix:
{
Size kernelUnitLength = atts.GetSize(eConvolveMatrixKernelUnitLength);
IntSize kernelSize = atts.GetIntSize(eConvolveMatrixKernelSize);
@ -1447,13 +1447,13 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aResultNeededRegion.Inflated(m);
}
case FilterPrimitiveDescription::eOffset:
case PrimitiveType::Offset:
{
IntPoint offset = atts.GetIntPoint(eOffsetOffset);
return aResultNeededRegion.MovedBy(-nsIntPoint(offset.x, offset.y));
}
case FilterPrimitiveDescription::eDisplacementMap:
case PrimitiveType::DisplacementMap:
{
if (aInputIndex == 1) {
return aResultNeededRegion;
@ -1462,7 +1462,7 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aResultNeededRegion.Inflated(nsIntMargin(scale, scale, scale, scale));
}
case FilterPrimitiveDescription::eGaussianBlur:
case PrimitiveType::GaussianBlur:
{
Size stdDeviation = atts.GetSize(eGaussianBlurStdDeviation);
int32_t dx = InflateSizeForBlurStdDev(stdDeviation.width);
@ -1470,7 +1470,7 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return aResultNeededRegion.Inflated(nsIntMargin(dy, dx, dy, dx));
}
case FilterPrimitiveDescription::eDropShadow:
case PrimitiveType::DropShadow:
{
IntPoint offset = atts.GetIntPoint(eDropShadowOffset);
nsIntRegion offsetRegion =
@ -1483,8 +1483,8 @@ SourceNeededRegionForPrimitive(const FilterPrimitiveDescription& aDescription,
return blurRegion;
}
case FilterPrimitiveDescription::eDiffuseLighting:
case FilterPrimitiveDescription::eSpecularLighting:
case PrimitiveType::DiffuseLighting:
case PrimitiveType::SpecularLighting:
{
Size kernelUnitLength = atts.GetSize(eLightingKernelUnitLength);
int32_t dx = ceil(kernelUnitLength.width);

Просмотреть файл

@ -227,6 +227,28 @@ public:
AlphaModel mAlphaModel;
};
MOZ_BEGIN_ENUM_CLASS(PrimitiveType)
Empty = 0,
Blend,
Morphology,
ColorMatrix,
Flood,
Tile,
ComponentTransfer,
ConvolveMatrix,
Offset,
DisplacementMap,
Turbulence,
Composite,
Merge,
Image,
GaussianBlur,
DropShadow,
DiffuseLighting,
SpecularLighting,
Max
MOZ_END_ENUM_CLASS(PrimitiveType)
/**
* A data structure to carry attributes for a given primitive that's part of a
* filter. Will be serializable via IPDL, so it must not contain complex
@ -235,26 +257,6 @@ public:
*/
class FilterPrimitiveDescription MOZ_FINAL {
public:
enum PrimitiveType {
eNone = 0,
eBlend,
eMorphology,
eColorMatrix,
eFlood,
eTile,
eComponentTransfer,
eConvolveMatrix,
eOffset,
eDisplacementMap,
eTurbulence,
eComposite,
eMerge,
eImage,
eGaussianBlur,
eDropShadow,
eDiffuseLighting,
eSpecularLighting
};
enum {
kPrimitiveIndexSourceGraphic = -1,
kPrimitiveIndexSourceAlpha = -2,