Backed out 7 changesets (bug 902525) for B2G reftest failures.

Backed out changeset bbca63772c83 (bug 902525)
Backed out changeset edb386989dbd (bug 902525)
Backed out changeset 3137dadb4fcd (bug 902525)
Backed out changeset e562afcb3c89 (bug 902525)
Backed out changeset 8ef3a516bd68 (bug 902525)
Backed out changeset 520fcd422150 (bug 902525)
Backed out changeset 4e553e8da44e (bug 902525)
This commit is contained in:
Ryan VanderMeulen 2013-09-15 18:59:27 -04:00
Родитель 53987a6270
Коммит a3f1ea6990
73 изменённых файлов: 17 добавлений и 1376 удалений

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

@ -181,8 +181,6 @@ Layer::Layer(LayerManager* aManager, void* aImplData) :
mPostXScale(1.0f), mPostXScale(1.0f),
mPostYScale(1.0f), mPostYScale(1.0f),
mOpacity(1.0), mOpacity(1.0),
mMixBlendMode(gfxContext::OPERATOR_OVER),
mForceIsolatedGroup(false),
mContentFlags(0), mContentFlags(0),
mUseClipRect(false), mUseClipRect(false),
mUseTileSourceRect(false), mUseTileSourceRect(false),
@ -683,20 +681,6 @@ Layer::GetEffectiveOpacity()
return opacity; return opacity;
} }
gfxContext::GraphicsOperator
Layer::GetEffectiveMixBlendMode()
{
if(mMixBlendMode != gfxContext::OPERATOR_OVER)
return mMixBlendMode;
for (ContainerLayer* c = GetParent(); c && !c->UseIntermediateSurface();
c = c->GetParent()) {
if(c->mMixBlendMode != gfxContext::OPERATOR_OVER)
return c->mMixBlendMode;
}
return mMixBlendMode;
}
void void
Layer::ComputeEffectiveTransformForMaskLayer(const gfx3DMatrix& aTransformToSurface) Layer::ComputeEffectiveTransformForMaskLayer(const gfx3DMatrix& aTransformToSurface)
{ {

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

@ -12,7 +12,6 @@
#include "FrameMetrics.h" // for FrameMetrics #include "FrameMetrics.h" // for FrameMetrics
#include "Units.h" // for LayerMargin, LayerPoint #include "Units.h" // for LayerMargin, LayerPoint
#include "gfx3DMatrix.h" // for gfx3DMatrix #include "gfx3DMatrix.h" // for gfx3DMatrix
#include "gfxContext.h" // for GraphicsOperator
#include "gfxASurface.h" // for gfxASurface, etc #include "gfxASurface.h" // for gfxASurface, etc
#include "gfxColor.h" // for gfxRGBA #include "gfxColor.h" // for gfxRGBA
#include "gfxMatrix.h" // for gfxMatrix #include "gfxMatrix.h" // for gfxMatrix
@ -733,29 +732,6 @@ public:
} }
} }
void SetMixBlendMode(gfxContext::GraphicsOperator aMixBlendMode)
{
if (mMixBlendMode != aMixBlendMode) {
MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) MixBlendMode", this));
mMixBlendMode = aMixBlendMode;
Mutated();
}
}
void SetForceIsolatedGroup(bool aForceIsolatedGroup)
{
if(mForceIsolatedGroup != aForceIsolatedGroup) {
MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) ForceIsolatedGroup", this));
mForceIsolatedGroup = aForceIsolatedGroup;
Mutated();
}
}
bool GetForceIsolatedGroup() const
{
return mForceIsolatedGroup;
}
/** /**
* CONSTRUCTION PHASE ONLY * CONSTRUCTION PHASE ONLY
* Set a clip rect which will be applied to this layer as it is * Set a clip rect which will be applied to this layer as it is
@ -961,7 +937,6 @@ public:
// These getters can be used anytime. // These getters can be used anytime.
float GetOpacity() { return mOpacity; } float GetOpacity() { return mOpacity; }
gfxContext::GraphicsOperator GetMixBlendMode() const { return mMixBlendMode; }
const nsIntRect* GetClipRect() { return mUseClipRect ? &mClipRect : nullptr; } const nsIntRect* GetClipRect() { return mUseClipRect ? &mClipRect : nullptr; }
uint32_t GetContentFlags() { return mContentFlags; } uint32_t GetContentFlags() { return mContentFlags; }
const nsIntRegion& GetVisibleRegion() { return mVisibleRegion; } const nsIntRegion& GetVisibleRegion() { return mVisibleRegion; }
@ -1127,18 +1102,11 @@ public:
// accounting for this layer possibly being a shadow. // accounting for this layer possibly being a shadow.
const nsIntRect* GetEffectiveClipRect(); const nsIntRect* GetEffectiveClipRect();
const nsIntRegion& GetEffectiveVisibleRegion(); const nsIntRegion& GetEffectiveVisibleRegion();
/** /**
* Returns the product of the opacities of this layer and all ancestors up * Returns the product of the opacities of this layer and all ancestors up
* to and excluding the nearest ancestor that has UseIntermediateSurface() set. * to and excluding the nearest ancestor that has UseIntermediateSurface() set.
*/ */
float GetEffectiveOpacity(); float GetEffectiveOpacity();
/**
* Returns the blendmode of this layer.
*/
gfxContext::GraphicsOperator GetEffectiveMixBlendMode();
/** /**
* This returns the effective transform computed by * This returns the effective transform computed by
* ComputeEffectiveTransforms. Typically this is a transform that transforms * ComputeEffectiveTransforms. Typically this is a transform that transforms
@ -1336,8 +1304,6 @@ protected:
AnimationArray mAnimations; AnimationArray mAnimations;
InfallibleTArray<AnimData> mAnimationData; InfallibleTArray<AnimData> mAnimationData;
float mOpacity; float mOpacity;
gfxContext::GraphicsOperator mMixBlendMode;
bool mForceIsolatedGroup;
nsIntRect mClipRect; nsIntRect mClipRect;
nsIntRect mTileSourceRect; nsIntRect mTileSourceRect;
nsIntRegion mInvalidRegion; nsIntRegion mInvalidRegion;

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

@ -27,8 +27,7 @@ BasicCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer)
UpdateSurface(); UpdateSurface();
FireDidTransactionCallback(); FireDidTransactionCallback();
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, GetOperator());
PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
} }
already_AddRefed<CanvasLayer> already_AddRefed<CanvasLayer>

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

@ -48,8 +48,7 @@ public:
if (IsHidden()) if (IsHidden())
return; return;
gfxContextAutoSaveRestore contextSR(aContext); gfxContextAutoSaveRestore contextSR(aContext);
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); AutoSetOperator setOperator(aContext, GetOperator());
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
aContext->SetColor(mColor); aContext->SetColor(mColor);

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

@ -58,24 +58,15 @@ BasicContainerLayer::ComputeEffectiveTransforms(const gfx3DMatrix& aTransformToS
ComputeEffectiveTransformForMaskLayer(aTransformToSurface); ComputeEffectiveTransformForMaskLayer(aTransformToSurface);
Layer* child = GetFirstChild(); /* If we have a single child, it can just inherit our opacity,
bool hasSingleBlendingChild = false;
if (!HasMultipleChildren() && child) {
hasSingleBlendingChild = child->GetMixBlendMode() != gfxContext::OPERATOR_OVER;
}
/* If we have a single childand it is not blending,, it can just inherit our opacity,
* otherwise we need a PushGroup and we need to mark ourselves as using * otherwise we need a PushGroup and we need to mark ourselves as using
* an intermediate surface so our children don't inherit our opacity * an intermediate surface so our children don't inherit our opacity
* via GetEffectiveOpacity. * via GetEffectiveOpacity.
* Having a mask layer always forces our own push group * Having a mask layer always forces our own push group
* Having a blend mode also always forces our own push group
*/ */
mUseIntermediateSurface = mUseIntermediateSurface =
GetMaskLayer() || GetMaskLayer() || (GetEffectiveOpacity() != 1.0 &&
GetForceIsolatedGroup() || HasMultipleChildren());
(GetMixBlendMode() != gfxContext::OPERATOR_OVER && HasMultipleChildren()) ||
(GetEffectiveOpacity() != 1.0 && (HasMultipleChildren() || hasSingleBlendingChild));
} }
bool bool

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

