🔧 Use GTK for color conversion

This commit is contained in:
Simon Schneegans
2025-03-27 20:07:01 +01:00
parent e292c822d9
commit 173d6d1975
2 changed files with 20 additions and 46 deletions
+11 -7
View File
@@ -22,6 +22,10 @@ import * as utils from '../utils.js';
// only uses the static metadata of the effect.
const ShaderFactory = await utils.importInShellOnly('./ShaderFactory.js');
// We import Gtk for the color preview in the preferences dialog. This is only available
// and required in the preferences process.
const Gtk = await utils.importInPrefsOnly('gi://Gtk');
const _ = await utils.importGettext();
//////////////////////////////////////////////////////////////////////////////////////////
@@ -106,15 +110,15 @@ export default class Effect {
dialog.getBuilder()
.get_object('aura-glow-hue-preview')
.set_draw_func((area, cairo) => {
const hueScale = dialog.getBuilder().get_object('aura-glow-start-hue-slider');
const satScale = dialog.getBuilder().get_object('aura-glow-saturation-slider');
const color = utils.hsvToRgb(hueScale.get_value(), satScale.get_value(), 1);
const height = area.get_allocated_height();
const width = area.get_allocated_width();
cairo.setSourceRGB(color.r, color.g, color.b);
const hueScale = dialog.getBuilder().get_object('aura-glow-start-hue-slider');
const satScale = dialog.getBuilder().get_object('aura-glow-saturation-slider');
const [r, g, b] = Gtk.hsv_to_rgb(hueScale.get_value(), satScale.get_value(), 1);
const height = area.get_allocated_height();
const width = area.get_allocated_width();
cairo.setSourceRGB(r, g, b);
cairo.arc(width / 2, height / 2, width / 2, 0.0, 2 * Math.PI);
cairo.fill();
});
});
function redrawHuePreview() {
dialog.getBuilder().get_object('aura-glow-hue-preview').queue_draw();