libobs: Add ability to set spinbox property suffix

This commit is contained in:
Clayton Groeneveld 2019-04-30 09:10:42 -05:00 committed by jp9000
parent b2e0d93990
commit 8789b3469b
2 changed files with 52 additions and 0 deletions

View File

@ -27,11 +27,13 @@ static inline void *get_property_data(struct obs_property *prop);
struct float_data {
double min, max, step;
enum obs_number_type type;
char *suffix;
};
struct int_data {
int min, max, step;
enum obs_number_type type;
char *suffix;
};
struct list_item {
@ -149,6 +151,16 @@ static inline void group_data_free(struct group_data *data) {
obs_properties_destroy(data->content);
}
static inline void int_data_free(struct int_data *data) {
if (data->suffix)
bfree(data->suffix);
}
static inline void float_data_free(struct int_data *data) {
if (data->suffix)
bfree(data->suffix);
}
struct obs_properties;
struct obs_property {
@ -235,6 +247,10 @@ static void obs_property_destroy(struct obs_property *property)
frame_rate_data_free(get_property_data(property));
else if (property->type == OBS_PROPERTY_GROUP)
group_data_free(get_property_data(property));
else if (property->type == OBS_PROPERTY_INT)
int_data_free(get_property_data(property));
else if (property->type == OBS_PROPERTY_FLOAT)
float_data_free(get_property_data(property));
bfree(property->name);
bfree(property->desc);
@ -855,6 +871,12 @@ enum obs_number_type obs_property_int_type(obs_property_t *p)
return data ? data->type : OBS_NUMBER_SCROLLER;
}
const char *obs_property_int_suffix(obs_property_t *p)
{
struct int_data *data = get_type_data(p, OBS_PROPERTY_INT);
return data ? data->suffix : NULL;
}
double obs_property_float_min(obs_property_t *p)
{
struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
@ -873,6 +895,12 @@ double obs_property_float_step(obs_property_t *p)
return data ? data->step : 0;
}
const char *obs_property_float_suffix(obs_property_t *p)
{
struct int_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
return data ? data->suffix : NULL;
}
enum obs_number_type obs_property_float_type(obs_property_t *p)
{
struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
@ -939,6 +967,26 @@ void obs_property_float_set_limits(obs_property_t *p,
data->step = step;
}
void obs_property_int_set_suffix(obs_property_t *p, const char *suffix)
{
struct int_data *data = get_type_data(p, OBS_PROPERTY_INT);
if (!data)
return;
bfree(data->suffix);
data->suffix = bstrdup(suffix);
}
void obs_property_float_set_suffix(obs_property_t *p, const char *suffix)
{
struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
if (!data)
return;
bfree(data->suffix);
data->suffix = bstrdup(suffix);
}
void obs_property_list_clear(obs_property_t *p)
{
struct list_data *data = get_list_data(p);

View File

@ -286,10 +286,12 @@ EXPORT int obs_property_int_min(obs_property_t *p);
EXPORT int obs_property_int_max(obs_property_t *p);
EXPORT int obs_property_int_step(obs_property_t *p);
EXPORT enum obs_number_type obs_property_int_type(obs_property_t *p);
EXPORT const char * obs_property_int_suffix(obs_property_t *p);
EXPORT double obs_property_float_min(obs_property_t *p);
EXPORT double obs_property_float_max(obs_property_t *p);
EXPORT double obs_property_float_step(obs_property_t *p);
EXPORT enum obs_number_type obs_property_float_type(obs_property_t *p);
EXPORT const char * obs_property_float_suffix(obs_property_t *p);
EXPORT enum obs_text_type obs_property_text_type(obs_property_t *p);
EXPORT enum obs_path_type obs_property_path_type(obs_property_t *p);
EXPORT const char * obs_property_path_filter(obs_property_t *p);
@ -301,6 +303,8 @@ EXPORT void obs_property_int_set_limits(obs_property_t *p,
int min, int max, int step);
EXPORT void obs_property_float_set_limits(obs_property_t *p,
double min, double max, double step);
EXPORT void obs_property_int_set_suffix(obs_property_t *p, const char *suffix);
EXPORT void obs_property_float_set_suffix(obs_property_t *p, const char *suffix);
EXPORT void obs_property_list_clear(obs_property_t *p);