@ -110,9 +110,7 @@ BasicImageLayer::GetAndPaintCurrentImage(gfxContext* aContext,
// The visible region can extend outside the image, so just draw // The visible region can extend outside the image, so just draw
// within the image bounds. // within the image bounds.
if (aContext) { if (aContext) {
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode(); AutoSetOperator setOperator(aContext, GetOperator());
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
PaintContext(pat, PaintContext(pat,
nsIntRegion(nsIntRect(0, 0, size.width, size.height)), nsIntRegion(nsIntRect(0, 0, size.width, size.height)),
aOpacity, aContext, aMaskLayer); aOpacity, aContext, aMaskLayer);

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

@ -109,7 +109,6 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
canUseOpaqueSurface ? gfxASurface::CONTENT_COLOR : canUseOpaqueSurface ? gfxASurface::CONTENT_COLOR :
gfxASurface::CONTENT_COLOR_ALPHA; gfxASurface::CONTENT_COLOR_ALPHA;
float opacity = GetEffectiveOpacity(); float opacity = GetEffectiveOpacity();
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
if (!BasicManager()->IsRetained()) { if (!BasicManager()->IsRetained()) {
NS_ASSERTION(readbackUpdates.IsEmpty(), "Can't do readback for non-retained layer"); NS_ASSERTION(readbackUpdates.IsEmpty(), "Can't do readback for non-retained layer");
@ -131,13 +130,13 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
bool needsClipToVisibleRegion = GetClipToVisibleRegion(); bool needsClipToVisibleRegion = GetClipToVisibleRegion();
bool needsGroup = bool needsGroup =
opacity != 1.0 || GetOperator() != gfxContext::OPERATOR_OVER || mixBlendMode != gfxContext::OPERATOR_OVER || aMaskLayer; opacity != 1.0 || GetOperator() != gfxContext::OPERATOR_OVER || aMaskLayer;
nsRefPtr<gfxContext> groupContext; nsRefPtr<gfxContext> groupContext;
if (needsGroup) { if (needsGroup) {
groupContext = groupContext =
BasicManager()->PushGroupForLayer(aContext, this, toDraw, BasicManager()->PushGroupForLayer(aContext, this, toDraw,
&needsClipToVisibleRegion); &needsClipToVisibleRegion);
if (GetOperator() != gfxContext::OPERATOR_OVER || mixBlendMode != gfxContext::OPERATOR_OVER) { if (GetOperator() != gfxContext::OPERATOR_OVER) {
needsClipToVisibleRegion = true; needsClipToVisibleRegion = true;
} }
} else { } else {
@ -150,7 +149,7 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
if (needsClipToVisibleRegion) { if (needsClipToVisibleRegion) {
gfxUtils::ClipToRegion(aContext, toDraw); gfxUtils::ClipToRegion(aContext, toDraw);
} }
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator()); AutoSetOperator setOperator(aContext, GetOperator());
PaintWithMask(aContext, opacity, aMaskLayer); PaintWithMask(aContext, opacity, aMaskLayer);
} }

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

@ -3,7 +3,6 @@ DECLARE_DISPLAY_ITEM_TYPE(ALT_FEEDBACK)
DECLARE_DISPLAY_ITEM_TYPE(BACKGROUND) DECLARE_DISPLAY_ITEM_TYPE(BACKGROUND)
DECLARE_DISPLAY_ITEM_TYPE(THEMED_BACKGROUND) DECLARE_DISPLAY_ITEM_TYPE(THEMED_BACKGROUND)
DECLARE_DISPLAY_ITEM_TYPE_FLAGS(BACKGROUND_COLOR,TYPE_RENDERS_NO_IMAGES) DECLARE_DISPLAY_ITEM_TYPE_FLAGS(BACKGROUND_COLOR,TYPE_RENDERS_NO_IMAGES)
DECLARE_DISPLAY_ITEM_TYPE(BLEND_CONTAINER)
DECLARE_DISPLAY_ITEM_TYPE(BORDER) DECLARE_DISPLAY_ITEM_TYPE(BORDER)
DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_OUTER) DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_OUTER)
DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_INNER) DECLARE_DISPLAY_ITEM_TYPE(BOX_SHADOW_INNER)
@ -30,7 +29,6 @@ DECLARE_DISPLAY_ITEM_TYPE(FRAMESET_BLANK)
DECLARE_DISPLAY_ITEM_TYPE(HEADER_FOOTER) DECLARE_DISPLAY_ITEM_TYPE(HEADER_FOOTER)
DECLARE_DISPLAY_ITEM_TYPE(IMAGE) DECLARE_DISPLAY_ITEM_TYPE(IMAGE)
DECLARE_DISPLAY_ITEM_TYPE(LIST_FOCUS) DECLARE_DISPLAY_ITEM_TYPE(LIST_FOCUS)
DECLARE_DISPLAY_ITEM_TYPE(MIX_BLEND_MODE)
DECLARE_DISPLAY_ITEM_TYPE(OPACITY) DECLARE_DISPLAY_ITEM_TYPE(OPACITY)
DECLARE_DISPLAY_ITEM_TYPE(OPTION_EVENT_GRABBER) DECLARE_DISPLAY_ITEM_TYPE(OPTION_EVENT_GRABBER)
DECLARE_DISPLAY_ITEM_TYPE(OUTLINE) DECLARE_DISPLAY_ITEM_TYPE(OUTLINE)

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

@ -486,8 +486,7 @@ nsDisplayListBuilder::nsDisplayListBuilder(nsIFrame* aReferenceFrame,
mHasFixedItems(false), mHasFixedItems(false),
mIsInFixedPosition(false), mIsInFixedPosition(false),
mIsCompositingCheap(false), mIsCompositingCheap(false),
mContainsPluginItem(false), mContainsPluginItem(false)
mContainsBlendMode(false)
{ {
MOZ_COUNT_CTOR(nsDisplayListBuilder); MOZ_COUNT_CTOR(nsDisplayListBuilder);
PL_InitArenaPool(&mPool, "displayListArena", 1024, PL_InitArenaPool(&mPool, "displayListArena", 1024,
@ -3118,144 +3117,6 @@ bool nsDisplayOpacity::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* a
return true; return true;
} }
nsDisplayMixBlendMode::nsDisplayMixBlendMode(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
uint32_t aFlags)
: nsDisplayWrapList(aBuilder, aFrame, aList) {
MOZ_COUNT_CTOR(nsDisplayMixBlendMode);
}
#ifdef NS_BUILD_REFCNT_LOGGING
nsDisplayMixBlendMode::~nsDisplayMixBlendMode() {
MOZ_COUNT_DTOR(nsDisplayMixBlendMode);
}
#endif
nsRegion nsDisplayMixBlendMode::GetOpaqueRegion(nsDisplayListBuilder* aBuilder,
bool* aSnap) {
*aSnap = false;
// We are never considered opaque
return nsRegion();
}
static gfxContext::GraphicsOperator GetGFXBlendMode(uint8_t mBlendMode) {
switch (mBlendMode) {
case NS_STYLE_BLEND_NORMAL: return gfxContext::OPERATOR_OVER;
case NS_STYLE_BLEND_MULTIPLY: return gfxContext::OPERATOR_MULTIPLY;
case NS_STYLE_BLEND_SCREEN: return gfxContext::OPERATOR_SCREEN;
case NS_STYLE_BLEND_OVERLAY: return gfxContext::OPERATOR_OVERLAY;
case NS_STYLE_BLEND_DARKEN: return gfxContext::OPERATOR_DARKEN;
case NS_STYLE_BLEND_LIGHTEN: return gfxContext::OPERATOR_LIGHTEN;
case NS_STYLE_BLEND_COLOR_DODGE: return gfxContext::OPERATOR_COLOR_DODGE;
case NS_STYLE_BLEND_COLOR_BURN: return gfxContext::OPERATOR_COLOR_BURN;
case NS_STYLE_BLEND_HARD_LIGHT: return gfxContext::OPERATOR_HARD_LIGHT;
case NS_STYLE_BLEND_SOFT_LIGHT: return gfxContext::OPERATOR_SOFT_LIGHT;
case NS_STYLE_BLEND_DIFFERENCE: return gfxContext::OPERATOR_DIFFERENCE;
case NS_STYLE_BLEND_EXCLUSION: return gfxContext::OPERATOR_EXCLUSION;
case NS_STYLE_BLEND_HUE: return gfxContext::OPERATOR_HUE;
case NS_STYLE_BLEND_SATURATION: return gfxContext::OPERATOR_SATURATION;
case NS_STYLE_BLEND_COLOR: return gfxContext::OPERATOR_COLOR;
case NS_STYLE_BLEND_LUMINOSITY: return gfxContext::OPERATOR_LUMINOSITY;
default: MOZ_ASSERT(false); return gfxContext::OPERATOR_OVER;
}
return gfxContext::OPERATOR_OVER;
}
// nsDisplayMixBlendMode uses layers for rendering
already_AddRefed<Layer>
nsDisplayMixBlendMode::BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aContainerParameters) {
ContainerParameters newContainerParameters = aContainerParameters;
newContainerParameters.mDisableSubpixelAntialiasingInDescendants = true;
nsRefPtr<Layer> container = aManager->GetLayerBuilder()->
BuildContainerLayerFor(aBuilder, aManager, mFrame, this, mList,
newContainerParameters, nullptr);
if (!container) {
return nullptr;
}
container->SetMixBlendMode(GetGFXBlendMode(mFrame->StyleDisplay()->mMixBlendMode));
return container.forget();
}
bool nsDisplayMixBlendMode::ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion,
const nsRect& aAllowVisibleRegionExpansion) {
// Our children are need their backdrop so we should not allow them to subtract
// area from aVisibleRegion. We do need to find out what is visible under
// our children in the temporary compositing buffer, because if our children
// paint our entire bounds opaquely then we don't need an alpha channel in
// the temporary compositing buffer.
nsRect bounds = GetClippedBounds(aBuilder);
nsRegion visibleUnderChildren;
visibleUnderChildren.And(*aVisibleRegion, bounds);
nsRect allowExpansion = bounds.Intersect(aAllowVisibleRegionExpansion);
return
nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleUnderChildren,
allowExpansion);
}
bool nsDisplayMixBlendMode::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) {
if (aItem->GetType() != TYPE_MIX_BLEND_MODE)
return false;
// items for the same content element should be merged into a single
// compositing group
// aItem->GetUnderlyingFrame() returns non-null because it's nsDisplayOpacity
if (aItem->Frame()->GetContent() != mFrame->GetContent())
return false;
if (aItem->GetClip() != GetClip())
return false;
MergeFromTrackingMergedFrames(static_cast<nsDisplayMixBlendMode*>(aItem));
return true;
}
nsDisplayBlendContainer::nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
uint32_t aFlags)
: nsDisplayWrapList(aBuilder, aFrame, aList) {
MOZ_COUNT_CTOR(nsDisplayBlendContainer);
}
#ifdef NS_BUILD_REFCNT_LOGGING
nsDisplayBlendContainer::~nsDisplayBlendContainer() {
MOZ_COUNT_DTOR(nsDisplayBlendContainer);
}
#endif
// nsDisplayBlendContainer uses layers for rendering
already_AddRefed<Layer>
nsDisplayBlendContainer::BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aContainerParameters) {
nsRefPtr<Layer> container = aManager->GetLayerBuilder()->
BuildContainerLayerFor(aBuilder, aManager, mFrame, this, mList,
aContainerParameters, nullptr);
if (!container) {
return nullptr;
}
container->SetForceIsolatedGroup(true);
return container.forget();
}
bool nsDisplayBlendContainer::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) {
if (aItem->GetType() != TYPE_BLEND_CONTAINER)
return false;
// items for the same content element should be merged into a single
// compositing group
// aItem->GetUnderlyingFrame() returns non-null because it's nsDisplayOpacity
if (aItem->Frame()->GetContent() != mFrame->GetContent())
return false;
if (aItem->GetClip() != GetClip())
return false;
MergeFromTrackingMergedFrames(static_cast<nsDisplayBlendContainer*>(aItem));
return true;
}
nsDisplayOwnLayer::nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder, nsDisplayOwnLayer::nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList, nsIFrame* aFrame, nsDisplayList* aList,
uint32_t aFlags) uint32_t aFlags)

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

