зеркало из https://github.com/mozilla/gecko-dev.git
Bug 984761 - Use a typed enum for filter primitive types. r=bjacob
This commit is contained in:
Родитель
dce2cc2f16
Коммит
f8a92c33b8
|
@ -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,
|
||||
|
|
Загрузка…
Ссылка в новой задаче