From 12db65c72cf7ee58f273889b97219f03552ba802 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sun, 20 May 2007 09:24:17 +0000 Subject: [PATCH] Some code adjustments. Added functions for RptReport properties. git-svn-id: svn+ssh://saetta.homelinux.org/svn/libreptool/trunk@18 3191ed1d-3fce-41bb-ab4a-0cebc0943b59 --- ChangeLog | 23 +++ configure.ac | 2 +- libreptool.pc.in | 4 +- src/rptreport.c | 473 ++++++++++++++++++++++++++++++++++++++++++++--- src/rptreport.h | 26 +++ 5 files changed, 499 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb6cd24..f579af5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2007-05-20 Andrea Zagli + + * src/rptreport.h: + * src/rptreport.c: added functions rpt_report_database_get_provider(), + rpt_report_database_get_connection_string(), + rpt_report_database_get_sql() + + +2007-05-12 Andrea Zagli + + * libreptool.pc.in: libgda missing + * src/rptreport.h: + * src/rptreport.c: added rpt_report_get_page_size(), + rpt_report_get_page_margins(), rpt_report_get_section_height(), + rpt_report_get_report_header_new_page_after(), + rpt_report_get_report_footer_new_page_before(), + rpt_report_get_page_header_first_page(), + rpt_report_get_page_header_last_page(), + rpt_report_get_page_footer_first_page(), + rpt_report_get_page_footer_last_page(), rpt_report_section_get_objects(), + rpt_report_body_get_new_page_after(), rpt_report_body_set_new_page_after(), + rpt_report_section_remove() + 2007-05-10 Andrea Zagli * src/rptprint.c: some code adjustments diff --git a/configure.ac b/configure.ac index 0eaf68a..71bf109 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([libreptool], [0.0.4], [azagli@inwind.it]) +AC_INIT([libreptool], [0.0.5], [azagli@inwind.it]) AC_CONFIG_SRCDIR([src/rptprint.c]) AC_CONFIG_HEADER([config.h]) diff --git a/libreptool.pc.in b/libreptool.pc.in index 9c36abc..3ca2c28 100644 --- a/libreptool.pc.in +++ b/libreptool.pc.in @@ -4,9 +4,9 @@ libdir=@libdir@ includedir=@includedir@ Name: @PACKAGE_NAME@ -Description: Library to manage Reptool files +Description: Library to manage RepTool files Version: @PACKAGE_VERSION@ -Requires: glib-2.0 gobject-2.0 libxml-2.0 +Requires: glib-2.0 gobject-2.0 libxml-2.0 libgda Libs: -L${libdir} -lreptool Cflags: -I${includedir} diff --git a/src/rptreport.c b/src/rptreport.c index 8951a23..868345e 100644 --- a/src/rptreport.c +++ b/src/rptreport.c @@ -117,9 +117,11 @@ static void rpt_report_xml_parse_section (RptReport *rpt_report, xmlNode *xnode, static RptObject *rpt_report_get_object_from_name_in_list (GList *list, const gchar *name); -static RptReportSection rpt_report_get_section_object (RptReport *rpt_report, RptObject *rpt_object); +static RptReportSection rpt_report_object_get_section (RptReport *rpt_report, RptObject *rpt_object); static gboolean rpt_report_object_is_in_section (RptReport *rpt_report, RptObject *rpt_object, RptReportSection section); -static xmlNode *rpt_report_get_xml_section (RptReport *rpt_report , RptReportSection section); + +static void rpt_report_section_create (RptReport *rpt_report, RptReportSection section); +static xmlNode *rpt_report_section_get_xml (RptReport *rpt_report, RptReportSection section); static xmlNode *rpt_report_rptprint_new_page (RptReport *rpt_report, xmlNode *xroot); @@ -199,8 +201,8 @@ rpt_report_class_init (RptReportClass *klass) * @data_model: a #GdaDataModel; or NULL if there's no database source. * @row: the current @data_model's row; -1 if @data_model is NULL. * - * The signal is emitted each time there's into text's source - * attribute a field that doesn't exists. + * The signal is emitted each time there's into text's attribute source + * a field that doesn't exists. */ klass->field_request_signal_id = g_signal_new ("field-request", G_TYPE_FROM_CLASS (object_class), @@ -413,8 +415,7 @@ RptReport xpresult = xmlXPathEvalExpression ((const xmlChar *)"child::report-header", xpcontext); if (!xmlXPathNodeSetIsEmpty (xpresult->nodesetval) && xpresult->nodesetval->nodeNr == 1) { - priv->report_header = (ReportHeader *)g_malloc0 (sizeof (ReportHeader)); - priv->report_header->objects = NULL; + rpt_report_section_create (rpt_report, RPTREPORT_SECTION_REPORT_HEADER); rpt_report_xml_parse_section (rpt_report, xpresult->nodesetval->nodeTab[0], RPTREPORT_SECTION_REPORT_HEADER); } @@ -423,8 +424,7 @@ RptReport xpresult = xmlXPathEvalExpression ((const xmlChar *)"child::report-footer", xpcontext); if (!xmlXPathNodeSetIsEmpty (xpresult->nodesetval) && xpresult->nodesetval->nodeNr == 1) { - priv->report_footer = (ReportFooter *)g_malloc0 (sizeof (ReportFooter)); - priv->report_footer->objects = NULL; + rpt_report_section_create (rpt_report, RPTREPORT_SECTION_REPORT_FOOTER); rpt_report_xml_parse_section (rpt_report, xpresult->nodesetval->nodeTab[0], RPTREPORT_SECTION_REPORT_FOOTER); } @@ -433,8 +433,7 @@ RptReport xpresult = xmlXPathEvalExpression ((const xmlChar *)"child::page-header", xpcontext); if (!xmlXPathNodeSetIsEmpty (xpresult->nodesetval) && xpresult->nodesetval->nodeNr == 1) { - priv->page_header = (PageHeader *)g_malloc0 (sizeof (PageHeader)); - priv->page_header->objects = NULL; + rpt_report_section_create (rpt_report, RPTREPORT_SECTION_PAGE_HEADER); rpt_report_xml_parse_section (rpt_report, xpresult->nodesetval->nodeTab[0], RPTREPORT_SECTION_PAGE_HEADER); } @@ -443,8 +442,7 @@ RptReport xpresult = xmlXPathEvalExpression ((const xmlChar *)"child::page-footer", xpcontext); if (!xmlXPathNodeSetIsEmpty (xpresult->nodesetval) && xpresult->nodesetval->nodeNr == 1) { - priv->page_footer = (PageFooter *)g_malloc0 (sizeof (PageFooter)); - priv->page_footer->objects = NULL; + rpt_report_section_create (rpt_report, RPTREPORT_SECTION_PAGE_FOOTER); rpt_report_xml_parse_section (rpt_report, xpresult->nodesetval->nodeTab[0], RPTREPORT_SECTION_PAGE_FOOTER); } @@ -486,6 +484,66 @@ RptReport return rpt_report; } +/** + * rpt_report_database_get_provider: + * @rpt_report: + * + */ +const gchar +*rpt_report_database_get_provider (RptReport *rpt_report) +{ + gchar *ret = NULL; + + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + if (priv->db != NULL) + { + ret = g_strdup (priv->db->provider_id); + } + + return (const gchar *)ret; +} + +/** + * rpt_report_database_get_connection_string: + * @rpt_report: + * + */ +const gchar +*rpt_report_database_get_connection_string (RptReport *rpt_report) +{ + gchar *ret = NULL; + + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + if (priv->db != NULL) + { + ret = g_strdup (priv->db->connection_string); + } + + return (const gchar *)ret; +} + +/** + * rpt_report_database_get_sql: + * @rpt_report: + * + */ +const gchar +*rpt_report_database_get_sql (RptReport *rpt_report) +{ + gchar *ret = NULL; + + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + if (priv->db != NULL) + { + ret = g_strdup (priv->db->sql); + } + + return (const gchar *)ret; +} + /** * rpt_report_set_database: * @rpt_report: an #RptReport object. @@ -526,8 +584,35 @@ rpt_report_set_page_size (RptReport *rpt_report, { RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); - priv->page->size->width = size.width; - priv->page->size->height = size.height; + if (size.width <= 0.0 || + size.height <= 0.0) + { + /* TO DO */ + g_warning ("Page's width and height must be greater than zero."); + } + else + { + priv->page->size->width = size.width; + priv->page->size->height = size.height; + } +} + +/** + * rpt_report_get_page_size: + * @rpt_report: + * + */ +RptSize +*rpt_report_get_page_size (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + RptSize *size = (RptSize *)g_malloc0 (sizeof (RptSize)); + + size->width = priv->page->size->width; + size->height = priv->page->size->height; + + return size; } /** @@ -555,6 +640,82 @@ rpt_report_set_page_margins (RptReport *rpt_report, priv->page->margin_left = left; } +/** + * rpt_report_get_page_margins: + * @rpt_report: + * @top: + * @right: + * @bottom: + * @left: + * + */ +void +rpt_report_get_page_margins (RptReport *rpt_report, + gdouble *top, + gdouble *right, + gdouble *bottom, + gdouble *left) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + *top = priv->page->margin_top; + *right = priv->page->margin_right; + *bottom = priv->page->margin_bottom; + *left = priv->page->margin_left; +} + +/** + * rpt_report_get_section_height: + * @rpt_report: + * @section: + * + */ +gdouble +rpt_report_get_section_height (RptReport *rpt_report, + RptReportSection section) +{ + gdouble ret = -1; + + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + switch (section) + { + case RPTREPORT_SECTION_REPORT_HEADER: + if (priv->report_header != NULL) + { + ret = priv->report_header->height; + } + break; + + case RPTREPORT_SECTION_REPORT_FOOTER: + if (priv->report_footer != NULL) + { + ret = priv->report_footer->height; + } + break; + + case RPTREPORT_SECTION_PAGE_HEADER: + if (priv->page_header != NULL) + { + ret = priv->page_header->height; + } + break; + + case RPTREPORT_SECTION_PAGE_FOOTER: + if (priv->page_footer != NULL) + { + ret = priv->page_footer->height; + } + break; + + case RPTREPORT_SECTION_BODY: + ret = priv->body->height; + break; + } + + return ret; +} + /** * rpt_report_set_section_height: * @rpt_report: an #RptReport object. @@ -570,6 +731,8 @@ rpt_report_set_section_height (RptReport *rpt_report, { RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + rpt_report_section_create (rpt_report, section); + switch (section) { case RPTREPORT_SECTION_REPORT_HEADER: @@ -594,6 +757,123 @@ rpt_report_set_section_height (RptReport *rpt_report, } } +/** + * rpt_report_section_get_objects: + * @rpt_report: + * @section: + * + */ +GList +*rpt_report_section_get_objects (RptReport *rpt_report, + RptReportSection section) +{ + GList *objects = NULL; + + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + switch (section) + { + case RPTREPORT_SECTION_REPORT_HEADER: + if (priv->report_header != NULL) + { + objects = g_list_copy (priv->report_header->objects); + } + break; + + case RPTREPORT_SECTION_REPORT_FOOTER: + if (priv->report_footer != NULL) + { + objects = g_list_copy (priv->report_footer->objects); + } + break; + + case RPTREPORT_SECTION_PAGE_HEADER: + if (priv->page_header != NULL) + { + objects = g_list_copy (priv->page_header->objects); + } + break; + + case RPTREPORT_SECTION_PAGE_FOOTER: + if (priv->page_footer != NULL) + { + objects = g_list_copy (priv->page_footer->objects); + } + break; + + case RPTREPORT_SECTION_BODY: + objects = g_list_copy (priv->body->objects); + break; + } + + return objects; +} + +/** + * rpt_report_section_remove: + * @rpt_report: + * @section: + * + */ +void +rpt_report_section_remove (RptReport *rpt_report, RptReportSection section) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + switch (section) + { + case RPTREPORT_SECTION_REPORT_HEADER: + if (priv->report_header != NULL) + { + g_free (priv->report_header); + priv->report_header = NULL; + } + break; + + case RPTREPORT_SECTION_REPORT_FOOTER: + if (priv->report_footer != NULL) + { + g_free (priv->report_footer); + priv->report_footer = NULL; + } + break; + + case RPTREPORT_SECTION_PAGE_HEADER: + if (priv->page_header != NULL) + { + g_free (priv->page_header); + priv->page_header = NULL; + } + break; + + case RPTREPORT_SECTION_PAGE_FOOTER: + if (priv->page_footer != NULL) + { + g_free (priv->page_footer); + priv->page_footer = NULL; + } + break; + + case RPTREPORT_SECTION_BODY: + /* TO DO */ + g_warning ("Body cannot be removed."); + break; + } +} + +/** + * rpt_report_get_report_header_new_page_after: + * @rpt_report: + * + */ +gboolean +rpt_report_get_report_header_new_page_after (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->report_header == NULL ? FALSE : priv->report_header->new_page_after); +} + /** * rpt_report_set_report_header_new_page_after: * @rpt_report: an #RptReport object. @@ -611,6 +891,19 @@ rpt_report_set_report_header_new_page_after (RptReport *rpt_report, gboolean new } } +/** + * rpt_report_get_report_footer_new_page_before: + * @rpt_report: + * + */ +gboolean +rpt_report_get_report_footer_new_page_before (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->report_footer == NULL ? FALSE : priv->report_footer->new_page_before); +} + /** * rpt_report_set_report_footer_new_page_before: * @rpt_report: an #RptReport object. @@ -628,6 +921,32 @@ rpt_report_set_report_footer_new_page_before (RptReport *rpt_report, gboolean ne } } +/** + * rpt_report_get_page_header_first_page: + * @rpt_report: an #RptReport object. + * + */ +gboolean +rpt_report_get_page_header_first_page (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->page_header == NULL ? FALSE : priv->page_header->first_page); +} + +/** + * rpt_report_get_page_header_last_page: + * @rpt_report: an #RptReport object. + * + */ +gboolean +rpt_report_get_page_header_last_page (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->page_header == NULL ? FALSE : priv->page_header->last_page); +} + /** * rpt_report_set_page_header_first_last_page: * @rpt_report: an #RptReport object. @@ -647,6 +966,32 @@ rpt_report_set_page_header_first_last_page (RptReport *rpt_report, gboolean firs } } +/** + * rpt_report_get_page_footer_first_page: + * @rpt_report: an #RptReport object. + * + */ +gboolean +rpt_report_get_page_footer_first_page (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->page_footer ? FALSE : priv->page_footer->first_page); +} + +/** + * rpt_report_get_page_footer_last_page: + * @rpt_report: an #RptReport object. + * + */ +gboolean +rpt_report_get_page_footer_last_page (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return (priv->page_footer == NULL ? FALSE : priv->page_footer->last_page); +} + /** * rpt_report_set_page_footer_first_last_page: * @rpt_report: an #RptReport object. @@ -666,6 +1011,33 @@ rpt_report_set_page_footer_first_last_page (RptReport *rpt_report, gboolean firs } } +/** + * rpt_report_body_get_new_page_after: + * @rpt_report: + * + */ +gboolean +rpt_report_body_get_new_page_after (RptReport *rpt_report) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + return priv->body->new_page_after; +} + +/** + * rpt_report_body_set_new_page_after: + * @rpt_report: + * @new_page_after: + * + */ +void +rpt_report_body_set_new_page_after (RptReport *rpt_report, gboolean new_page_after) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + priv->body->new_page_after = new_page_after; +} + /** * rpt_report_get_xml: * @rpt_report: an #RptReport object. @@ -681,8 +1053,6 @@ xmlDoc RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); - /* TO DO */ - xdoc = xmlNewDoc ("1.0"); xroot = xmlNewNode (NULL, "reptool"); @@ -731,26 +1101,26 @@ xmlDoc if (priv->report_header != NULL) { - xnode = rpt_report_get_xml_section (rpt_report, RPTREPORT_SECTION_REPORT_HEADER); + xnode = rpt_report_section_get_xml (rpt_report, RPTREPORT_SECTION_REPORT_HEADER); xmlAddChild (xreport, xnode); } if (priv->page_header != NULL) { - xnode = rpt_report_get_xml_section (rpt_report, RPTREPORT_SECTION_PAGE_HEADER); + xnode = rpt_report_section_get_xml (rpt_report, RPTREPORT_SECTION_PAGE_HEADER); xmlAddChild (xreport, xnode); } - xnode = rpt_report_get_xml_section (rpt_report, RPTREPORT_SECTION_BODY); + xnode = rpt_report_section_get_xml (rpt_report, RPTREPORT_SECTION_BODY); xmlAddChild (xreport, xnode); if (priv->report_footer != NULL) { - xnode = rpt_report_get_xml_section (rpt_report, RPTREPORT_SECTION_REPORT_FOOTER); + xnode = rpt_report_section_get_xml (rpt_report, RPTREPORT_SECTION_REPORT_FOOTER); xmlAddChild (xreport, xnode); } if (priv->page_footer != NULL) { - xnode = rpt_report_get_xml_section (rpt_report, RPTREPORT_SECTION_PAGE_FOOTER); + xnode = rpt_report_section_get_xml (rpt_report, RPTREPORT_SECTION_PAGE_FOOTER); xmlAddChild (xreport, xnode); } @@ -984,7 +1354,7 @@ rpt_report_remove_object (RptReport *rpt_report, RptObject *rpt_object) { RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); - RptReportSection section = rpt_report_get_section_object (rpt_report, rpt_object); + RptReportSection section = rpt_report_object_get_section (rpt_report, rpt_object); switch (section) { @@ -1105,14 +1475,14 @@ static RptObject } /** - * rpt_report_get_section_object: + * rpt_report_object_get_section: * @rpt_report: an #RptReport object. * @rpt_object: an #RptObject object. * * Returns: the #RptReportSection in which @rpt_object is contained. */ static RptReportSection -rpt_report_get_section_object (RptReport *rpt_report, RptObject *rpt_object) +rpt_report_object_get_section (RptReport *rpt_report, RptObject *rpt_object) { RptReportSection section = -1; @@ -1142,6 +1512,57 @@ rpt_report_get_section_object (RptReport *rpt_report, RptObject *rpt_object) return section; } +/** + * rpt_report_section_create: + * @rpt_report: + * @section: + * + */ +static void +rpt_report_section_create (RptReport *rpt_report, RptReportSection section) +{ + RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report); + + switch (section) + { + case RPTREPORT_SECTION_REPORT_HEADER: + if (priv->report_header == NULL) + { + priv->report_header = (ReportHeader *)g_malloc0 (sizeof (ReportHeader)); + priv->report_header->objects = NULL; + } + break; + + case RPTREPORT_SECTION_REPORT_FOOTER: + if (priv->report_footer == NULL) + { + priv->report_footer = (ReportFooter *)g_malloc0 (sizeof (ReportFooter)); + priv->report_footer->objects = NULL; + } + break; + + case RPTREPORT_SECTION_PAGE_HEADER: + if (priv->page_header == NULL) + { + priv->page_header = (PageHeader *)g_malloc0 (sizeof (PageHeader)); + priv->page_header->objects = NULL; + } + break; + + case RPTREPORT_SECTION_PAGE_FOOTER: + if (priv->page_footer == NULL) + { + priv->page_footer = (PageFooter *)g_malloc0 (sizeof (PageFooter)); + priv->page_footer->objects = NULL; + } + break; + + case RPTREPORT_SECTION_BODY: + g_warning ("Body cannot be created."); + break; + } +} + /** * rpt_report_object_is_in_section: * @rpt_report: an #RptReport object. @@ -1200,13 +1621,13 @@ rpt_report_object_is_in_section (RptReport *rpt_report, RptObject *rpt_object, R } /** - * rpt_report_get_xml_section: + * rpt_report_section_get_xml: * @rpt_report: an #RptReport object. * @section: * */ static xmlNode -*rpt_report_get_xml_section (RptReport *rpt_report , RptReportSection section) +*rpt_report_section_get_xml (RptReport *rpt_report , RptReportSection section) { xmlNode *xnode = NULL; xmlNode *xnodechild; diff --git a/src/rptreport.h b/src/rptreport.h index 5be4f23..f5636ec 100644 --- a/src/rptreport.h +++ b/src/rptreport.h @@ -70,35 +70,61 @@ RptReport *rpt_report_new (void); RptReport *rpt_report_new_from_xml (xmlDoc *xdoc); RptReport *rpt_report_new_from_file (const gchar *filename); +const gchar *rpt_report_database_get_provider (RptReport *rpt_report); +const gchar *rpt_report_database_get_connection_string (RptReport *rpt_report); +const gchar *rpt_report_database_get_sql (RptReport *rpt_report); void rpt_report_set_database (RptReport *rpt_report, const gchar *provider_id, const gchar *connection_string, const gchar *sql); +RptSize *rpt_report_get_page_size (RptReport *rpt_report); void rpt_report_set_page_size (RptReport *rpt_report, RptSize size); + +void rpt_report_get_page_margins (RptReport *rpt_report, + gdouble *top, + gdouble *right, + gdouble *bottom, + gdouble *left); void rpt_report_set_page_margins (RptReport *rpt_report, gdouble top, gdouble right, gdouble bottom, gdouble left); +gdouble rpt_report_get_section_height (RptReport *rpt_report, + RptReportSection section); void rpt_report_set_section_height (RptReport *rpt_report, RptReportSection section, gdouble height); +GList *rpt_report_section_get_objects (RptReport *rpt_report, + RptReportSection section); +void rpt_report_section_remove (RptReport *rpt_report, RptReportSection section); +gboolean rpt_report_get_report_header_new_page_after (RptReport *rpt_report); void rpt_report_set_report_header_new_page_after (RptReport *rpt_report, gboolean new_page_after); + +gboolean rpt_report_get_report_footer_new_page_before (RptReport *rpt_report); void rpt_report_set_report_footer_new_page_before (RptReport *rpt_report, gboolean new_page_before); +gboolean rpt_report_get_page_header_first_page (RptReport *rpt_report); +gboolean rpt_report_get_page_header_last_page (RptReport *rpt_report); void rpt_report_set_page_header_first_last_page (RptReport *rpt_report, gboolean first_page, gboolean last_page); + +gboolean rpt_report_get_page_footer_first_page (RptReport *rpt_report); +gboolean rpt_report_get_page_footer_last_page (RptReport *rpt_report); void rpt_report_set_page_footer_first_last_page (RptReport *rpt_report, gboolean first_page, gboolean last_page); +gboolean rpt_report_body_get_new_page_after (RptReport *rpt_report); +void rpt_report_body_set_new_page_after (RptReport *rpt_report, gboolean new_page_after); + xmlDoc *rpt_report_get_xml (RptReport *rpt_report); xmlDoc *rpt_report_get_xml_rptprint (RptReport *rpt_report); -- 2.49.0