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),
|
||||
mPostYScale(1.0f),
|
||||
mOpacity(1.0),
|
||||
mMixBlendMode(gfxContext::OPERATOR_OVER),
|
||||
mForceIsolatedGroup(false),
|
||||
mContentFlags(0),
|
||||
mUseClipRect(false),
|
||||
mUseTileSourceRect(false),
|
||||
|
@ -683,20 +681,6 @@ Layer::GetEffectiveOpacity()
|
|||
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
|
||||
Layer::ComputeEffectiveTransformForMaskLayer(const gfx3DMatrix& aTransformToSurface)
|
||||
{
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "FrameMetrics.h" // for FrameMetrics
|
||||
#include "Units.h" // for LayerMargin, LayerPoint
|
||||
#include "gfx3DMatrix.h" // for gfx3DMatrix
|
||||
#include "gfxContext.h" // for GraphicsOperator
|
||||
#include "gfxASurface.h" // for gfxASurface, etc
|
||||
#include "gfxColor.h" // for gfxRGBA
|
||||
#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
|
||||
* 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.
|
||||
float GetOpacity() { return mOpacity; }
|
||||
gfxContext::GraphicsOperator GetMixBlendMode() const { return mMixBlendMode; }
|
||||
const nsIntRect* GetClipRect() { return mUseClipRect ? &mClipRect : nullptr; }
|
||||
uint32_t GetContentFlags() { return mContentFlags; }
|
||||
const nsIntRegion& GetVisibleRegion() { return mVisibleRegion; }
|
||||
|
@ -1127,18 +1102,11 @@ public:
|
|||
// accounting for this layer possibly being a shadow.
|
||||
const nsIntRect* GetEffectiveClipRect();
|
||||
const nsIntRegion& GetEffectiveVisibleRegion();
|
||||
|
||||
/**
|
||||
* Returns the product of the opacities of this layer and all ancestors up
|
||||
* to and excluding the nearest ancestor that has UseIntermediateSurface() set.
|
||||
*/
|
||||
float GetEffectiveOpacity();
|
||||
|
||||
/**
|
||||
* Returns the blendmode of this layer.
|
||||
*/
|
||||
gfxContext::GraphicsOperator GetEffectiveMixBlendMode();
|
||||
|
||||
/**
|
||||
* This returns the effective transform computed by
|
||||
* ComputeEffectiveTransforms. Typically this is a transform that transforms
|
||||
|
@ -1336,8 +1304,6 @@ protected:
|
|||
AnimationArray mAnimations;
|
||||
InfallibleTArray<AnimData> mAnimationData;
|
||||
float mOpacity;
|
||||
gfxContext::GraphicsOperator mMixBlendMode;
|
||||
bool mForceIsolatedGroup;
|
||||
nsIntRect mClipRect;
|
||||
nsIntRect mTileSourceRect;
|
||||
nsIntRegion mInvalidRegion;
|
||||
|
|
|
@ -27,8 +27,7 @@ BasicCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer)
|
|||
UpdateSurface();
|
||||
FireDidTransactionCallback();
|
||||
|
||||
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
|
||||
PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
|
||||
PaintWithOpacity(aContext, GetEffectiveOpacity(), aMaskLayer, GetOperator());
|
||||
}
|
||||
|
||||
already_AddRefed<CanvasLayer>
|
||||
|
|
|
@ -48,8 +48,7 @@ public:
|
|||
if (IsHidden())
|
||||
return;
|
||||
gfxContextAutoSaveRestore contextSR(aContext);
|
||||
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
|
||||
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
|
||||
AutoSetOperator setOperator(aContext, GetOperator());
|
||||
|
||||
aContext->SetColor(mColor);
|
||||
|
||||
|
|
|
@ -58,24 +58,15 @@ BasicContainerLayer::ComputeEffectiveTransforms(const gfx3DMatrix& aTransformToS
|
|||
|
||||
ComputeEffectiveTransformForMaskLayer(aTransformToSurface);
|
||||
|
||||
Layer* child = GetFirstChild();
|
||||
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,
|
||||
/* If we have a single child, it can just inherit our opacity,
|
||||
* otherwise we need a PushGroup and we need to mark ourselves as using
|
||||
* an intermediate surface so our children don't inherit our opacity
|
||||
* via GetEffectiveOpacity.
|
||||
* Having a mask layer always forces our own push group
|
||||
* Having a blend mode also always forces our own push group
|
||||
*/
|
||||
mUseIntermediateSurface =
|
||||
GetMaskLayer() ||
|
||||
GetForceIsolatedGroup() ||
|
||||
(GetMixBlendMode() != gfxContext::OPERATOR_OVER && HasMultipleChildren()) ||
|
||||
(GetEffectiveOpacity() != 1.0 && (HasMultipleChildren() || hasSingleBlendingChild));
|
||||
GetMaskLayer() || (GetEffectiveOpacity() != 1.0 &&
|
||||
HasMultipleChildren());
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -110,9 +110,7 @@ BasicImageLayer::GetAndPaintCurrentImage(gfxContext* aContext,
|
|||
// The visible region can extend outside the image, so just draw
|
||||
// within the image bounds.
|
||||
if (aContext) {
|
||||
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
|
||||
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
|
||||
|
||||
AutoSetOperator setOperator(aContext, GetOperator());
|
||||
PaintContext(pat,
|
||||
nsIntRegion(nsIntRect(0, 0, size.width, size.height)),
|
||||
aOpacity, aContext, aMaskLayer);
|
||||
|
|
|
@ -109,7 +109,6 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
|
|||
canUseOpaqueSurface ? gfxASurface::CONTENT_COLOR :
|
||||
gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
float opacity = GetEffectiveOpacity();
|
||||
gfxContext::GraphicsOperator mixBlendMode = GetEffectiveMixBlendMode();
|
||||
|
||||
if (!BasicManager()->IsRetained()) {
|
||||
NS_ASSERTION(readbackUpdates.IsEmpty(), "Can't do readback for non-retained layer");
|
||||
|
@ -131,13 +130,13 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
|
|||
|
||||
bool needsClipToVisibleRegion = GetClipToVisibleRegion();
|
||||
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;
|
||||
if (needsGroup) {
|
||||
groupContext =
|
||||
BasicManager()->PushGroupForLayer(aContext, this, toDraw,
|
||||
&needsClipToVisibleRegion);
|
||||
if (GetOperator() != gfxContext::OPERATOR_OVER || mixBlendMode != gfxContext::OPERATOR_OVER) {
|
||||
if (GetOperator() != gfxContext::OPERATOR_OVER) {
|
||||
needsClipToVisibleRegion = true;
|
||||
}
|
||||
} else {
|
||||
|
@ -150,7 +149,7 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
|
|||
if (needsClipToVisibleRegion) {
|
||||
gfxUtils::ClipToRegion(aContext, toDraw);
|
||||
}
|
||||
AutoSetOperator setOptimizedOperator(aContext, mixBlendMode != gfxContext::OPERATOR_OVER ? mixBlendMode : GetOperator());
|
||||
AutoSetOperator setOperator(aContext, GetOperator());
|
||||
PaintWithMask(aContext, opacity, aMaskLayer);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ DECLARE_DISPLAY_ITEM_TYPE(ALT_FEEDBACK)
|
|||
DECLARE_DISPLAY_ITEM_TYPE(BACKGROUND)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(THEMED_BACKGROUND)
|
||||
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(BOX_SHADOW_OUTER)
|
||||
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(IMAGE)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(LIST_FOCUS)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(MIX_BLEND_MODE)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(OPACITY)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(OPTION_EVENT_GRABBER)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(OUTLINE)
|
||||
|
|
|
@ -486,8 +486,7 @@ nsDisplayListBuilder::nsDisplayListBuilder(nsIFrame* aReferenceFrame,
|
|||
mHasFixedItems(false),
|
||||
mIsInFixedPosition(false),
|
||||
mIsCompositingCheap(false),
|
||||
mContainsPluginItem(false),
|
||||
mContainsBlendMode(false)
|
||||
mContainsPluginItem(false)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsDisplayListBuilder);
|
||||
PL_InitArenaPool(&mPool, "displayListArena", 1024,
|
||||
|
@ -3118,144 +3117,6 @@ bool nsDisplayOpacity::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* a
|
|||
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,
|
||||
nsIFrame* aFrame, nsDisplayList* aList,
|
||||
uint32_t aFlags)
|
||||
|
|
|
@ -622,14 +622,6 @@ public:
|
|||
void SetContainsPluginItem() { mContainsPluginItem = true; }
|
||||
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; }
|
||||
|
||||
private:
|
||||
|
@ -688,7 +680,6 @@ private:
|
|||
bool mIsInFixedPosition;
|
||||
bool mIsCompositingCheap;
|
||||
bool mContainsPluginItem;
|
||||
bool mContainsBlendMode;
|
||||
};
|
||||
|
||||
class nsDisplayItem;
|
||||
|
@ -2507,59 +2498,6 @@ public:
|
|||
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
|
||||
* their own layer.
|
||||
|
|
|
@ -1758,21 +1758,6 @@ WrapPreserve3DList(nsIFrame* aFrame, nsDisplayListBuilder* aBuilder, nsDisplayLi
|
|||
return rv;
|
||||
}
|
||||
|
||||
class AutoSaveRestoreBlendMode
|
||||
{
|
||||
nsDisplayListBuilder& mBuilder;
|
||||
bool AutoResetContainsBlendMode;
|
||||
public:
|
||||
AutoSaveRestoreBlendMode(nsDisplayListBuilder& aBuilder)
|
||||
: mBuilder(aBuilder),
|
||||
AutoResetContainsBlendMode(aBuilder.ContainsBlendMode()) {
|
||||
}
|
||||
|
||||
~AutoSaveRestoreBlendMode() {
|
||||
mBuilder.SetContainsBlendMode(AutoResetContainsBlendMode);
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
||||
const nsRect& aDirtyRect,
|
||||
|
@ -1801,12 +1786,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
|||
|
||||
bool inTransform = aBuilder->IsInTransform();
|
||||
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 (aBuilder->IsForPainting() &&
|
||||
nsDisplayTransform::ShouldPrerenderTransformedContent(aBuilder, this)) {
|
||||
|
@ -1839,7 +1818,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
|||
}
|
||||
|
||||
bool useOpacity = HasOpacity() && !nsSVGUtils::CanOptimizeOpacity(this);
|
||||
bool useBlendMode = disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL;
|
||||
bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this);
|
||||
bool useStickyPosition = disp->mPosition == NS_STYLE_POSITION_STICKY &&
|
||||
IsScrollFrameActive(nsLayoutUtils::GetNearestScrollableFrame(GetParent(),
|
||||
|
@ -1848,7 +1826,7 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* 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;
|
||||
// everything goes inside a display item's child list, and the display
|
||||
// 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);
|
||||
}
|
||||
|
||||
|
@ -2143,12 +2106,11 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
|
|||
return;
|
||||
|
||||
// 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 nsStylePosition* pos = child->StylePosition();
|
||||
bool isVisuallyAtomic = child->HasOpacity()
|
||||
|| child->IsTransformed()
|
||||
|| disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL
|
||||
|| nsSVGIntegrationUtils::UsingEffectsForFrame(child);
|
||||
|
||||
bool isPositioned = disp->IsPositioned(child);
|
||||
|
@ -2203,9 +2165,6 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
|
|||
nsDisplayList list;
|
||||
nsDisplayList extraPositionedDescendants;
|
||||
if (isStackingContext) {
|
||||
if (disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
|
||||
aBuilder->SetContainsBlendMode(true);
|
||||
}
|
||||
// True stacking context.
|
||||
// For stacking contexts, BuildDisplayListForStackingContext handles
|
||||
// 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
|
||||
include css-animations/reftest.list
|
||||
|
||||
# blending/
|
||||
skip-if(Android&&AndroidVersion<15) include css-blending/reftest.list
|
||||
|
||||
# css calc() tests
|
||||
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
|
||||
== href-attr-change-restyles.svg href-attr-change-restyles-ref.svg
|
||||
== 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;
|
||||
}
|
||||
|
||||
if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
|
||||
if (opacity != 1.0f) {
|
||||
ctx->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA);
|
||||
}
|
||||
|
||||
|
@ -396,7 +396,7 @@ nsSVGImageFrame::PaintSVG(nsRenderingContext *aContext,
|
|||
drawFlags);
|
||||
}
|
||||
|
||||
if (opacity != 1.0f || StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
|
||||
if (opacity != 1.0f) {
|
||||
ctx->PopGroupToSource();
|
||||
ctx->SetOperator(gfxContext::OPERATOR_OVER);
|
||||
ctx->Paint(opacity);
|
||||
|
|
|
@ -494,8 +494,7 @@ nsSVGIntegrationUtils::PaintFramesWithEffects(nsRenderingContext* aCtx,
|
|||
bool complexEffects = false;
|
||||
/* Check if we need to do additional operations on this child's
|
||||
* rendering, which necessitates rendering into another surface. */
|
||||
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)
|
||||
|| aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
|
||||
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) {
|
||||
complexEffects = true;
|
||||
gfx->Save();
|
||||
aCtx->IntersectClip(aFrame->GetVisualOverflowRectRelativeToSelf() +
|
||||
|
|
|
@ -846,8 +846,7 @@ nsSVGUtils::PaintFrameWithEffects(nsRenderingContext *aContext,
|
|||
|
||||
/* Check if we need to do additional operations on this child's
|
||||
* rendering, which necessitates rendering into another surface. */
|
||||
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)
|
||||
|| aFrame->StyleDisplay()->mMixBlendMode != NS_STYLE_BLEND_NORMAL) {
|
||||
if (opacity != 1.0f || maskFrame || (clipPathFrame && !isTrivialClip)) {
|
||||
complexEffects = true;
|
||||
gfx->Save();
|
||||
if (!(aFrame->GetStateBits() & NS_FRAME_IS_NONDISPLAY)) {
|
||||
|
|