@ -622,14 +622,6 @@ public:
void SetContainsPluginItem() { mContainsPluginItem = true; } void SetContainsPluginItem() { mContainsPluginItem = true; }
bool ContainsPluginItem() { return mContainsPluginItem; } bool ContainsPluginItem() { return mContainsPluginItem; }
/**
* mContainsBlendMode is true if we processed a display item that
* has a blend mode attached. We do this so we can insert a
* nsDisplayBlendContainer in the parent stacking context.
*/
void SetContainsBlendMode(bool aContainsBlendMode) { mContainsBlendMode = aContainsBlendMode; }
bool ContainsBlendMode() const { return mContainsBlendMode; }
DisplayListClipState& ClipState() { return mClipState; } DisplayListClipState& ClipState() { return mClipState; }
private: private:
@ -688,7 +680,6 @@ private:
bool mIsInFixedPosition; bool mIsInFixedPosition;
bool mIsCompositingCheap; bool mIsCompositingCheap;
bool mContainsPluginItem; bool mContainsPluginItem;
bool mContainsBlendMode;
}; };
class nsDisplayItem; class nsDisplayItem;
@ -2507,59 +2498,6 @@ public:
bool CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder) MOZ_OVERRIDE; bool CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder) MOZ_OVERRIDE;
}; };
class nsDisplayMixBlendMode : public nsDisplayWrapList {
public:
nsDisplayMixBlendMode(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, uint32_t aFlags = 0);
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayMixBlendMode();
#endif
nsRegion GetOpaqueRegion(nsDisplayListBuilder* aBuilder, bool* aSnap);
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aContainerParameters) MOZ_OVERRIDE;
virtual void ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion) MOZ_OVERRIDE
{
// We don't need to compute an invalidation region since we have LayerTreeInvalidation
}
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aParameters) MOZ_OVERRIDE
{
return mozilla::LAYER_INACTIVE;
}
virtual bool ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion,
const nsRect& aAllowVisibleRegionExpansion) MOZ_OVERRIDE;
virtual bool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) MOZ_OVERRIDE;
NS_DISPLAY_DECL_NAME("MixBlendMode", TYPE_MIX_BLEND_MODE)
};
class nsDisplayBlendContainer : public nsDisplayWrapList {
public:
nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, uint32_t aFlags = 0);
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayBlendContainer();
#endif
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aContainerParameters) MOZ_OVERRIDE;
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerParameters& aParameters) MOZ_OVERRIDE
{
return mozilla::LAYER_INACTIVE;
}
virtual bool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) MOZ_OVERRIDE;
NS_DISPLAY_DECL_NAME("BlendContainer", TYPE_BLEND_CONTAINER)
};
/** /**
* A display item that has no purpose but to ensure its contents get * A display item that has no purpose but to ensure its contents get
* their own layer. * their own layer.

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

@ -1758,21 +1758,6 @@ WrapPreserve3DList(nsIFrame* aFrame, nsDisplayListBuilder* aBuilder, nsDisplayLi
return rv; return rv;
} }
class AutoSaveRestoreBlendMode
{
nsDisplayListBuilder& mBuilder;
bool AutoResetContainsBlendMode;
public:
AutoSaveRestoreBlendMode(nsDisplayListBuilder& aBuilder)
: mBuilder(aBuilder),
AutoResetContainsBlendMode(aBuilder.ContainsBlendMode()) {
}
~AutoSaveRestoreBlendMode() {
mBuilder.SetContainsBlendMode(AutoResetContainsBlendMode);
}
};
void void
nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect, const nsRect& aDirtyRect,
@ -1801,12 +1786,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
bool inTransform = aBuilder->IsInTransform(); bool inTransform = aBuilder->IsInTransform();
bool isTransformed = IsTransformed(); bool isTransformed = IsTransformed();
// reset blend mode so we can keep track if this stacking context needs have
// a nsDisplayBlendContainer. Set the blend mode back when the routine exits
// so we keep track if the parent stacking context needs a container too.
AutoSaveRestoreBlendMode autoRestoreBlendMode(*aBuilder);
aBuilder->SetContainsBlendMode(false);
if (isTransformed) { if (isTransformed) {
if (aBuilder->IsForPainting() && if (aBuilder->IsForPainting() &&
nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this)) { nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this)) {
@ -1839,7 +1818,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
} }
bool useOpacity = HasOpacity() && !nsSVGUtils::CanOptimizeOpacity(this); bool useOpacity = HasOpacity() && !nsSVGUtils::CanOptimizeOpacity(this);
bool useBlendMode = disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL;
bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this); bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this);
bool useStickyPosition = disp->mPosition == NS_STYLE_POSITION_STICKY && bool useStickyPosition = disp->mPosition == NS_STYLE_POSITION_STICKY &&
IsScrollFrameActive(nsLayoutUtils::GetNearestScrollableFrame(GetParent(), IsScrollFrameActive(nsLayoutUtils::GetNearestScrollableFrame(GetParent(),
@ -1848,7 +1826,7 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
DisplayListClipState::AutoSaveRestore clipState(aBuilder); DisplayListClipState::AutoSaveRestore clipState(aBuilder);
if (isTransformed || useOpacity || useBlendMode || usingSVGEffects || useStickyPosition) { if (isTransformed || useOpacity || usingSVGEffects || useStickyPosition) {
// We don't need to pass ancestor clipping down to our children; // We don't need to pass ancestor clipping down to our children;
// everything goes inside a display item's child list, and the display // everything goes inside a display item's child list, and the display
// item itself will be clipped. // item itself will be clipped.
@ -1998,21 +1976,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
} }
} }
/* If there's blending, wrap up the list in a blend-mode item. Note
* that opacity can be applied before blending as the blend color is
* not affected by foreground opacity (only background alpha).
*/
if (useBlendMode && !resultList.IsEmpty()) {
resultList.AppendNewToTop(
new (aBuilder) nsDisplayMixBlendMode(aBuilder, this, &resultList));
}
if (aBuilder->ContainsBlendMode()) {
resultList.AppendNewToTop(
new (aBuilder) nsDisplayBlendContainer(aBuilder, this, &resultList));
}
aList->AppendToTop(&resultList); aList->AppendToTop(&resultList);
} }
@ -2143,12 +2106,11 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
return; return;
// Child is composited if it's transformed, partially transparent, or has // Child is composited if it's transformed, partially transparent, or has
// SVG effects or a blend mode.. // SVG effects.
const nsStyleDisplay* disp = child->StyleDisplay(); const nsStyleDisplay* disp = child->StyleDisplay();
const nsStylePosition* pos = child->StylePosition(); const nsStylePosition* pos = child->StylePosition();
bool isVisuallyAtomic = child->HasOpacity() bool isVisuallyAtomic = child->HasOpacity()
|| child->IsTransformed() || child->IsTransformed()
|| disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL
|| nsSVGIntegrationUtils::UsingEffectsForFrame(child); || nsSVGIntegrationUtils::UsingEffectsForFrame(child);
bool isPositioned = disp->IsPositioned(child); bool isPositioned = disp->IsPositioned(child);
@ -2203,9 +2165,6 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
nsDisplayList list; nsDisplayList list;
nsDisplayList extraPositionedDescendants; nsDisplayList extraPositionedDescendants;
if (isStackingContext) { if (isStackingContext) {
if (disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
aBuilder->SetContainsBlendMode(true);
}
// True stacking context. // True stacking context.
// For stacking contexts, BuildDisplayListForStackingContext handles // For stacking contexts, BuildDisplayListForStackingContext handles
// clipping and MarkAbsoluteFramesForDisplayList. // clipping and MarkAbsoluteFramesForDisplayList.

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 15 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 14 KiB

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

@ -1,28 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<script type="text/javascript">
window.onload = function() {
var c = document.getElementById("b");
var ctx = c.getContext("2d");
ctx.fillStyle = "rgb(0,0,0)";
ctx.fillRect(0,0,100,100);
}
</script>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
}
</style>
<div id="a">
<canvas width="100" height="100" id="b"/>
</div>
</html>

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

@ -1,29 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<script type="text/javascript">
window.onload = function() {
var c = document.getElementById("b");
var ctx = c.getContext("2d");
ctx.fillStyle = "rgb(0,255,0)";
ctx.fillRect(0,0,100,100);
}
</script>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
mix-blend-mode:difference;
}
</style>
<div id="a">
<canvas width="100" height="100" id="b"/>
</div>
</html>

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
background-color: rgb(0,0,0);
}
</style>
<div id="a">
<div id="b">
</div>
</div>
</html>

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

