Skip to content

Commit

Permalink
Working hotkeys.
Browse files Browse the repository at this point in the history
  • Loading branch information
FiniteSingularity committed Dec 16, 2023
1 parent 35d9bf5 commit 9e9366d
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 10 deletions.
6 changes: 4 additions & 2 deletions data/locale/de-DE.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
CompositeBlurFilter="Zusammengesetzter Weichzeichner"
CompositeBlurFilter.Enable="Aktivieren"
CompositeBlurFilter.Disable="Deaktivieren"
CompositeBlurFilter.Channel.Alpha="Alpha"
CompositeBlurFilter.Channel.Red="Rot"
CompositeBlurFilter.Channel.Green="Grün"
Expand Down Expand Up @@ -34,8 +36,8 @@ CompositeBlurFilter.Pixelate.Hexagonal="Hexagonal"
CompositeBlurFilter.Pixelate.Triakis="Triakis"
CompositeBlurFilter.Pixelate.Circle="Kreis"
CompositeBlurFilter.Pixelate.Triangle="Dreieck"
CompositeBlurFilter.Pixelate.Center_X="x"
CompositeBlurFilter.Pixelate.Center_Y="y"
CompositeBlurFilter.Pixelate.Center_X="Origin x"
CompositeBlurFilter.Pixelate.Center_Y="Origin y"
CompositeBlurFilter.Pixelate.Rotation="Rotation"
CompositeBlurFilter.DualKawase.Passes="Zweifach-Kawase Durchgänge"
CompositeBlurFilter.EffectMask="Effekt-Maske"
Expand Down
3 changes: 2 additions & 1 deletion data/locale/en-US.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
CompositeBlurFilter="Composite Blur"
CompositeBlurFilter.Enable="Enable"
CompositeBlurFilter.Disable="Disable"
CompositeBlurFilter.Channel.Alpha="Alpha"
CompositeBlurFilter.Channel.Red="Red"
CompositeBlurFilter.Channel.Green="Green"
Expand Down Expand Up @@ -29,7 +31,6 @@ CompositeBlurFilter.Type.TiltShift="Tilt-Shift"
CompositeBlurFilter.PixelateType="Pixelate Type"
CompositeBlurFilter.Pixelate.PixelSize="Pixel Size"
CompositeBlurFilter.Pixelate.Smoothing="Smoothing"
CompositeBlurFilter.Pixelate.Origin="Origin"
CompositeBlurFilter.Pixelate.Origin_X="Origin x"
CompositeBlurFilter.Pixelate.Origin_Y="Origin y"
CompositeBlurFilter.Pixelate.Rotation="Rotation"
Expand Down
6 changes: 4 additions & 2 deletions data/locale/es-ES.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
CompositeBlurFilter="Desenfoque compuesto"
CompositeBlurFilter.Enable="Activar"
CompositeBlurFilter.Disable="Desactivar"
CompositeBlurFilter.Channel.Alpha="Alfa"
CompositeBlurFilter.Channel.Red="Rojo"
CompositeBlurFilter.Channel.Green="Verde"
Expand Down Expand Up @@ -34,8 +36,8 @@ CompositeBlurFilter.Pixelate.Hexagonal="Hexagonal"
CompositeBlurFilter.Pixelate.Triakis="Triakis"
CompositeBlurFilter.Pixelate.Circle="Círculo"
CompositeBlurFilter.Pixelate.Triangle="Triángulo"
CompositeBlurFilter.Pixelate.Center_X="x"
CompositeBlurFilter.Pixelate.Center_Y="y"
CompositeBlurFilter.Pixelate.Center_X="Origin x"
CompositeBlurFilter.Pixelate.Center_Y="Origin y"
CompositeBlurFilter.Pixelate.Rotation="Rotation"
CompositeBlurFilter.DualKawase.Passes="Radio de desenfoque"
CompositeBlurFilter.EffectMask="Máscara de efecto"
Expand Down
6 changes: 4 additions & 2 deletions data/locale/fi-FI.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
CompositeBlurFilter="Komposiittisumennus"
CompositeBlurFilter.Enable="Aktivoida"
CompositeBlurFilter.Disable="Poista käytöstä"
CompositeBlurFilter.Channel.Alpha="Alpha"
CompositeBlurFilter.Channel.Red="Punainen"
CompositeBlurFilter.Channel.Green="Vihreä"
Expand Down Expand Up @@ -34,8 +36,8 @@ CompositeBlurFilter.Pixelate.Hexagonal="Kuusikulmainen"
CompositeBlurFilter.Pixelate.Triakis="Triakis"
CompositeBlurFilter.Pixelate.Circle="Ympyrä"
CompositeBlurFilter.Pixelate.Triangle="Kolmio"
CompositeBlurFilter.Pixelate.Center_X="x"
CompositeBlurFilter.Pixelate.Center_Y="y"
CompositeBlurFilter.Pixelate.Center_X="Origin x"
CompositeBlurFilter.Pixelate.Center_Y="Origin y"
CompositeBlurFilter.Pixelate.Rotation="Rotation"
CompositeBlurFilter.DualKawase.Passes="Sumennus-säde"
CompositeBlurFilter.EffectMask="Efektimaski"
Expand Down
102 changes: 99 additions & 3 deletions src/obs-composite-blur-filter.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "obs-composite-blur-filter.h"
#include <util/dstr.h>

