projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
output: Make spv-writer code understand output_item.
[pspp]
/
src
/
output
/
page-setup-item.c
diff --git
a/src/output/page-setup-item.c
b/src/output/page-setup-item.c
index b4f8e4c4caead1e887c2bf891f30e4dcf2a04bd7..7be1c2c43b66eeb36ec018f3aea12ff8938b588b 100644
(file)
--- a/
src/output/page-setup-item.c
+++ b/
src/output/page-setup-item.c
@@
-25,6
+25,15
@@
#include "gl/xalloc.h"
#include "gl/xalloc.h"
+bool
+page_paragraph_equals (const struct page_paragraph *a,
+ const struct page_paragraph *b)
+{
+ return (!a || !b ? a == b
+ : !a->markup || !b->markup ? a->markup == b->markup
+ : !strcmp (a->markup, b->markup) && a->halign == b->halign);
+}
+
void
page_heading_copy (struct page_heading *dst, const struct page_heading *src)
{
void
page_heading_copy (struct page_heading *dst, const struct page_heading *src)
{
@@
-48,6
+57,23
@@
page_heading_uninit (struct page_heading *ph)
free (ph->paragraphs);
}
free (ph->paragraphs);
}
+bool
+page_heading_equals (const struct page_heading *a,
+ const struct page_heading *b)
+{
+ if (!a || !b)
+ return a == b;
+
+ if (a->n != b->n)
+ return false;
+
+ for (size_t i = 0; i < a->n; i++)
+ if (!page_paragraph_equals (&a->paragraphs[i], &b->paragraphs[i]))
+ return false;
+
+ return true;
+}
+
struct page_setup *
page_setup_clone (const struct page_setup *old)
{
struct page_setup *
page_setup_clone (const struct page_setup *old)
{
@@
-76,8
+102,10
@@
struct page_setup_item *
page_setup_item_create (const struct page_setup *ps)
{
struct page_setup_item *item = xmalloc (sizeof *item);
page_setup_item_create (const struct page_setup *ps)
{
struct page_setup_item *item = xmalloc (sizeof *item);
- output_item_init (&item->output_item, &page_setup_item_class);
- item->page_setup = page_setup_clone (ps);
+ *item = (struct page_setup_item) {
+ .output_item = OUTPUT_ITEM_INITIALIZER (&page_setup_item_class),
+ .page_setup = page_setup_clone (ps),
+ };
return item;
}
return item;
}
@@
-89,6
+117,13
@@
page_setup_item_submit (struct page_setup_item *item)
output_submit (&item->output_item);
}
output_submit (&item->output_item);
}
+static const char *
+page_setup_item_get_label (const struct output_item *output_item UNUSED)
+{
+ /* Not marked for translation: user should never see it. */
+ return "Page Setup";
+}
+
static void
page_setup_item_destroy (struct output_item *output_item)
{
static void
page_setup_item_destroy (struct output_item *output_item)
{
@@
-99,6
+134,6
@@
page_setup_item_destroy (struct output_item *output_item)
const struct output_item_class page_setup_item_class =
{
const struct output_item_class page_setup_item_class =
{
-
"page_setup"
,
+
page_setup_item_get_label
,
page_setup_item_destroy,
};
page_setup_item_destroy,
};