[gnome] Update extensions
This commit is contained in:
@ -0,0 +1,141 @@
|
||||
import GObject from 'gi://GObject';
|
||||
|
||||
import * as utils from '../conveniences/utils.js';
|
||||
const Shell = await utils.import_in_shell_only('gi://Shell');
|
||||
const Clutter = await utils.import_in_shell_only('gi://Clutter');
|
||||
|
||||
const SHADER_FILENAME = 'luminosity.glsl';
|
||||
const DEFAULT_PARAMS = {
|
||||
brightness_shift: 0., brightness_multiplicator: 1., contrast: 1., contrast_center: 0.5, saturation_multiplicator: 1.
|
||||
};
|
||||
|
||||
|
||||
export const LuminosityEffect = utils.IS_IN_PREFERENCES ?
|
||||
{ default_params: DEFAULT_PARAMS } :
|
||||
new GObject.registerClass({
|
||||
GTypeName: "LuminosityEffect",
|
||||
Properties: {
|
||||
'brightness_shift': GObject.ParamSpec.double(
|
||||
`brightness_shift`,
|
||||
`Brightness shift`,
|
||||
`Brightness shift value in shader`,
|
||||
GObject.ParamFlags.READWRITE,
|
||||
-1.0, 1.0,
|
||||
0.0,
|
||||
),
|
||||
'brightness_multiplicator': GObject.ParamSpec.double(
|
||||
`brightness_multiplicator`,
|
||||
`Brightness multiplicator`,
|
||||
`Brightness multiplicator value in shader`,
|
||||
GObject.ParamFlags.READWRITE,
|
||||
0.0, 2.0,
|
||||
1.0,
|
||||
),
|
||||
'contrast': GObject.ParamSpec.double(
|
||||
`contrast`,
|
||||
`Contrast`,
|
||||
`Contrast value in shader`,
|
||||
GObject.ParamFlags.READWRITE,
|
||||
0.0, 2.0,
|
||||
1.0,
|
||||
),
|
||||
'contrast_center': GObject.ParamSpec.double(
|
||||
`contrast_center`,
|
||||
`Contrast center`,
|
||||
`Contrast center value in shader`,
|
||||
GObject.ParamFlags.READWRITE,
|
||||
0.0, 1.0,
|
||||
0.5,
|
||||
),
|
||||
'saturation_multiplicator': GObject.ParamSpec.double(
|
||||
`saturation_multiplicator`,
|
||||
`Saturation multiplicator`,
|
||||
`Saturation multiplicator value in shader`,
|
||||
GObject.ParamFlags.READWRITE,
|
||||
0.0, 2.0,
|
||||
1.0,
|
||||
),
|
||||
}
|
||||
}, class LuminosityEffect extends Clutter.ShaderEffect {
|
||||
constructor(params) {
|
||||
super(params);
|
||||
|
||||
utils.setup_params(this, params);
|
||||
|
||||
// set shader source
|
||||
this._source = utils.get_shader_source(Shell, SHADER_FILENAME, import.meta.url);
|
||||
if (this._source)
|
||||
this.set_shader_source(this._source);
|
||||
}
|
||||
|
||||
static get default_params() {
|
||||
return DEFAULT_PARAMS;
|
||||
}
|
||||
|
||||
get brightness_shift() {
|
||||
return this._brightness;
|
||||
}
|
||||
|
||||
set brightness_shift(value) {
|
||||
if (this._brightness_shift !== value) {
|
||||
this._brightness_shift = value;
|
||||
|
||||
this.set_uniform_value('brightness_shift', parseFloat(this._brightness_shift - 1e-6));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
get brightness_multiplicator() {
|
||||
return this._brightness_multiplicator;
|
||||
}
|
||||
|
||||
set brightness_multiplicator(value) {
|
||||
if (this._brightness_multiplicator !== value) {
|
||||
this._brightness_multiplicator = value;
|
||||
|
||||
let brightness_mul = 600.;
|
||||
if (value < 1.995)
|
||||
brightness_mul = 3. * (1. / (1. - (value / 2.) ** 2) - 1.);
|
||||
this.set_uniform_value('brightness_multiplicator', parseFloat(brightness_mul - 1e-6));
|
||||
}
|
||||
}
|
||||
|
||||
get contrast() {
|
||||
return this._contrast;
|
||||
}
|
||||
|
||||
set contrast(value) {
|
||||
if (this._contrast !== value) {
|
||||
this._contrast = value;
|
||||
|
||||
this.set_uniform_value('contrast', parseFloat(this._contrast - 1e-6));
|
||||
}
|
||||
}
|
||||
|
||||
get contrast_center() {
|
||||
return this._contrast_center;
|
||||
}
|
||||
|
||||
set contrast_center(value) {
|
||||
if (this._contrast_center !== value) {
|
||||
this._contrast_center = value;
|
||||
|
||||
this.set_uniform_value('contrast_center', parseFloat(this._contrast_center - 1e-6));
|
||||
}
|
||||
}
|
||||
|
||||
get saturation_multiplicator() {
|
||||
return this._saturation_multiplicator;
|
||||
}
|
||||
|
||||
set saturation_multiplicator(value) {
|
||||
if (this._saturation_multiplicator !== value) {
|
||||
this._saturation_multiplicator = value;
|
||||
|
||||
let saturation_mul = 600.;
|
||||
if (value < 1.995)
|
||||
saturation_mul = 3. * (1. / (1. - (value / 2.) ** 2) - 1.);
|
||||
this.set_uniform_value('saturation_multiplicator', parseFloat(saturation_mul - 1e-6));
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user