@ -1,23 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
background-color: rgb(0,255,0);
mix-blend-mode:difference;
}
</style>
<div id="a">
<div id="b">
</div>
</div>
</html>

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

@ -1,20 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
background-color: rgb(0,255,0);
width: 200px;
height: 210px;
}
#b {
width: 100px;
height: 100px;
background-color: rgb(0,0,0);
}
</style>
<div id="a">
</div>
</html>

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

@ -1,30 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
.a {
background-color: rgb(0,255,0);
}
#b {
width: 200px;
height: 210px;
}
.c {
width: 100px;
height: 100px;
mix-blend-mode: difference;
}
#d {
z-index: 1;
position: absolute;
top:110px;
}
</style>
<div id="b" class="a">
<div id="d">
<div class="a c"></div>
</div>
</div>
</html>

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
background: linear-gradient(rgb(0,255,255), rgb(255,255,0));
}
</style>
<div id="a">
<div id="b">
</div>
</div>
</html>

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

@ -1,23 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
background: linear-gradient(rgb(0,0,255), rgb(255,0,0));
mix-blend-mode:difference;
}
</style>
<div id="a">
<div id="b">
</div>
</div>
</html>

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

@ -1,20 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
}
</style>
<div id="a">
<img src="as-image/black100x100.png" id="b"/>
</div>
</html>

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

