diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-10-12 04:34:17 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-10-12 05:13:38 +0300 |
commit | e0c05a1e6ab82b365146b5149cec1dfd89b1cd2f (patch) | |
tree | b833639dff53faaf3738b28450df7b1e769d00ca | |
parent | e302105981ce8d75c0a0bef4ed3935dc916b38a4 (diff) |
Support applying scale for font objects
-rw-r--r-- | source/blender/editors/object/object_transform.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 340b662c0ef..ac1f13ee59c 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -382,7 +382,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, bool apply_l /* first check if we can execute */ CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { - if (ELEM(ob->type, OB_MESH, OB_ARMATURE, OB_LATTICE, OB_MBALL, OB_CURVE, OB_SURF)) { + if (ELEM(ob->type, OB_MESH, OB_ARMATURE, OB_LATTICE, OB_MBALL, OB_CURVE, OB_SURF, OB_FONT)) { ID *obdata = ob->data; if (ID_REAL_USERS(obdata) > 1) { BKE_reportf(reports, RPT_ERROR, @@ -418,6 +418,15 @@ static int apply_objects_internal(bContext *C, ReportList *reports, bool apply_l changed = false; } } + + if (ob->type == OB_FONT) { + if (apply_rot || apply_loc) { + BKE_reportf(reports, RPT_ERROR, + "Font's can only have scale applied: \"%s\"", + ob->id.name + 2); + changed = false; + } + } } CTX_DATA_END; @@ -496,6 +505,22 @@ static int apply_objects_internal(bContext *C, ReportList *reports, bool apply_l scale = mat3_to_scale(rsmat); BKE_curve_transform_ex(cu, mat, true, scale); } + else if (ob->type == OB_FONT) { + Curve *cu = ob->data; + int i; + + scale = mat3_to_scale(rsmat); + + for (i = 0; i < cu->totbox; i++) { + TextBox *tb = &cu->tb[i]; + tb->x *= scale; + tb->y *= scale; + tb->w *= scale; + tb->h *= scale; + } + + cu->fsize *= scale; + } else if (ob->type == OB_CAMERA) { MovieClip *clip = BKE_object_movieclip_get(scene, ob, false); |