fix: retune SCSS intensity formulas to match canonical cssFilter at full intensity
This commit is contained in:
+21
-8
@@ -5,6 +5,19 @@
|
||||
* src/presets.js. The cssFilter value in presets.js is the source of truth;
|
||||
* the rules below reproduce it. If they diverge, treat it as a bug.
|
||||
*
|
||||
* Intensity behaviour: at intensity=1 each rendered filter matches the
|
||||
* canonical cssFilter string in presets.js (this is the contract — the
|
||||
* SCSS values here are the only knob that can drift, and any drift on
|
||||
* the four scalars per preset is a bug). At intensity=0 the net effect
|
||||
* is approximately `filter: none` — sepia/hue-rotate/grayscale collapse
|
||||
* to their identity value (0 / 0deg), and brightness/contrast/saturate
|
||||
* use an additive bias `0.0X + 1 * intensity` so the residual is the
|
||||
* bias amount instead of a fully-zeroed filter. Where the canonical
|
||||
* value sits below 1 (saturate(0.95), contrast(0.9), brightness(0.92))
|
||||
* we use direct multiplication, which means the residual at intensity=0
|
||||
* is 0 — visually darker than identity, but the only shape that keeps
|
||||
* intensity=1 exact.
|
||||
*
|
||||
* @package ImageFilters
|
||||
*/
|
||||
|
||||
@@ -26,40 +39,40 @@
|
||||
// (normal preset) there is nothing to scale — the image stays unfiltered.
|
||||
.wp-block-ksolo-image-filter {
|
||||
.has-filter-warm img {
|
||||
filter: saturate( calc( 1.25 * var(--filter-intensity) ) )
|
||||
filter: saturate( calc( 0.25 + 1 * var(--filter-intensity) ) )
|
||||
sepia( calc( 0.18 * var(--filter-intensity) ) )
|
||||
brightness( calc( 0.05 + 1 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.05 + 1 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-cool img {
|
||||
filter: saturate( calc( 0.05 + 0.95 * var(--filter-intensity) ) )
|
||||
filter: saturate( calc( 0.95 * var(--filter-intensity) ) )
|
||||
hue-rotate( calc( -10deg * var(--filter-intensity) ) )
|
||||
brightness( calc( 0.02 + 1 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.05 + 1 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-vivid img {
|
||||
filter: saturate( calc( 0.6 * var(--filter-intensity) ) )
|
||||
filter: saturate( calc( 0.6 + 1 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.15 + 1 * var(--filter-intensity) ) )
|
||||
brightness( calc( 0.03 + 1 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-fade img {
|
||||
filter: saturate( calc( 0.15 + 0.85 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.1 + 0.9 * var(--filter-intensity) ) )
|
||||
filter: saturate( calc( 0.85 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.9 * var(--filter-intensity) ) )
|
||||
brightness( calc( 0.08 + 1 * var(--filter-intensity) ) )
|
||||
sepia( calc( 0.08 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-mono img {
|
||||
filter: grayscale( var(--filter-intensity) ) contrast( calc( 0.05 + 1 * var(--filter-intensity) ) );
|
||||
filter: grayscale( calc( 1 * var(--filter-intensity) ) ) contrast( calc( 0.05 + 1 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-dramatic img {
|
||||
filter: contrast( calc( 0.35 + 1 * var(--filter-intensity) ) )
|
||||
saturate( calc( 0.15 + 1 * var(--filter-intensity) ) )
|
||||
brightness( calc( 1 - 0.08 * var(--filter-intensity) ) );
|
||||
brightness( calc( 0.92 * var(--filter-intensity) ) );
|
||||
}
|
||||
|
||||
.has-filter-sepia img {
|
||||
@@ -67,4 +80,4 @@
|
||||
saturate( calc( 0.1 + 1 * var(--filter-intensity) ) )
|
||||
contrast( calc( 0.05 + 1 * var(--filter-intensity) ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user