text-freetype2: Move default settings to .get_defaults

obs-websocket's `GetInputDefaultSettings` request uses
obs_get_source_defaults() in order to fetch a source id's default
settings. This moves the default settings to the `.get_defaults`
callback so that our request does not return an empty object.

Does not affect existing functionality
master
tt2468 2021-09-01 13:16:13 -07:00 committed by Jim
parent 33b75a1a78
commit e85c8f32fb
2 changed files with 43 additions and 40 deletions

View File

@ -41,13 +41,14 @@ static struct obs_source_info freetype2_source_info_v1 = {
.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CAP_OBSOLETE |
OBS_SOURCE_CUSTOM_DRAW,
.get_name = ft2_source_get_name,
.create = ft2_source_create_v1,
.create = ft2_source_create,
.destroy = ft2_source_destroy,
.update = ft2_source_update,
.get_width = ft2_source_get_width,
.get_height = ft2_source_get_height,
.video_render = ft2_source_render,
.video_tick = ft2_video_tick,
.get_defaults = ft2_source_defaults_v1,
.get_properties = ft2_source_properties,
.icon_type = OBS_ICON_TYPE_TEXT,
};
@ -62,13 +63,14 @@ static struct obs_source_info freetype2_source_info_v2 = {
#endif
OBS_SOURCE_CUSTOM_DRAW,
.get_name = ft2_source_get_name,
.create = ft2_source_create_v2,
.create = ft2_source_create,
.destroy = ft2_source_destroy,
.update = ft2_source_update,
.get_width = ft2_source_get_width,
.get_height = ft2_source_get_height,
.video_render = ft2_source_render,
.video_tick = ft2_video_tick,
.get_defaults = ft2_source_defaults_v2,
.get_properties = ft2_source_properties,
.missing_files = ft2_missing_files,
.icon_type = OBS_ICON_TYPE_TEXT,
@ -514,52 +516,18 @@ error:
#define DEFAULT_FACE "Sans Serif"
#endif
static void *ft2_source_create(obs_data_t *settings, obs_source_t *source,
int ver)
static void *ft2_source_create(obs_data_t *settings, obs_source_t *source)
{
struct ft2_source *srcdata = bzalloc(sizeof(struct ft2_source));
obs_data_t *font_obj = obs_data_create();
srcdata->src = source;
init_plugin();
const uint16_t font_size = ver == 1 ? 32 : 256;
srcdata->font_size = font_size;
obs_data_set_default_string(font_obj, "face", DEFAULT_FACE);
obs_data_set_default_int(font_obj, "size", font_size);
obs_data_set_default_int(font_obj, "flags", 0);
obs_data_set_default_string(font_obj, "style", "");
obs_data_set_default_obj(settings, "font", font_obj);
obs_data_set_default_bool(settings, "antialiasing", true);
obs_data_set_default_bool(settings, "word_wrap", false);
obs_data_set_default_bool(settings, "outline", false);
obs_data_set_default_bool(settings, "drop_shadow", false);
obs_data_set_default_int(settings, "log_lines", 6);
obs_data_set_default_int(settings, "color1", 0xFFFFFFFF);
obs_data_set_default_int(settings, "color2", 0xFFFFFFFF);
ft2_source_update(srcdata, settings);
obs_data_release(font_obj);
obs_source_update(source, NULL);
return srcdata;
}
static void *ft2_source_create_v1(obs_data_t *settings, obs_source_t *source)
{
return ft2_source_create(settings, source, 1);
}
static void *ft2_source_create_v2(obs_data_t *settings, obs_source_t *source)
{
return ft2_source_create(settings, source, 2);
}
static void missing_file_callback(void *src, const char *new_path, void *data)
{
struct ft2_source *s = src;
@ -598,3 +566,36 @@ static obs_missing_files_t *ft2_missing_files(void *data)
return files;
}
static void ft2_source_defaults(obs_data_t *settings, int ver)
{
const uint16_t font_size = ver == 1 ? 32 : 256;
obs_data_t *font_obj = obs_data_create();
obs_data_set_default_string(font_obj, "face", DEFAULT_FACE);
obs_data_set_default_int(font_obj, "size", font_size);
obs_data_set_default_int(font_obj, "flags", 0);
obs_data_set_default_string(font_obj, "style", "");
obs_data_set_default_obj(settings, "font", font_obj);
obs_data_release(font_obj);
obs_data_set_default_bool(settings, "antialiasing", true);
obs_data_set_default_bool(settings, "word_wrap", false);
obs_data_set_default_bool(settings, "outline", false);
obs_data_set_default_bool(settings, "drop_shadow", false);
obs_data_set_default_int(settings, "log_lines", 6);
obs_data_set_default_int(settings, "color1", 0xFFFFFFFF);
obs_data_set_default_int(settings, "color2", 0xFFFFFFFF);
}
static void ft2_source_defaults_v1(obs_data_t *settings)
{
ft2_source_defaults(settings, 1);
}
static void ft2_source_defaults_v2(obs_data_t *settings)
{
ft2_source_defaults(settings, 2);
}

View File

@ -71,8 +71,7 @@ struct ft2_source {
extern FT_Library ft2_lib;
static void *ft2_source_create_v1(obs_data_t *settings, obs_source_t *source);
static void *ft2_source_create_v2(obs_data_t *settings, obs_source_t *source);
static void *ft2_source_create(obs_data_t *settings, obs_source_t *source);
static void ft2_source_destroy(void *data);
static void ft2_source_update(void *data, obs_data_t *settings);
static void ft2_source_render(void *data, gs_effect_t *effect);
@ -84,6 +83,9 @@ void draw_drop_shadow(struct ft2_source *srcdata);
static uint32_t ft2_source_get_width(void *data);
static uint32_t ft2_source_get_height(void *data);
static void ft2_source_defaults_v1(obs_data_t *settings);
static void ft2_source_defaults_v2(obs_data_t *settings);
static obs_properties_t *ft2_source_properties(void *unused);
static const char *ft2_source_get_name(void *unused);