Mercurial > octave
changeset 29938:4b25d83d152d
Put title of plot into "Title" property of generated PDFs (bug #60992)
* gl2ps-print.cc (get_title): New function to call get_title () on a figure
graphics object.
* gl2ps-print.cc (gl2ps_renderer::draw): New variable myhandle to hold
"__myhandle__" property value. Call get_title() to get title for plot.
If empty, use generic "Octave plot". Call gl2psBeginPage() with first
argument being desired plot title.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 03 Aug 2021 13:11:49 -0700 |
parents | da7210e30f3e |
children | 00c69fbf1942 |
files | libinterp/corefcn/gl2ps-print.cc |
diffstat | 1 files changed, 31 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/gl2ps-print.cc Tue Aug 03 12:34:52 2021 -0400 +++ b/libinterp/corefcn/gl2ps-print.cc Tue Aug 03 13:11:49 2021 -0700 @@ -322,6 +322,29 @@ return retval; } + static std::string + get_title (const graphics_handle& h) + { + std::string retval; + + gh_manager& gh_mgr = __get_gh_manager__ ("gl2ps_renderer::get_title"); + + graphics_object go = gh_mgr.get_object (h); + + if (! go.valid_object ()) + return retval; + + if (go.isa ("figure")) + { + figure::properties& fp + = reinterpret_cast<figure::properties&> (go.get_properties ()); + + retval = fp.get_title (); + } + + return retval; + } + void gl2ps_renderer::draw (const graphics_object& go, const std::string& print_cmd) { @@ -358,12 +381,18 @@ if (m_term.find ("notxt") != std::string::npos) gl2ps_text = GL2PS_NO_TEXT; + // Find Title for plot + const graphics_handle& myhandle = go.get ("__myhandle__"); + std::string plot_title = get_title (myhandle); + if (plot_title.empty ()) + plot_title = "Octave plot"; + // Default sort order optimizes for 3D plots GLint gl2ps_sort = GL2PS_BSP_SORT; // FIXME: gl2ps does not provide a way to change the sorting algorithm // on a viewport basis, we thus disable sorting only if all axes are 2D - if (has_2D_axes (go.get ("__myhandle__"))) + if (has_2D_axes (myhandle)) gl2ps_sort = GL2PS_NO_SORT; // Use a temporary file in case an overflow happens @@ -431,7 +460,7 @@ set_device_pixel_ratio (fprop.get___device_pixel_ratio__ ()); // GL2PS_SILENT was removed to allow gl2ps to print errors on stderr - GLint ret = gl2psBeginPage ("gl2ps_renderer figure", "Octave", + GLint ret = gl2psBeginPage (plot_title.c_str (), "Octave", nullptr, gl2ps_term, gl2ps_sort, (GL2PS_BEST_ROOT | gl2ps_text