@ -1,21 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#a {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#b {
width: 100px;
height: 100px;
mix-blend-mode:difference;
}
</style>
<div id="a">
<img src="as-image/green100x100.png" id="b"/>
</div>
</html>

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

@ -1,5 +0,0 @@
pref(layout.css.mix-blend-mode.enabled,true) == blend-canvas.html blend-canvas-ref.html
pref(layout.css.mix-blend-mode.enabled,true) == blend-constant-background-color.html blend-constant-background-color-ref.html
pref(layout.css.mix-blend-mode.enabled,true) == blend-gradient-background-color.html blend-gradient-background-color-ref.html
pref(layout.css.mix-blend-mode.enabled,true) == blend-image.html blend-image-ref.html
pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html

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

@ -51,9 +51,6 @@ include canvas/reftest.list
# css animations # css animations
include css-animations/reftest.list include css-animations/reftest.list
# blending/
skip-if(Android&&AndroidVersion<15) include css-blending/reftest.list
# css calc() tests # css calc() tests
include css-calc/reftest.list include css-calc/reftest.list

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: color-burn;"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 754 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,255,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(253,253,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: color-dodge"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 754 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,105,105,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(93,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,52,52,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,131,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,48,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,192,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(55,55,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(137,137,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(95,95,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(86,86,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(164,164,37,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(31,31,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: color"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 748 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: darken"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 749 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(128,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,128,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(128,127,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(127,128,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,28 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#b {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#c {
z-index: 1;
position: absolute;
top:100px;
}
</style>
<div id="b">
<svg width="100" height="100" viewBox="0 0 100 100" >
<rect style="fill:#000000;" width="100" height="100"/>
</svg>
<div id="c">
<svg width="100" height="100" viewBox="0 0 100 100" >
<rect style="fill:#00FF00;" width="100" height="100"/>
</svg>
</div>
</div>
</html>

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

@ -1,28 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<style>
#b {
width: 200px;
height: 200px;
background-color: rgb(0,255,0);
}
#c {
z-index: 1;
position: absolute;
top:100px;
}
</style>
<div id="b">
<svg width="100" height="100" viewBox="0 0 100 100" >
<rect style="fill:#00FF00;mix-blend-mode:difference;" width="100" height="100"/>
</svg>
<div id="c">
<svg width="100" height="100" viewBox="0 0 100 100" >
<rect style="fill:#00FF00;mix-blend-mode:difference;" width="100" height="100"/>
</svg>
</div>
</div>
</html>

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: difference"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 753 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(128,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,128,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(128,127,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(127,128,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: exclusion"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 752 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(254,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,254,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: hard-light"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 753 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,105,105,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(93,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(202,75,75,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,131,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,48,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(38,165,38,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(55,55,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(137,137,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(99,99,226,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(87,87,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(169,169,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(31,31,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: hue"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 746 B

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

@ -1,7 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 301 B

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

@ -1,10 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
<g style="mix-blend-mode: multiply">
<rect x="40" y="40" width="80" height="80" fill="rgb(0,255,0)" style="mix-blend-mode: difference"/>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 451 B

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

@ -1,7 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 302 B

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

@ -1,15 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<filter id="f1" x="0" y="0">
<feGaussianBlur in="SourceGraphic" stdDeviation="15" />
</filter>
</defs>
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
<g filter="url(#f1)">
<rect x="40" y="40" width="80" height="80" fill="rgb(0,255,0)" style="mix-blend-mode: difference"/>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 546 B

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

@ -1,7 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 301 B

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

@ -1,15 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<mask id="msk">
<rect x="10" y="10" width="20" height="20" />
</mask>
</defs>
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
<g mask="url(#msk)">
<rect x="40" y="40" width="80" height="80" fill="rgb(0,255,0)" style="mix-blend-mode: difference"/>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 520 B

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

@ -1,7 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 299 B

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

@ -1,10 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<rect x="0" y="0" width="160" height="160" fill="rgb(0,255,0)"/>
<g opacity=".5">
<rect x="40" y="40" width="80" height="80" fill="rgb(0,255,0)" style="mix-blend-mode: difference"/>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 432 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,255,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,127,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(127,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: lighten"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 750 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,131,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(55,55,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(86,86,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,105,105,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(137,137,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(164,164,37,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(93,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,48,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(31,31,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,52,52,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,192,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(95,95,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: luminosity"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 753 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,127,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(127,63,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,127,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(64,127,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(63,63,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(191,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,191,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,127,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(95,95,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="opacity: .5; mix-blend-mode: multiply"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 764 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(127,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,127,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(63,63,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: multiply"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 751 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: normal"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 750 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(254,0,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(0,254,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(0,0,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(126,126,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: overlay"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 751 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(166,39,39,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(76,203,76,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(14,14,141,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(127,127,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: saturation"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 754 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(255,127,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,255,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(127,255,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,255,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,255,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,127,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(127,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(127,127,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(190,190,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.4 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: screen"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 750 B

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

@ -1,22 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400">
<rect x="0" y="0" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="0" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="0" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="0" width="40" height="40" fill="rgba(190,63,0,1)"></rect>
<rect x="0" y="40" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="40" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="40" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="40" width="40" height="40" fill="rgba(64,190,0,1)"></rect>
<rect x="0" y="80" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="80" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="80" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="80" width="40" height="40" fill="rgba(63,63,0,1)"></rect>
<rect x="0" y="120" width="40" height="40" fill="rgba(255,0,0,1)"></rect>
<rect x="40" y="120" width="40" height="40" fill="rgba(0,255,0,1)"></rect>
<rect x="80" y="120" width="40" height="40" fill="rgba(0,0,255,1)"></rect>
<rect x="120" y="120" width="40" height="40" fill="rgba(126,126,0,1)"></rect>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

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

@ -1,16 +0,0 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="400" >
<defs>
<g id="patch">
<rect x="0" y="0" width="40" height="160" fill="rgb(255,0,0)"/>
<rect x="40" y="0" width="40" height="160" fill="rgb(0,255,0)"/>
<rect x="80" y="0" width="40" height="160" fill="rgb(0,0,255)"/>
<rect x="120" y="0" width="40" height="160" fill="rgb(127,127,0)"/>
</g>
</defs>
<use xlink:href="#patch" x="0" y="0" width="160" height="160"></use>
<use xlink:href="#patch" x="0" y="0" width="160" height="160" transform="rotate(90 80 80)" style="mix-blend-mode: soft-light"></use>
</svg>

До

Ширина:  |  Высота:  |  Размер: 754 B

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

@ -367,26 +367,3 @@ skip-if(B2G) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-ref.svg # bug 773
== svg-effects-area-zoomed-out.xhtml svg-effects-area-zoomed-out-ref.xhtml == svg-effects-area-zoomed-out.xhtml svg-effects-area-zoomed-out-ref.xhtml
== href-attr-change-restyles.svg href-attr-change-restyles-ref.svg == href-attr-change-restyles.svg href-attr-change-restyles-ref.svg
== mask-img.html mask-img-ref.html == mask-img.html mask-img-ref.html
skip-if(d2d||(Android&&AndroidVersion<15)) pref(layout.css.mix-blend-mode.enabled,true) == blend-color-burn.svg blend-color-burn-ref.svg
skip-if(d2d||(Android&&AndroidVersion<15)) pref(layout.css.mix-blend-mode.enabled,true) == blend-color-dodge.svg blend-color-dodge-ref.svg
# pref(layout.css.mix-blend-mode.enabled,true) == blend-color.svg blend-color-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-darken.svg blend-darken-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-difference.svg blend-difference-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-exclusion.svg blend-exclusion-ref.svg
# pref(layout.css.mix-blend-mode.enabled,true) == blend-hard-light.svg blend-hard-light-ref.svg
# pref(layout.css.mix-blend-mode.enabled,true) == blend-hue.svg blend-hue-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-blend.svg blend-layer-blend-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-filter.svg blend-layer-filter-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-mask.svg blend-layer-mask-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-layer-opacity.svg blend-layer-opacity-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-lighten.svg blend-lighten-ref.svg
# pref(layout.css.mix-blend-mode.enabled,true) == blend-luminosity.svg blend-luminosity-ref.svg
#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-multiply-alpha.svg blend-multiply-alpha-ref.svg
skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-multiply.svg blend-multiply-ref.svg
pref(layout.css.mix-blend-mode.enabled,true) == blend-normal.svg blend-normal-ref.svg
#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-overlay.svg blend-overlay-ref.svg
#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-saturation.svg blend-saturation-ref.svg
#skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-screen.svg blend-screen-ref.svg
# skip-if(Android&&AndroidVersion<15) pref(layout.css.mix-blend-mode.enabled,true) == blend-soft-light.svg blend-soft-light-ref.svg
skip-if(Android) pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html

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

@ -342,7 +342,7 @@ nsSVGImageFrame::PaintSVG(nsRenderingContext *aContext,
opacity = StyleDisplay()->mOpacity; opacity = StyleDisplay()->mOpacity;
} }
if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { if (opacity != 1.0f) {
ctx->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA); ctx->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA);
} }
@ -396,7 +396,7 @@ nsSVGImageFrame::PaintSVG(nsRenderingContext *aContext,
drawFlags); drawFlags);
} }
if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) { if (opacity != 1.0f) {
ctx->PopGroupToSource(); ctx->PopGroupToSource();
ctx->SetOperator(gfxContext::OPERATOR_OVER); ctx->SetOperator(gfxContext::OPERATOR_OVER);
ctx->Paint(opacity); ctx->Paint(opacity);

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

@ -494,8 +494,7 @@ nsSVGIntegrationUtils::PaintFramesWithEffects(nsRenderingContext* aCtx,
bool complexEffects = false; bool complexEffects = false;
/* Check if we need to do additional operations on this child's /* Check if we need to do additional operations on this child's
* rendering, which necessitates rendering into another surface. */ * rendering, which necessitates rendering into another surface. */
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip) if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) {
|| aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
complexEffects = true; complexEffects = true;
gfx->Save(); gfx->Save();
aCtx->IntersectClip(aFrame->GetVisualOverflowRectRelativeToSelf() + aCtx->IntersectClip(aFrame->GetVisualOverflowRectRelativeToSelf() +

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

@ -846,8 +846,7 @@ nsSVGUtils::PaintFrameWithEffects(nsRenderingContext *aContext,
/* Check if we need to do additional operations on this child's /* Check if we need to do additional operations on this child's
* rendering, which necessitates rendering into another surface. */ * rendering, which necessitates rendering into another surface. */
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip) if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) {
|| aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
complexEffects = true; complexEffects = true;
gfx->Save(); gfx->Save();
if (!(aFrame->GetStateBits() & NS_FRAME_IS_NONDISPLAY)) { if (!(aFrame->GetStateBits() & NS_FRAME_IS_NONDISPLAY)) {