#include "blur/gaussian.h"
#include "blur/box.h"
Expand All @@ -23,7 +24,8 @@ struct obs_source_info obs_composite_blur = {
static const char *composite_blur_name(void *unused)
{
UNUSED_PARAMETER(unused);
return obs_module_text("CompositeBlurFilter");
return "Composite Blur";
//return obs_module_text("CompositeBlurFilter");
}

static void composite_blur_defaults(obs_data_t *settings)
Expand Down Expand Up @@ -65,7 +67,12 @@ static void *composite_blur_create(obs_data_t *settings, obs_source_t *source)
{
composite_blur_filter_data_t *filter =
bzalloc(sizeof(composite_blur_filter_data_t));
dstr_init_copy(&filter->filter_name, "");

filter->context = source;
signal_handler_t *sh = obs_source_get_signal_handler(filter->context);
signal_handler_connect_ref(sh, "rename", composite_blur_rename, filter);
filter->hotkey = OBS_INVALID_HOTKEY_PAIR_ID;
filter->radius = 0.0f;
filter->radius_last = -1.0f;
filter->angle = 0.0f;
Expand Down Expand Up @@ -162,6 +169,10 @@ static void composite_blur_destroy(void *data)
{
composite_blur_filter_data_t *filter = data;

signal_handler_t *sh = obs_source_get_signal_handler(filter->context);
signal_handler_disconnect(sh, "rename", composite_blur_rename, filter);

dstr_free(&filter->filter_name);
obs_enter_graphics();
if (filter->effect) {
gs_effect_destroy(filter->effect);
Expand Down Expand Up @@ -222,6 +233,10 @@ static void composite_blur_destroy(void *data)
obs_weak_source_release(filter->mask_source_source);
}

if (filter->hotkey != OBS_INVALID_HOTKEY_PAIR_ID) {
obs_hotkey_pair_unregister(filter->hotkey);
}

da_free(filter->offset);
da_free(filter->kernel);

Expand All @@ -241,10 +256,33 @@ static uint32_t composite_blur_height(void *data)
return filter->height;
}

static void composite_blur_rename(void *data, calldata_t *call_data)
{
composite_blur_filter_data_t *filter = data;
const char *new_name = calldata_string(call_data, "new_name");

dstr_copy(&filter->filter_name, new_name);
struct dstr enable;
struct dstr disable;

dstr_init_copy(&enable, obs_module_text("CompositeBlurFilter.Enable"));
dstr_init_copy(&disable,
obs_module_text("CompositeBlurFilter.Disable"));
dstr_cat(&enable, " ");
dstr_cat(&enable, new_name);
dstr_cat(&disable, " ");
dstr_cat(&disable, new_name);
obs_hotkey_pair_set_descriptions(filter->hotkey, enable.array,
disable.array);
dstr_free(&enable);
dstr_free(&disable);
}

static void composite_blur_update(void *data, obs_data_t *settings)
{
struct composite_blur_filter_data *filter = data;
double v = (float)obs_data_get_double(settings, "pixelate_origin_x");

if (filter->width > 0 &&
(float)obs_data_get_double(settings, "pixelate_origin_x") < -1.e8) {
double width = (double)obs_source_get_width(filter->context);
Expand Down Expand Up @@ -1042,8 +1080,6 @@ static obs_properties_t *composite_blur_properties(void *data)
obs_module_text("CompositeBlurFilter.Pixelate.Smoothing"), 0.0,
100.0, 0.1);

obs_properties_t *pixelate_origin_group = obs_properties_create();

obs_properties_add_float_slider(
props, "pixelate_origin_x",
obs_module_text("CompositeBlurFilter.Pixelate.Origin_X"),
Expand Down Expand Up @@ -1629,6 +1665,37 @@ static bool settings_blur_tilt_shift(obs_properties_t *props)
return true;
}

bool composite_blur_enable_hotkey(void *data, obs_hotkey_pair_id id,
obs_hotkey_t *hotkey, bool pressed)
{
UNUSED_PARAMETER(id);
UNUSED_PARAMETER(hotkey);
composite_blur_filter_data_t *filter = data;
if (!pressed)
return false;

if (obs_source_enabled(filter->context))
return false;
obs_source_set_enabled(filter->context, true);

return true;
}

bool composite_blur_disable_hotkey(void *data, obs_hotkey_pair_id id,
obs_hotkey_t *hotkey, bool pressed)
{
UNUSED_PARAMETER(id);
UNUSED_PARAMETER(hotkey);
composite_blur_filter_data_t *filter = data;
if (!pressed)
return false;
if (!obs_source_enabled(filter->context))
return false;
obs_source_set_enabled(filter->context, false);

return true;
}

static void composite_blur_video_tick(void *data, float seconds)
{
UNUSED_PARAMETER(seconds);
Expand All @@ -1637,6 +1704,35 @@ static void composite_blur_video_tick(void *data, float seconds)
if (!target) {
return;
}
if (filter->hotkey == OBS_INVALID_HOTKEY_PAIR_ID) {
obs_source_t *parent = obs_filter_get_parent(filter->context);
if (parent) {
const char *filter_name =
obs_source_get_name(filter->context);
struct dstr enable;
struct dstr disable;

dstr_init_copy(
&enable,
obs_module_text("CompositeBlurFilter.Enable"));
dstr_init_copy(
&disable,
obs_module_text("CompositeBlurFilter.Disable"));
dstr_cat(&enable, " ");
dstr_cat(&enable, filter_name);
dstr_cat(&disable, " ");
dstr_cat(&disable, filter_name);

filter->hotkey = obs_hotkey_pair_register_source(
parent, "CompositeBlur.Enable", enable.array,
"CompositeBlur.Disable", disable.array,
composite_blur_enable_hotkey,
composite_blur_disable_hotkey, filter, filter);
dstr_free(&enable);
dstr_free(&disable);
}
}

filter->width = (uint32_t)obs_source_get_base_width(target);
filter->height = (uint32_t)obs_source_get_base_height(target);
filter->uv_size.x = (float)filter->width;
Expand Down
4 changes: 4 additions & 0 deletions src/obs-composite-blur-filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ typedef struct composite_blur_filter_data composite_blur_filter_data_t;

struct composite_blur_filter_data {
obs_source_t *context;
struct dstr filter_name;

// Effects
gs_effect_t *effect;
Expand All @@ -106,6 +107,8 @@ struct composite_blur_filter_data {
// Renderer for composite render step
gs_texrender_t *composite_render;

obs_hotkey_pair_id hotkey;

bool rendering;
bool reload;
bool rendered;
Expand Down Expand Up @@ -247,6 +250,7 @@ static void composite_blur_defaults(obs_data_t *settings);
static void composite_blur_destroy(void *data);
static uint32_t composite_blur_width(void *data);
static uint32_t composite_blur_height(void *data);
static void composite_blur_rename(void *data, calldata_t *call_data);
static void composite_blur_update(void *data, obs_data_t *settings);
static void composite_blur_video_render(void *data, gs_effect_t *effect);
static void composite_blur_video_tick(void *data, float seconds);
Expand Down

0 comments on commit 9e9366d

Please sign in to comment.