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)
|
@ -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.
|
||||||
|
|
Двоичные данные
layout/reftests/css-blending/as-image/black100x100.png
До Ширина: | Высота: | Размер: 15 KiB |
Двоичные данные
layout/reftests/css-blending/as-image/green100x100.png
До Ширина: | Высота: | Размер: 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)) {
|
||||||
|
|