Mercurial > hg > octave-avbm
changeset 10265:8c583af2cf64
validate text object children of axes objects
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 04 Feb 2010 03:56:28 -0500 |
parents | e58c1711d752 |
children | 82db36545def |
files | src/ChangeLog src/graphics.cc src/graphics.h.in |
diffstat | 3 files changed, 35 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2010-02-04 John W. Eaton <jwe@octave.org> + + * graphics.h.in (gh_manager::lookup (const octave_value&)): + New function. + * graphics.cc (axes::properties::set_text_child): Validate value. + Allow value to be character string or handle of text object. + 2010-02-04 John W. Eaton <jwe@octave.org> * Makefile.am (OCTAVE_LIBS): Include all liboctave library
--- a/src/graphics.cc +++ b/src/graphics.cc @@ -2664,7 +2664,28 @@ const std::string& who, const octave_value& v) { - graphics_handle val = ::reparent (v, "set", who, __myhandle__, false); + graphics_handle val; + + if (v.is_string ()) + { + val = gh_manager::make_graphics_handle ("text", __myhandle__, false); + + xset (val, "string", v); + } + else + { + graphics_object go = gh_manager::get_object (gh_manager::lookup (v)); + + if (go.isa ("text")) + val = ::reparent (v, "set", who, __myhandle__, false); + else + { + std::string cname = v.class_name (); + + error ("set: expecting text graphics object or character string for %s property, found %s", + who.c_str (), cname.c_str ()); + } + } if (! error_state) {
--- a/src/graphics.h.in +++ b/src/graphics.h.in @@ -3871,6 +3871,12 @@ return instance_ok () ? instance->do_lookup (val) : graphics_handle (); } + static graphics_handle lookup (const octave_value& val) + { + return val.is_real_scalar () + ? lookup (val.double_value ()) : graphics_handle (); + } + static graphics_object get_object (const graphics_handle& h) { return instance_ok () ? instance->do_get_object (h) : graphics_object ();