summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js141
1 files changed, 141 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js
new file mode 100644
index 0000000..c22636d
--- /dev/null
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/luminosity.js
@@ -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));
+ }
+ }
+ }); \ No newline at end of file