Bug 948265 - Remove kPrimitiveIndexSourceAlpha since nsSVGFilterInstance creates ToAlpha filter nodes now. r=mstange

This commit is contained in:
Max Vujovic 2014-07-15 11:50:00 +02:00
parent 97bde6246e
commit 6fa2b606f3
3 changed files with 18 additions and 26 deletions

View File

@ -986,7 +986,6 @@ ElementForIndex(int32_t aIndex,
{
switch (aIndex) {
case FilterPrimitiveDescription::kPrimitiveIndexSourceGraphic:
case FilterPrimitiveDescription::kPrimitiveIndexSourceAlpha:
return aSourceGraphicElement;
case FilterPrimitiveDescription::kPrimitiveIndexFillPaint:
return aFillPaintElement;
@ -1103,10 +1102,6 @@ FilterNodeGraphFromDescription(DrawTarget* aDT,
if (surf) {
IntPoint offset = surfaceRect.TopLeft();
sourceFilterNode = FilterWrappers::ForSurface(aDT, surf, offset);
if (inputIndex == FilterPrimitiveDescription::kPrimitiveIndexSourceAlpha) {
sourceFilterNode = FilterWrappers::ToAlpha(aDT, sourceFilterNode);
}
}
inputFilter = new FilterCachedColorModels(aDT, sourceFilterNode,

View File

@ -284,9 +284,8 @@ class FilterPrimitiveDescription MOZ_FINAL {
public:
enum {
kPrimitiveIndexSourceGraphic = -1,
kPrimitiveIndexSourceAlpha = -2,
kPrimitiveIndexFillPaint = -3,
kPrimitiveIndexStrokePaint = -4
kPrimitiveIndexFillPaint = -2,
kPrimitiveIndexStrokePaint = -3
};
FilterPrimitiveDescription();

View File

@ -292,33 +292,31 @@ GetLastResultIndex(const nsTArray<FilterPrimitiveDescription>& aPrimitiveDescrs)
int32_t
nsSVGFilterInstance::GetOrCreateSourceAlphaIndex(nsTArray<FilterPrimitiveDescription>& aPrimitiveDescrs)
{
// If the SourceAlpha index has already been determined or created for this
// SVG filter, just return it.
// If the SourceAlpha index has already been created for this SVG filter,
// return it.
if (mSourceAlphaAvailable)
return mSourceAlphaIndex;
// If this is the first filter in the chain, we can just use the
// kPrimitiveIndexSourceAlpha keyword to refer to the SourceAlpha of the
// original image.
if (mSourceGraphicIndex < 0) {
mSourceAlphaIndex = FilterPrimitiveDescription::kPrimitiveIndexSourceAlpha;
mSourceAlphaAvailable = true;
return mSourceAlphaIndex;
}
// Otherwise, create a primitive description to turn the previous filter's
// output into a SourceAlpha input.
FilterPrimitiveDescription descr(PrimitiveType::ToAlpha);
descr.SetInputPrimitive(0, mSourceGraphicIndex);
const FilterPrimitiveDescription& sourcePrimitiveDescr =
aPrimitiveDescrs[mSourceGraphicIndex];
descr.SetPrimitiveSubregion(sourcePrimitiveDescr.PrimitiveSubregion());
descr.SetIsTainted(sourcePrimitiveDescr.IsTainted());
if (mSourceGraphicIndex >= 0) {
const FilterPrimitiveDescription& sourcePrimitiveDescr =
aPrimitiveDescrs[mSourceGraphicIndex];
descr.SetPrimitiveSubregion(sourcePrimitiveDescr.PrimitiveSubregion());
descr.SetIsTainted(sourcePrimitiveDescr.IsTainted());
ColorSpace colorSpace = sourcePrimitiveDescr.OutputColorSpace();
descr.SetInputColorSpace(0, colorSpace);
descr.SetOutputColorSpace(colorSpace);
ColorSpace colorSpace = sourcePrimitiveDescr.OutputColorSpace();
descr.SetInputColorSpace(0, colorSpace);
descr.SetOutputColorSpace(colorSpace);
} else {
descr.SetPrimitiveSubregion(ToIntRect(mFilterSpaceBounds));
descr.SetIsTainted(true);
descr.SetInputColorSpace(0, ColorSpace::SRGB);
descr.SetOutputColorSpace(ColorSpace::SRGB);
}
aPrimitiveDescrs.AppendElement(descr);
mSourceAlphaIndex = aPrimitiveDescrs.Length() - 1;