diff --git a/app/pdb/text-layer-cmds.c b/app/pdb/text-layer-cmds.c index 6de8e2a20b..8d796e518c 100644 --- a/app/pdb/text-layer-cmds.c +++ b/app/pdb/text-layer-cmds.c @@ -1440,6 +1440,7 @@ text_layer_get_outline_width_invoker (GimpProcedure *procedure, GimpValueArray *return_vals; GimpTextLayer *layer; gdouble outline_width = 0.0; + GimpUnit *outline_unit = NULL; layer = g_value_get_object (gimp_value_array_index (args, 0)); @@ -1447,6 +1448,7 @@ text_layer_get_outline_width_invoker (GimpProcedure *procedure, { g_object_get (gimp_text_layer_get_text (layer), "outline-width", &outline_width, + "outline-unit", &outline_unit, NULL); } @@ -1454,7 +1456,10 @@ text_layer_get_outline_width_invoker (GimpProcedure *procedure, error ? *error : NULL); if (success) - g_value_set_double (gimp_value_array_index (return_vals, 1), outline_width); + { + g_value_set_double (gimp_value_array_index (return_vals, 1), outline_width); + g_value_set_object (gimp_value_array_index (return_vals, 2), outline_unit); + } return return_vals; } @@ -1470,15 +1475,18 @@ text_layer_set_outline_width_invoker (GimpProcedure *procedure, gboolean success = TRUE; GimpTextLayer *layer; gdouble outline_width; + GimpUnit *outline_unit; layer = g_value_get_object (gimp_value_array_index (args, 0)); outline_width = g_value_get_double (gimp_value_array_index (args, 1)); + outline_unit = g_value_get_object (gimp_value_array_index (args, 2)); if (success) { gimp_text_layer_set (layer, _("Set text layer attribute"), "outline-width", outline_width, + "outline-unit", outline_unit, NULL); } @@ -2941,6 +2949,14 @@ register_text_layer_procs (GimpPDB *pdb) "The text outline width", -G_MAXDOUBLE, G_MAXDOUBLE, 0, GIMP_PARAM_READWRITE)); + gimp_procedure_add_return_value (procedure, + gimp_param_spec_unit ("outline-unit", + "outline unit", + "The unit used for the outline width", + FALSE, + FALSE, + gimp_unit_inch (), + GIMP_PARAM_READWRITE)); gimp_pdb_register_procedure (pdb, procedure); g_object_unref (procedure); @@ -2970,6 +2986,14 @@ register_text_layer_procs (GimpPDB *pdb) "The text outline width", 0.0, 8192.0, 0.0, GIMP_PARAM_READWRITE)); + gimp_procedure_add_argument (procedure, + gimp_param_spec_unit ("outline-unit", + "outline unit", + "The unit to use for the outline width", + TRUE, + FALSE, + gimp_unit_inch (), + GIMP_PARAM_READWRITE)); gimp_pdb_register_procedure (pdb, procedure); g_object_unref (procedure); diff --git a/app/text/gimptext.c b/app/text/gimptext.c index 250b6e0106..f0bc18e6c1 100644 --- a/app/text/gimptext.c +++ b/app/text/gimptext.c @@ -349,6 +349,11 @@ gimp_text_class_init (GimpTextClass *klass) 0.0, 8192.0, 4.0, GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DEFAULTS); + GIMP_CONFIG_PROP_UNIT (object_class, PROP_OUTLINE_UNIT, + "outline-unit", + NULL, NULL, + TRUE, FALSE, gimp_unit_pixel (), + GIMP_PARAM_STATIC_STRINGS); GIMP_CONFIG_PROP_ENUM (object_class, PROP_OUTLINE_DIRECTION, "outline-direction", NULL, NULL, GIMP_TYPE_TEXT_OUTLINE_DIRECTION, @@ -522,6 +527,9 @@ gimp_text_get_property (GObject *object, case PROP_OUTLINE_WIDTH: g_value_set_double (value, text->outline_width); break; + case PROP_OUTLINE_UNIT: + g_value_set_object (value, text->outline_unit); + break; case PROP_OUTLINE_DIRECTION: g_value_set_enum (value, text->outline_direction); break; @@ -682,6 +690,9 @@ gimp_text_set_property (GObject *object, case PROP_OUTLINE_WIDTH: text->outline_width = g_value_get_double (value); break; + case PROP_OUTLINE_UNIT: + text->outline_unit = g_value_get_object (value); + break; case PROP_OUTLINE_DIRECTION: text->outline_direction = g_value_get_enum (value); break; @@ -857,7 +868,7 @@ gimp_text_serialize_property (GimpConfig *config, (GimpContainerSearchFunc) gimp_font_match_by_lookup_name, (gpointer) altered_font_name)); /* in case pango returns a non existant font name */ - if (font == NULL) + if (font == NULL) { font = GIMP_FONT (gimp_font_get_standard ()); font_name = "gimpfont"; diff --git a/app/text/gimptext.h b/app/text/gimptext.h index d7677104cb..816a436c45 100644 --- a/app/text/gimptext.h +++ b/app/text/gimptext.h @@ -52,6 +52,7 @@ struct _GimpText GimpPattern *outline_pattern; GeglColor *outline_foreground; gdouble outline_width; + GimpUnit *outline_unit; GimpTextOutlineDirection outline_direction; GimpCapStyle outline_cap_style; GimpJoinStyle outline_join_style; diff --git a/libgimp/gimptextlayer_pdb.c b/libgimp/gimptextlayer_pdb.c index 2d22deba25..23cf6195eb 100644 --- a/libgimp/gimptextlayer_pdb.c +++ b/libgimp/gimptextlayer_pdb.c @@ -1780,6 +1780,7 @@ gimp_text_layer_set_outline_miter_limit (GimpTextLayer *layer, /** * gimp_text_layer_get_outline_width: * @layer: The text layer. + * @outline_unit: (out) (transfer none): The unit used for the outline width. * * Get the outline width from a text layer. * @@ -1791,7 +1792,8 @@ gimp_text_layer_set_outline_miter_limit (GimpTextLayer *layer, * Since: 3.2 **/ gdouble -gimp_text_layer_get_outline_width (GimpTextLayer *layer) +gimp_text_layer_get_outline_width (GimpTextLayer *layer, + GimpUnit **outline_unit) { GimpValueArray *args; GimpValueArray *return_vals; @@ -1807,7 +1809,10 @@ gimp_text_layer_get_outline_width (GimpTextLayer *layer) gimp_value_array_unref (args); if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS) - outline_width = GIMP_VALUES_GET_DOUBLE (return_vals, 1); + { + outline_width = GIMP_VALUES_GET_DOUBLE (return_vals, 1); + *outline_unit = GIMP_VALUES_GET_UNIT (return_vals, 2); + } gimp_value_array_unref (return_vals); @@ -1818,6 +1823,7 @@ gimp_text_layer_get_outline_width (GimpTextLayer *layer) * gimp_text_layer_set_outline_width: * @layer: The text layer. * @outline_width: The text outline width. + * @outline_unit: The unit to use for the outline width. * * Set the outline width from a text layer. * @@ -1830,7 +1836,8 @@ gimp_text_layer_get_outline_width (GimpTextLayer *layer) **/ gboolean gimp_text_layer_set_outline_width (GimpTextLayer *layer, - gdouble outline_width) + gdouble outline_width, + GimpUnit *outline_unit) { GimpValueArray *args; GimpValueArray *return_vals; @@ -1839,6 +1846,7 @@ gimp_text_layer_set_outline_width (GimpTextLayer *layer, args = gimp_value_array_new_from_types (NULL, GIMP_TYPE_TEXT_LAYER, layer, G_TYPE_DOUBLE, outline_width, + GIMP_TYPE_UNIT, outline_unit, G_TYPE_NONE); return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (), diff --git a/libgimp/gimptextlayer_pdb.h b/libgimp/gimptextlayer_pdb.h index 3d8b8e1811..01789d77da 100644 --- a/libgimp/gimptextlayer_pdb.h +++ b/libgimp/gimptextlayer_pdb.h @@ -105,9 +105,11 @@ gboolean gimp_text_layer_set_outline_join_style (GimpTextLayer gdouble gimp_text_layer_get_outline_miter_limit (GimpTextLayer *layer); gboolean gimp_text_layer_set_outline_miter_limit (GimpTextLayer *layer, gdouble outline_miter_limit); -gdouble gimp_text_layer_get_outline_width (GimpTextLayer *layer); +gdouble gimp_text_layer_get_outline_width (GimpTextLayer *layer, + GimpUnit **outline_unit); gboolean gimp_text_layer_set_outline_width (GimpTextLayer *layer, - gdouble outline_width); + gdouble outline_width, + GimpUnit *outline_unit); gboolean gimp_text_layer_resize (GimpTextLayer *layer, gdouble width, gdouble height); diff --git a/pdb/groups/text_layer.pdb b/pdb/groups/text_layer.pdb index 190348dec6..8690705f88 100644 --- a/pdb/groups/text_layer.pdb +++ b/pdb/groups/text_layer.pdb @@ -1445,7 +1445,9 @@ HELP @outargs = ( { name => 'outline_width', type => 'double', - desc => 'The text outline width' } + desc => 'The text outline width' }, + { name => 'outline_unit', type => 'unit', + desc => 'The unit used for the outline width' } ); %invoke = ( @@ -1453,6 +1455,7 @@ HELP { g_object_get (gimp_text_layer_get_text (layer), "outline-width", &outline_width, + "outline-unit", &outline_unit, NULL); } CODE @@ -1472,7 +1475,9 @@ HELP { name => 'layer', type => 'text_layer', desc => 'The text layer' }, { name => 'outline_width', type => '0.0 <= double <= 8192.0', - desc => 'The text outline width' } + desc => 'The text outline width' }, + { name => 'outline_unit', type => 'unit', allow_pixel => 1, + desc => 'The unit to use for the outline width' } ); %invoke = ( @@ -1481,6 +1486,7 @@ HELP gimp_text_layer_set (layer, _("Set text layer attribute"), "outline-width", outline_width, + "outline-unit", outline_unit, NULL); } CODE