1 /* Fo
2  * fo-table-and-caption.c: 'table-and-caption' formatting object
3  *
4  * Copyright (C) 2001-2006 Sun Microsystems
5  * Copyright (C) 2007-2009 Menteith Consulting Ltd
6  *
7  * See COPYING for the status of this software.
8  */
9 
10 #include "fo/fo-block-fo-private.h"
11 #include "fo/fo-cbpbp-fo-private.h"
12 #include "fo/fo-table-and-caption-private.h"
13 #include "fo/fo-table-caption.h"
14 #include "fo/fo-table.h"
15 #include "property/fo-property-background-color.h"
16 #include "property/fo-property-background-image.h"
17 #include "property/fo-property-border-after-color.h"
18 #include "property/fo-property-border-after-style.h"
19 #include "property/fo-property-border-after-width.h"
20 #include "property/fo-property-border-before-color.h"
21 #include "property/fo-property-border-before-style.h"
22 #include "property/fo-property-border-before-width.h"
23 #include "property/fo-property-border-bottom-color.h"
24 #include "property/fo-property-border-bottom-style.h"
25 #include "property/fo-property-border-bottom-width.h"
26 #include "property/fo-property-border-end-color.h"
27 #include "property/fo-property-border-end-style.h"
28 #include "property/fo-property-border-end-width.h"
29 #include "property/fo-property-border-left-color.h"
30 #include "property/fo-property-border-left-style.h"
31 #include "property/fo-property-border-left-width.h"
32 #include "property/fo-property-border-right-color.h"
33 #include "property/fo-property-border-right-style.h"
34 #include "property/fo-property-border-right-width.h"
35 #include "property/fo-property-border-start-color.h"
36 #include "property/fo-property-border-start-style.h"
37 #include "property/fo-property-border-start-width.h"
38 #include "property/fo-property-border-top-color.h"
39 #include "property/fo-property-border-top-style.h"
40 #include "property/fo-property-border-top-width.h"
41 #include "property/fo-property-break-after.h"
42 #include "property/fo-property-break-before.h"
43 #include "property/fo-property-end-indent.h"
44 #include "property/fo-property-id.h"
45 #include "property/fo-property-keep-together.h"
46 #include "property/fo-property-keep-together-within-column.h"
47 #include "property/fo-property-keep-together-within-line.h"
48 #include "property/fo-property-keep-together-within-page.h"
49 #include "property/fo-property-keep-with-next.h"
50 #include "property/fo-property-keep-with-next-within-column.h"
51 #include "property/fo-property-keep-with-next-within-line.h"
52 #include "property/fo-property-keep-with-next-within-page.h"
53 #include "property/fo-property-keep-with-previous.h"
54 #include "property/fo-property-keep-with-previous-within-column.h"
55 #include "property/fo-property-keep-with-previous-within-line.h"
56 #include "property/fo-property-keep-with-previous-within-page.h"
57 #include "property/fo-property-margin-bottom.h"
58 #include "property/fo-property-margin-left.h"
59 #include "property/fo-property-margin-right.h"
60 #include "property/fo-property-margin-top.h"
61 #include "property/fo-property-padding-after.h"
62 #include "property/fo-property-padding-before.h"
63 #include "property/fo-property-padding-bottom.h"
64 #include "property/fo-property-padding-end.h"
65 #include "property/fo-property-padding-left.h"
66 #include "property/fo-property-padding-right.h"
67 #include "property/fo-property-padding-start.h"
68 #include "property/fo-property-padding-top.h"
69 #include "property/fo-property-role.h"
70 #include "property/fo-property-source-document.h"
71 #include "property/fo-property-space-after.h"
72 #include "property/fo-property-space-before.h"
73 #include "property/fo-property-start-indent.h"
74 #include "property/fo-property-text-align.h"
75 
76 enum {
77   PROP_0,
78   PROP_BACKGROUND_COLOR,
79   PROP_BACKGROUND_IMAGE,
80   PROP_BORDER_AFTER_COLOR,
81   PROP_BORDER_AFTER_STYLE,
82   PROP_BORDER_AFTER_WIDTH,
83   PROP_BORDER_BEFORE_COLOR,
84   PROP_BORDER_BEFORE_STYLE,
85   PROP_BORDER_BEFORE_WIDTH,
86   PROP_BORDER_BOTTOM_COLOR,
87   PROP_BORDER_BOTTOM_STYLE,
88   PROP_BORDER_BOTTOM_WIDTH,
89   PROP_BORDER_END_COLOR,
90   PROP_BORDER_END_STYLE,
91   PROP_BORDER_END_WIDTH,
92   PROP_BORDER_LEFT_COLOR,
93   PROP_BORDER_LEFT_STYLE,
94   PROP_BORDER_LEFT_WIDTH,
95   PROP_BORDER_RIGHT_COLOR,
96   PROP_BORDER_RIGHT_STYLE,
97   PROP_BORDER_RIGHT_WIDTH,
98   PROP_BORDER_START_COLOR,
99   PROP_BORDER_START_STYLE,
100   PROP_BORDER_START_WIDTH,
101   PROP_BORDER_TOP_COLOR,
102   PROP_BORDER_TOP_STYLE,
103   PROP_BORDER_TOP_WIDTH,
104   PROP_BREAK_AFTER,
105   PROP_BREAK_BEFORE,
106   PROP_END_INDENT,
107   PROP_ID,
108   PROP_KEEP_TOGETHER,
109   PROP_KEEP_TOGETHER_WITHIN_COLUMN,
110   PROP_KEEP_TOGETHER_WITHIN_LINE,
111   PROP_KEEP_TOGETHER_WITHIN_PAGE,
112   PROP_KEEP_WITH_NEXT,
113   PROP_KEEP_WITH_NEXT_WITHIN_COLUMN,
114   PROP_KEEP_WITH_NEXT_WITHIN_LINE,
115   PROP_KEEP_WITH_NEXT_WITHIN_PAGE,
116   PROP_KEEP_WITH_PREVIOUS,
117   PROP_KEEP_WITH_PREVIOUS_WITHIN_COLUMN,
118   PROP_KEEP_WITH_PREVIOUS_WITHIN_LINE,
119   PROP_KEEP_WITH_PREVIOUS_WITHIN_PAGE,
120   PROP_MARGIN_BOTTOM,
121   PROP_MARGIN_LEFT,
122   PROP_MARGIN_RIGHT,
123   PROP_MARGIN_TOP,
124   PROP_PADDING_AFTER,
125   PROP_PADDING_BEFORE,
126   PROP_PADDING_BOTTOM,
127   PROP_PADDING_END,
128   PROP_PADDING_LEFT,
129   PROP_PADDING_RIGHT,
130   PROP_PADDING_START,
131   PROP_PADDING_TOP,
132   PROP_ROLE,
133   PROP_SOURCE_DOCUMENT,
134   PROP_SPACE_AFTER,
135   PROP_SPACE_BEFORE,
136   PROP_START_INDENT,
137   PROP_TEXT_ALIGN
138 };
139 
140 static void fo_table_and_caption_class_init  (FoTableAndCaptionClass *klass);
141 static void fo_table_and_caption_block_fo_init (FoBlockFoIface *iface);
142 static void fo_table_and_caption_cbpbp_fo_init (FoCBPBPFoIface *iface);
143 static void fo_table_and_caption_get_property (GObject      *object,
144                                                guint         prop_id,
145                                                GValue       *value,
146                                                GParamSpec   *pspec);
147 static void fo_table_and_caption_set_property (GObject      *object,
148                                                guint         prop_id,
149                                                const GValue *value,
150                                                GParamSpec   *pspec);
151 static void fo_table_and_caption_finalize    (GObject           *object);
152 static gboolean fo_table_and_caption_validate_content (FoFo    *fo,
153                                                        GError **error);
154 static void fo_table_and_caption_validate (FoFo      *fo,
155                                            FoContext *current_context,
156                                            FoContext *parent_context,
157                                            GError   **error);
158 static void fo_table_and_caption_update_from_context (FoFo      *fo,
159                                                       FoContext *context);
160 static void fo_table_and_caption_debug_dump_properties (FoFo *fo,
161                                                         gint  depth);
162 
163 static gpointer parent_class;
164 
165 /**
166  * fo_table_and_caption_get_type:
167  *
168  * Register the #FoTableAndCaption object type.
169  *
170  * Return value: #GType value of the #FoTableAndCaption object type.
171  **/
172 GType
fo_table_and_caption_get_type(void)173 fo_table_and_caption_get_type (void)
174 {
175   static GType object_type = 0;
176 
177   if (!object_type)
178     {
179       static const GTypeInfo object_info =
180 	{
181 	  sizeof (FoTableAndCaptionClass),
182 	  NULL,           /* base_init */
183 	  NULL,           /* base_finalize */
184 	  (GClassInitFunc) fo_table_and_caption_class_init,
185 	  NULL,           /* class_finalize */
186 	  NULL,           /* class_data */
187 	  sizeof (FoTableAndCaption),
188 	  0,              /* n_preallocs */
189 	  NULL,		  /* instance_init */
190 	  NULL		  /* value_table */
191 	};
192 
193       static const GInterfaceInfo fo_block_fo_info =
194 	{
195 	  (GInterfaceInitFunc) fo_table_and_caption_block_fo_init,	 /* interface_init */
196 	  NULL,
197 	  NULL
198 	};
199 
200       static const GInterfaceInfo fo_cbpbp_fo_info =
201 	{
202 	  (GInterfaceInitFunc) fo_table_and_caption_cbpbp_fo_init,	 /* interface_init */
203 	  NULL,
204 	  NULL
205 	};
206 
207       object_type = g_type_register_static (FO_TYPE_MARKER_PARENT,
208                                             "FoTableAndCaption",
209                                             &object_info, 0);
210       g_type_add_interface_static (object_type,
211                                    FO_TYPE_BLOCK_FO,
212                                    &fo_block_fo_info);
213       g_type_add_interface_static (object_type,
214                                    FO_TYPE_CBPBP_FO,
215                                    &fo_cbpbp_fo_info);
216     }
217 
218   return object_type;
219 }
220 
221 /**
222  * fo_table_and_caption_class_init:
223  * @klass: #FoTableAndCaptionClass object to initialise.
224  *
225  * Implements #GClassInitFunc for #FoTableAndCaptionClass.
226  **/
227 void
fo_table_and_caption_class_init(FoTableAndCaptionClass * klass)228 fo_table_and_caption_class_init (FoTableAndCaptionClass *klass)
229 {
230   GObjectClass *object_class = G_OBJECT_CLASS (klass);
231   FoFoClass *fofo_class = FO_FO_CLASS (klass);
232 
233   parent_class = g_type_class_peek_parent (klass);
234 
235   object_class->finalize = fo_table_and_caption_finalize;
236 
237   object_class->get_property = fo_table_and_caption_get_property;
238   object_class->set_property = fo_table_and_caption_set_property;
239 
240   fofo_class->validate_content =
241     fo_table_and_caption_validate_content;
242   fofo_class->validate2 =
243     fo_table_and_caption_validate;
244   fofo_class->update_from_context = fo_table_and_caption_update_from_context;
245   fofo_class->debug_dump_properties = fo_table_and_caption_debug_dump_properties;
246 
247   g_object_class_install_property
248     (object_class,
249      PROP_BACKGROUND_COLOR,
250      g_param_spec_object ("background-color",
251 			  _("Background Color"),
252 			  _("Background Color property"),
253 			  FO_TYPE_PROPERTY,
254 			  G_PARAM_READABLE));
255   g_object_class_install_property
256     (object_class,
257      PROP_BACKGROUND_IMAGE,
258      g_param_spec_object ("background-image",
259 			  _("Background Image"),
260 			  _("Background Image property"),
261 			  FO_TYPE_PROPERTY,
262 			  G_PARAM_READABLE));
263   g_object_class_install_property
264     (object_class,
265      PROP_BORDER_AFTER_COLOR,
266      g_param_spec_object ("border-after-color",
267 			  _("Border After Color"),
268 			  _("Border After Color property"),
269 			  FO_TYPE_PROPERTY,
270 			  G_PARAM_READABLE));
271   g_object_class_install_property
272     (object_class,
273      PROP_BORDER_AFTER_STYLE,
274      g_param_spec_object ("border-after-style",
275 			  _("Border After Style"),
276 			  _("Border After Style property"),
277 			  FO_TYPE_PROPERTY,
278 			  G_PARAM_READABLE));
279   g_object_class_install_property
280     (object_class,
281      PROP_BORDER_AFTER_WIDTH,
282      g_param_spec_object ("border-after-width",
283 			  _("Border After Width"),
284 			  _("Border After Width property"),
285 			  FO_TYPE_PROPERTY,
286 			  G_PARAM_READABLE));
287   g_object_class_install_property
288     (object_class,
289      PROP_BORDER_BEFORE_COLOR,
290      g_param_spec_object ("border-before-color",
291 			  _("Border Before Color"),
292 			  _("Border Before Color property"),
293 			  FO_TYPE_PROPERTY,
294 			  G_PARAM_READABLE));
295   g_object_class_install_property
296     (object_class,
297      PROP_BORDER_BEFORE_STYLE,
298      g_param_spec_object ("border-before-style",
299 			  _("Border Before Style"),
300 			  _("Border Before Style property"),
301 			  FO_TYPE_PROPERTY,
302 			  G_PARAM_READABLE));
303   g_object_class_install_property
304     (object_class,
305      PROP_BORDER_BEFORE_WIDTH,
306      g_param_spec_object ("border-before-width",
307 			  _("Border Before Width"),
308 			  _("Border Before Width property"),
309 			  FO_TYPE_PROPERTY,
310 			  G_PARAM_READABLE));
311   g_object_class_install_property
312     (object_class,
313      PROP_BORDER_BOTTOM_COLOR,
314      g_param_spec_object ("border-bottom-color",
315 			  _("Border Bottom Color"),
316 			  _("Border Bottom Color property"),
317 			  FO_TYPE_PROPERTY,
318 			  G_PARAM_READABLE));
319   g_object_class_install_property
320     (object_class,
321      PROP_BORDER_BOTTOM_STYLE,
322      g_param_spec_object ("border-bottom-style",
323 			  _("Border Bottom Style"),
324 			  _("Border Bottom Style property"),
325 			  FO_TYPE_PROPERTY,
326 			  G_PARAM_READABLE));
327   g_object_class_install_property
328     (object_class,
329      PROP_BORDER_BOTTOM_WIDTH,
330      g_param_spec_object ("border-bottom-width",
331 			  _("Border Bottom Width"),
332 			  _("Border Bottom Width property"),
333 			  FO_TYPE_PROPERTY,
334 			  G_PARAM_READABLE));
335   g_object_class_install_property
336     (object_class,
337      PROP_BORDER_END_COLOR,
338      g_param_spec_object ("border-end-color",
339 			  _("Border End Color"),
340 			  _("Border End Color property"),
341 			  FO_TYPE_PROPERTY,
342 			  G_PARAM_READABLE));
343   g_object_class_install_property
344     (object_class,
345      PROP_BORDER_END_STYLE,
346      g_param_spec_object ("border-end-style",
347 			  _("Border End Style"),
348 			  _("Border End Style property"),
349 			  FO_TYPE_PROPERTY,
350 			  G_PARAM_READABLE));
351   g_object_class_install_property
352     (object_class,
353      PROP_BORDER_END_WIDTH,
354      g_param_spec_object ("border-end-width",
355 			  _("Border End Width"),
356 			  _("Border End Width property"),
357 			  FO_TYPE_PROPERTY,
358 			  G_PARAM_READABLE));
359   g_object_class_install_property
360     (object_class,
361      PROP_BORDER_LEFT_COLOR,
362      g_param_spec_object ("border-left-color",
363 			  _("Border Left Color"),
364 			  _("Border Left Color property"),
365 			  FO_TYPE_PROPERTY,
366 			  G_PARAM_READABLE));
367   g_object_class_install_property
368     (object_class,
369      PROP_BORDER_LEFT_STYLE,
370      g_param_spec_object ("border-left-style",
371 			  _("Border Left Style"),
372 			  _("Border Left Style property"),
373 			  FO_TYPE_PROPERTY,
374 			  G_PARAM_READABLE));
375   g_object_class_install_property
376     (object_class,
377      PROP_BORDER_LEFT_WIDTH,
378      g_param_spec_object ("border-left-width",
379 			  _("Border Left Width"),
380 			  _("Border Left Width property"),
381 			  FO_TYPE_PROPERTY,
382 			  G_PARAM_READABLE));
383   g_object_class_install_property
384     (object_class,
385      PROP_BORDER_RIGHT_COLOR,
386      g_param_spec_object ("border-right-color",
387 			  _("Border Right Color"),
388 			  _("Border Right Color property"),
389 			  FO_TYPE_PROPERTY,
390 			  G_PARAM_READABLE));
391   g_object_class_install_property
392     (object_class,
393      PROP_BORDER_RIGHT_STYLE,
394      g_param_spec_object ("border-right-style",
395 			  _("Border Right Style"),
396 			  _("Border Right Style property"),
397 			  FO_TYPE_PROPERTY,
398 			  G_PARAM_READABLE));
399   g_object_class_install_property
400     (object_class,
401      PROP_BORDER_RIGHT_WIDTH,
402      g_param_spec_object ("border-right-width",
403 			  _("Border Right Width"),
404 			  _("Border Right Width property"),
405 			  FO_TYPE_PROPERTY,
406 			  G_PARAM_READABLE));
407   g_object_class_install_property
408     (object_class,
409      PROP_BORDER_START_COLOR,
410      g_param_spec_object ("border-start-color",
411 			  _("Border Start Color"),
412 			  _("Border Start Color property"),
413 			  FO_TYPE_PROPERTY,
414 			  G_PARAM_READABLE));
415   g_object_class_install_property
416     (object_class,
417      PROP_BORDER_START_STYLE,
418      g_param_spec_object ("border-start-style",
419 			  _("Border Start Style"),
420 			  _("Border Start Style property"),
421 			  FO_TYPE_PROPERTY,
422 			  G_PARAM_READABLE));
423   g_object_class_install_property
424     (object_class,
425      PROP_BORDER_START_WIDTH,
426      g_param_spec_object ("border-start-width",
427 			  _("Border Start Width"),
428 			  _("Border Start Width property"),
429 			  FO_TYPE_PROPERTY,
430 			  G_PARAM_READABLE));
431   g_object_class_install_property
432     (object_class,
433      PROP_BORDER_TOP_COLOR,
434      g_param_spec_object ("border-top-color",
435 			  _("Border Top Color"),
436 			  _("Border Top Color property"),
437 			  FO_TYPE_PROPERTY,
438 			  G_PARAM_READABLE));
439   g_object_class_install_property
440     (object_class,
441      PROP_BORDER_TOP_STYLE,
442      g_param_spec_object ("border-top-style",
443 			  _("Border Top Style"),
444 			  _("Border Top Style property"),
445 			  FO_TYPE_PROPERTY,
446 			  G_PARAM_READABLE));
447   g_object_class_install_property
448     (object_class,
449      PROP_BORDER_TOP_WIDTH,
450      g_param_spec_object ("border-top-width",
451 			  _("Border Top Width"),
452 			  _("Border Top Width property"),
453 			  FO_TYPE_PROPERTY,
454 			  G_PARAM_READABLE));
455   g_object_class_install_property
456     (object_class,
457      PROP_BREAK_AFTER,
458      g_param_spec_object ("break-after",
459 			  _("Break After"),
460 			  _("Break After property"),
461 			  FO_TYPE_PROPERTY,
462 			  G_PARAM_READABLE));
463   g_object_class_install_property
464     (object_class,
465      PROP_BREAK_BEFORE,
466      g_param_spec_object ("break-before",
467 			  _("Break Before"),
468 			  _("Break Before property"),
469 			  FO_TYPE_PROPERTY,
470 			  G_PARAM_READABLE));
471   g_object_class_install_property
472     (object_class,
473      PROP_END_INDENT,
474      g_param_spec_object ("end-indent",
475 			  _("End Indent"),
476 			  _("End Indent property"),
477 			  FO_TYPE_PROPERTY,
478 			  G_PARAM_READABLE));
479   g_object_class_install_property
480     (object_class,
481      PROP_ID,
482      g_param_spec_object ("id",
483 			  _("Id"),
484 			  _("Id property"),
485 			  FO_TYPE_PROPERTY,
486 			  G_PARAM_READABLE));
487   g_object_class_install_property
488     (object_class,
489      PROP_KEEP_TOGETHER,
490      g_param_spec_object ("keep-together",
491 			  _("Keep Together"),
492 			  _("Keep Together property"),
493 			  FO_TYPE_PROPERTY,
494 			  G_PARAM_READABLE));
495   g_object_class_install_property
496     (object_class,
497      PROP_KEEP_TOGETHER_WITHIN_COLUMN,
498      g_param_spec_object ("keep-together-within-column",
499 			  _("Keep Together Within Column"),
500 			  _("Keep Together Within Column property"),
501 			  FO_TYPE_PROPERTY,
502 			  G_PARAM_READABLE));
503   g_object_class_install_property
504     (object_class,
505      PROP_KEEP_TOGETHER_WITHIN_LINE,
506      g_param_spec_object ("keep-together-within-line",
507 			  _("Keep Together Within Line"),
508 			  _("Keep Together Within Line property"),
509 			  FO_TYPE_PROPERTY,
510 			  G_PARAM_READABLE));
511   g_object_class_install_property
512     (object_class,
513      PROP_KEEP_TOGETHER_WITHIN_PAGE,
514      g_param_spec_object ("keep-together-within-page",
515 			  _("Keep Together Within Page"),
516 			  _("Keep Together Within Page property"),
517 			  FO_TYPE_PROPERTY,
518 			  G_PARAM_READABLE));
519   g_object_class_install_property
520     (object_class,
521      PROP_KEEP_WITH_NEXT,
522      g_param_spec_object ("keep-with-next",
523 			  _("Keep With Next"),
524 			  _("Keep With Next property"),
525 			  FO_TYPE_PROPERTY,
526 			  G_PARAM_READABLE));
527   g_object_class_install_property
528     (object_class,
529      PROP_KEEP_WITH_NEXT_WITHIN_COLUMN,
530      g_param_spec_object ("keep-with-next-within-column",
531 			  _("Keep With Next Within Column"),
532 			  _("Keep With Next Within Column property"),
533 			  FO_TYPE_PROPERTY,
534 			  G_PARAM_READABLE));
535   g_object_class_install_property
536     (object_class,
537      PROP_KEEP_WITH_NEXT_WITHIN_LINE,
538      g_param_spec_object ("keep-with-next-within-line",
539 			  _("Keep With Next Within Line"),
540 			  _("Keep With Next Within Line property"),
541 			  FO_TYPE_PROPERTY,
542 			  G_PARAM_READABLE));
543   g_object_class_install_property
544     (object_class,
545      PROP_KEEP_WITH_NEXT_WITHIN_PAGE,
546      g_param_spec_object ("keep-with-next-within-page",
547 			  _("Keep With Next Within Page"),
548 			  _("Keep With Next Within Page property"),
549 			  FO_TYPE_PROPERTY,
550 			  G_PARAM_READABLE));
551   g_object_class_install_property
552     (object_class,
553      PROP_KEEP_WITH_PREVIOUS,
554      g_param_spec_object ("keep-with-previous",
555 			  _("Keep With Previous"),
556 			  _("Keep With Previous property"),
557 			  FO_TYPE_PROPERTY,
558 			  G_PARAM_READABLE));
559   g_object_class_install_property
560     (object_class,
561      PROP_KEEP_WITH_PREVIOUS_WITHIN_COLUMN,
562      g_param_spec_object ("keep-with-previous-within-column",
563 			  _("Keep With Previous Within Column"),
564 			  _("Keep With Previous Within Column property"),
565 			  FO_TYPE_PROPERTY,
566 			  G_PARAM_READABLE));
567   g_object_class_install_property
568     (object_class,
569      PROP_KEEP_WITH_PREVIOUS_WITHIN_LINE,
570      g_param_spec_object ("keep-with-previous-within-line",
571 			  _("Keep With Previous Within Line"),
572 			  _("Keep With Previous Within Line property"),
573 			  FO_TYPE_PROPERTY,
574 			  G_PARAM_READABLE));
575   g_object_class_install_property
576     (object_class,
577      PROP_KEEP_WITH_PREVIOUS_WITHIN_PAGE,
578      g_param_spec_object ("keep-with-previous-within-page",
579 			  _("Keep With Previous Within Page"),
580 			  _("Keep With Previous Within Page property"),
581 			  FO_TYPE_PROPERTY,
582 			  G_PARAM_READABLE));
583   g_object_class_install_property
584     (object_class,
585      PROP_MARGIN_BOTTOM,
586      g_param_spec_object ("margin-bottom",
587 			  _("Margin Bottom"),
588 			  _("Margin Bottom property"),
589 			  FO_TYPE_PROPERTY,
590 			  G_PARAM_READABLE));
591   g_object_class_install_property
592     (object_class,
593      PROP_MARGIN_LEFT,
594      g_param_spec_object ("margin-left",
595 			  _("Margin Left"),
596 			  _("Margin Left property"),
597 			  FO_TYPE_PROPERTY,
598 			  G_PARAM_READABLE));
599   g_object_class_install_property
600     (object_class,
601      PROP_MARGIN_RIGHT,
602      g_param_spec_object ("margin-right",
603 			  _("Margin Right"),
604 			  _("Margin Right property"),
605 			  FO_TYPE_PROPERTY,
606 			  G_PARAM_READABLE));
607   g_object_class_install_property
608     (object_class,
609      PROP_MARGIN_TOP,
610      g_param_spec_object ("margin-top",
611 			  _("Margin Top"),
612 			  _("Margin Top property"),
613 			  FO_TYPE_PROPERTY,
614 			  G_PARAM_READABLE));
615   g_object_class_install_property
616     (object_class,
617      PROP_PADDING_AFTER,
618      g_param_spec_object ("padding-after",
619 			  _("Padding After"),
620 			  _("Padding After property"),
621 			  FO_TYPE_PROPERTY,
622 			  G_PARAM_READABLE));
623   g_object_class_install_property
624     (object_class,
625      PROP_PADDING_BEFORE,
626      g_param_spec_object ("padding-before",
627 			  _("Padding Before"),
628 			  _("Padding Before property"),
629 			  FO_TYPE_PROPERTY,
630 			  G_PARAM_READABLE));
631   g_object_class_install_property
632     (object_class,
633      PROP_PADDING_BOTTOM,
634      g_param_spec_object ("padding-bottom",
635 			  _("Padding Bottom"),
636 			  _("Padding Bottom property"),
637 			  FO_TYPE_PROPERTY,
638 			  G_PARAM_READABLE));
639   g_object_class_install_property
640     (object_class,
641      PROP_PADDING_END,
642      g_param_spec_object ("padding-end",
643 			  _("Padding End"),
644 			  _("Padding End property"),
645 			  FO_TYPE_PROPERTY,
646 			  G_PARAM_READABLE));
647   g_object_class_install_property
648     (object_class,
649      PROP_PADDING_LEFT,
650      g_param_spec_object ("padding-left",
651 			  _("Padding Left"),
652 			  _("Padding Left property"),
653 			  FO_TYPE_PROPERTY,
654 			  G_PARAM_READABLE));
655   g_object_class_install_property
656     (object_class,
657      PROP_PADDING_RIGHT,
658      g_param_spec_object ("padding-right",
659 			  _("Padding Right"),
660 			  _("Padding Right property"),
661 			  FO_TYPE_PROPERTY,
662 			  G_PARAM_READABLE));
663   g_object_class_install_property
664     (object_class,
665      PROP_PADDING_START,
666      g_param_spec_object ("padding-start",
667 			  _("Padding Start"),
668 			  _("Padding Start property"),
669 			  FO_TYPE_PROPERTY,
670 			  G_PARAM_READABLE));
671   g_object_class_install_property
672     (object_class,
673      PROP_PADDING_TOP,
674      g_param_spec_object ("padding-top",
675 			  _("Padding Top"),
676 			  _("Padding Top property"),
677 			  FO_TYPE_PROPERTY,
678 			  G_PARAM_READABLE));
679   g_object_class_install_property
680     (object_class,
681      PROP_ROLE,
682      g_param_spec_object ("role",
683 			  _("Role"),
684 			  _("Role property"),
685 			  FO_TYPE_PROPERTY,
686 			  G_PARAM_READABLE));
687   g_object_class_install_property
688     (object_class,
689      PROP_SOURCE_DOCUMENT,
690      g_param_spec_object ("source-document",
691 			  _("Source Document"),
692 			  _("Source Document property"),
693 			  FO_TYPE_PROPERTY,
694 			  G_PARAM_READABLE));
695   g_object_class_install_property
696     (object_class,
697      PROP_SPACE_AFTER,
698      g_param_spec_object ("space-after",
699 			  _("Space After"),
700 			  _("Space After property"),
701 			  FO_TYPE_PROPERTY,
702 			  G_PARAM_READABLE));
703   g_object_class_install_property
704     (object_class,
705      PROP_SPACE_BEFORE,
706      g_param_spec_object ("space-before",
707 			  _("Space Before"),
708 			  _("Space Before property"),
709 			  FO_TYPE_PROPERTY,
710 			  G_PARAM_READABLE));
711   g_object_class_install_property
712     (object_class,
713      PROP_START_INDENT,
714      g_param_spec_object ("start-indent",
715 			  _("Start Indent"),
716 			  _("Start Indent property"),
717 			  FO_TYPE_PROPERTY,
718 			  G_PARAM_READABLE));
719   g_object_class_install_property
720     (object_class,
721      PROP_TEXT_ALIGN,
722      g_param_spec_object ("text-align",
723 			  _("Text Align"),
724 			  _("Text Align property"),
725 			  FO_TYPE_PROPERTY,
726 			  G_PARAM_READABLE));
727 }
728 
729 /**
730  * fo_table_and_caption_block_fo_init:
731  * @iface: #FoBlockFoIFace structure for this class.
732  *
733  * Initialize #FoBlockFoIface interface for this class.
734  **/
735 void
fo_table_and_caption_block_fo_init(FoBlockFoIface * iface)736 fo_table_and_caption_block_fo_init (FoBlockFoIface *iface)
737 {
738   iface->get_background_color = fo_table_and_caption_get_background_color;
739   iface->get_border_after_color = fo_table_and_caption_get_border_after_color;
740   iface->get_border_after_style = fo_table_and_caption_get_border_after_style;
741   iface->get_border_after_width = fo_table_and_caption_get_border_after_width;
742   iface->get_border_before_color = fo_table_and_caption_get_border_before_color;
743   iface->get_border_before_style = fo_table_and_caption_get_border_before_style;
744   iface->get_border_before_width = fo_table_and_caption_get_border_before_width;
745   iface->get_border_end_color = fo_table_and_caption_get_border_end_color;
746   iface->get_border_end_style = fo_table_and_caption_get_border_end_style;
747   iface->get_border_end_width = fo_table_and_caption_get_border_end_width;
748   iface->get_border_start_color = fo_table_and_caption_get_border_start_color;
749   iface->get_border_start_style = fo_table_and_caption_get_border_start_style;
750   iface->get_border_start_width = fo_table_and_caption_get_border_start_width;
751   iface->get_keep_with_previous = fo_table_and_caption_get_keep_with_previous;
752   iface->get_keep_with_next = fo_table_and_caption_get_keep_with_next;
753   iface->get_keep_together = fo_table_and_caption_get_keep_together;
754   iface->get_padding_after = fo_table_and_caption_get_padding_after;
755   iface->get_padding_before = fo_table_and_caption_get_padding_before;
756   iface->get_padding_end = fo_table_and_caption_get_padding_end;
757   iface->get_padding_start = fo_table_and_caption_get_padding_start;
758   iface->get_space_before = fo_table_and_caption_get_space_before;
759   iface->get_space_after = fo_table_and_caption_get_space_after;
760   iface->get_start_indent = fo_table_and_caption_get_start_indent;
761   iface->get_end_indent = fo_table_and_caption_get_end_indent;
762 }
763 
764 /**
765  * fo_table_and_caption_cbpbp_fo_init:
766  * @iface: #FoCBPBPFoIFace structure for this class.
767  *
768  * Initialize #FoCBPBPFoIface interface for this class.
769  **/
770 void
fo_table_and_caption_cbpbp_fo_init(FoCBPBPFoIface * iface)771 fo_table_and_caption_cbpbp_fo_init (FoCBPBPFoIface *iface)
772 {
773   iface->get_background_color = fo_table_and_caption_get_background_color;
774   iface->get_border_after_color = fo_table_and_caption_get_border_after_color;
775   iface->get_border_after_style = fo_table_and_caption_get_border_after_style;
776   iface->get_border_after_width = fo_table_and_caption_get_border_after_width;
777   iface->get_border_before_color = fo_table_and_caption_get_border_before_color;
778   iface->get_border_before_style = fo_table_and_caption_get_border_before_style;
779   iface->get_border_before_width = fo_table_and_caption_get_border_before_width;
780   iface->get_border_end_color = fo_table_and_caption_get_border_end_color;
781   iface->get_border_end_style = fo_table_and_caption_get_border_end_style;
782   iface->get_border_end_width = fo_table_and_caption_get_border_end_width;
783   iface->get_border_start_color = fo_table_and_caption_get_border_start_color;
784   iface->get_border_start_style = fo_table_and_caption_get_border_start_style;
785   iface->get_border_start_width = fo_table_and_caption_get_border_start_width;
786   iface->get_padding_after = fo_table_and_caption_get_padding_after;
787   iface->get_padding_before = fo_table_and_caption_get_padding_before;
788   iface->get_padding_end = fo_table_and_caption_get_padding_end;
789   iface->get_padding_start = fo_table_and_caption_get_padding_start;
790 }
791 
792 /**
793  * fo_table_and_caption_finalize:
794  * @object: #FoTableAndCaption object to finalize.
795  *
796  * Implements #GObjectFinalizeFunc for #FoTableAndCaption.
797  **/
798 void
fo_table_and_caption_finalize(GObject * object)799 fo_table_and_caption_finalize (GObject *object)
800 {
801   FoFo *fo = FO_FO (object);
802 
803   /* Release references to all property objects. */
804   fo_table_and_caption_set_background_color (fo, NULL);
805   fo_table_and_caption_set_background_image (fo, NULL);
806   fo_table_and_caption_set_border_after_color (fo, NULL);
807   fo_table_and_caption_set_border_after_style (fo, NULL);
808   fo_table_and_caption_set_border_after_width (fo, NULL);
809   fo_table_and_caption_set_border_before_color (fo, NULL);
810   fo_table_and_caption_set_border_before_style (fo, NULL);
811   fo_table_and_caption_set_border_before_width (fo, NULL);
812   fo_table_and_caption_set_border_bottom_color (fo, NULL);
813   fo_table_and_caption_set_border_bottom_style (fo, NULL);
814   fo_table_and_caption_set_border_bottom_width (fo, NULL);
815   fo_table_and_caption_set_border_end_color (fo, NULL);
816   fo_table_and_caption_set_border_end_style (fo, NULL);
817   fo_table_and_caption_set_border_end_width (fo, NULL);
818   fo_table_and_caption_set_border_left_color (fo, NULL);
819   fo_table_and_caption_set_border_left_style (fo, NULL);
820   fo_table_and_caption_set_border_left_width (fo, NULL);
821   fo_table_and_caption_set_border_right_color (fo, NULL);
822   fo_table_and_caption_set_border_right_style (fo, NULL);
823   fo_table_and_caption_set_border_right_width (fo, NULL);
824   fo_table_and_caption_set_border_start_color (fo, NULL);
825   fo_table_and_caption_set_border_start_style (fo, NULL);
826   fo_table_and_caption_set_border_start_width (fo, NULL);
827   fo_table_and_caption_set_border_top_color (fo, NULL);
828   fo_table_and_caption_set_border_top_style (fo, NULL);
829   fo_table_and_caption_set_border_top_width (fo, NULL);
830   fo_table_and_caption_set_break_after (fo, NULL);
831   fo_table_and_caption_set_break_before (fo, NULL);
832   fo_table_and_caption_set_end_indent (fo, NULL);
833   fo_table_and_caption_set_id (fo, NULL);
834   fo_table_and_caption_set_keep_together (fo, NULL);
835   fo_table_and_caption_set_keep_together_within_column (fo, NULL);
836   fo_table_and_caption_set_keep_together_within_line (fo, NULL);
837   fo_table_and_caption_set_keep_together_within_page (fo, NULL);
838   fo_table_and_caption_set_keep_with_next (fo, NULL);
839   fo_table_and_caption_set_keep_with_next_within_column (fo, NULL);
840   fo_table_and_caption_set_keep_with_next_within_line (fo, NULL);
841   fo_table_and_caption_set_keep_with_next_within_page (fo, NULL);
842   fo_table_and_caption_set_keep_with_previous (fo, NULL);
843   fo_table_and_caption_set_keep_with_previous_within_column (fo, NULL);
844   fo_table_and_caption_set_keep_with_previous_within_line (fo, NULL);
845   fo_table_and_caption_set_keep_with_previous_within_page (fo, NULL);
846   fo_table_and_caption_set_margin_bottom (fo, NULL);
847   fo_table_and_caption_set_margin_left (fo, NULL);
848   fo_table_and_caption_set_margin_right (fo, NULL);
849   fo_table_and_caption_set_margin_top (fo, NULL);
850   fo_table_and_caption_set_padding_after (fo, NULL);
851   fo_table_and_caption_set_padding_before (fo, NULL);
852   fo_table_and_caption_set_padding_bottom (fo, NULL);
853   fo_table_and_caption_set_padding_end (fo, NULL);
854   fo_table_and_caption_set_padding_left (fo, NULL);
855   fo_table_and_caption_set_padding_right (fo, NULL);
856   fo_table_and_caption_set_padding_start (fo, NULL);
857   fo_table_and_caption_set_padding_top (fo, NULL);
858   fo_table_and_caption_set_role (fo, NULL);
859   fo_table_and_caption_set_source_document (fo, NULL);
860   fo_table_and_caption_set_space_after (fo, NULL);
861   fo_table_and_caption_set_space_before (fo, NULL);
862   fo_table_and_caption_set_start_indent (fo, NULL);
863   fo_table_and_caption_set_text_align (fo, NULL);
864 
865   G_OBJECT_CLASS (parent_class)->finalize (object);
866 }
867 
868 /**
869  * fo_table_and_caption_get_property:
870  * @object:  #GObject whose property will be retrieved.
871  * @prop_id: Property ID assigned when property registered.
872  * @value:   GValue to set with property value.
873  * @pspec:   Parameter specification for this property type.
874  *
875  * Implements #GObjectGetPropertyFunc for #FoTableAndCaption.
876  **/
877 void
fo_table_and_caption_get_property(GObject * object,guint prop_id,GValue * value,GParamSpec * pspec)878 fo_table_and_caption_get_property (GObject    *object,
879                                    guint       prop_id,
880                                    GValue     *value,
881                                    GParamSpec *pspec)
882 {
883   FoFo *fo_fo;
884 
885   fo_fo = FO_FO (object);
886 
887   switch (prop_id)
888     {
889     case PROP_BACKGROUND_COLOR:
890       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_background_color (fo_fo)));
891       break;
892     case PROP_BACKGROUND_IMAGE:
893       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_background_image (fo_fo)));
894       break;
895     case PROP_BORDER_AFTER_COLOR:
896       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_after_color (fo_fo)));
897       break;
898     case PROP_BORDER_AFTER_STYLE:
899       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_after_style (fo_fo)));
900       break;
901     case PROP_BORDER_AFTER_WIDTH:
902       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_after_width (fo_fo)));
903       break;
904     case PROP_BORDER_BEFORE_COLOR:
905       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_before_color (fo_fo)));
906       break;
907     case PROP_BORDER_BEFORE_STYLE:
908       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_before_style (fo_fo)));
909       break;
910     case PROP_BORDER_BEFORE_WIDTH:
911       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_before_width (fo_fo)));
912       break;
913     case PROP_BORDER_BOTTOM_COLOR:
914       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_bottom_color (fo_fo)));
915       break;
916     case PROP_BORDER_BOTTOM_STYLE:
917       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_bottom_style (fo_fo)));
918       break;
919     case PROP_BORDER_BOTTOM_WIDTH:
920       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_bottom_width (fo_fo)));
921       break;
922     case PROP_BORDER_END_COLOR:
923       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_end_color (fo_fo)));
924       break;
925     case PROP_BORDER_END_STYLE:
926       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_end_style (fo_fo)));
927       break;
928     case PROP_BORDER_END_WIDTH:
929       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_end_width (fo_fo)));
930       break;
931     case PROP_BORDER_LEFT_COLOR:
932       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_left_color (fo_fo)));
933       break;
934     case PROP_BORDER_LEFT_STYLE:
935       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_left_style (fo_fo)));
936       break;
937     case PROP_BORDER_LEFT_WIDTH:
938       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_left_width (fo_fo)));
939       break;
940     case PROP_BORDER_RIGHT_COLOR:
941       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_right_color (fo_fo)));
942       break;
943     case PROP_BORDER_RIGHT_STYLE:
944       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_right_style (fo_fo)));
945       break;
946     case PROP_BORDER_RIGHT_WIDTH:
947       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_right_width (fo_fo)));
948       break;
949     case PROP_BORDER_START_COLOR:
950       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_start_color (fo_fo)));
951       break;
952     case PROP_BORDER_START_STYLE:
953       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_start_style (fo_fo)));
954       break;
955     case PROP_BORDER_START_WIDTH:
956       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_start_width (fo_fo)));
957       break;
958     case PROP_BORDER_TOP_COLOR:
959       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_top_color (fo_fo)));
960       break;
961     case PROP_BORDER_TOP_STYLE:
962       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_top_style (fo_fo)));
963       break;
964     case PROP_BORDER_TOP_WIDTH:
965       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_border_top_width (fo_fo)));
966       break;
967     case PROP_BREAK_AFTER:
968       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_break_after (fo_fo)));
969       break;
970     case PROP_BREAK_BEFORE:
971       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_break_before (fo_fo)));
972       break;
973     case PROP_END_INDENT:
974       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_end_indent (fo_fo)));
975       break;
976     case PROP_ID:
977       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_id (fo_fo)));
978       break;
979     case PROP_KEEP_TOGETHER:
980       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_together (fo_fo)));
981       break;
982     case PROP_KEEP_TOGETHER_WITHIN_COLUMN:
983       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_together_within_column (fo_fo)));
984       break;
985     case PROP_KEEP_TOGETHER_WITHIN_LINE:
986       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_together_within_line (fo_fo)));
987       break;
988     case PROP_KEEP_TOGETHER_WITHIN_PAGE:
989       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_together_within_page (fo_fo)));
990       break;
991     case PROP_KEEP_WITH_NEXT:
992       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_next (fo_fo)));
993       break;
994     case PROP_KEEP_WITH_NEXT_WITHIN_COLUMN:
995       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_next_within_column (fo_fo)));
996       break;
997     case PROP_KEEP_WITH_NEXT_WITHIN_LINE:
998       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_next_within_line (fo_fo)));
999       break;
1000     case PROP_KEEP_WITH_NEXT_WITHIN_PAGE:
1001       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_next_within_page (fo_fo)));
1002       break;
1003     case PROP_KEEP_WITH_PREVIOUS:
1004       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_previous (fo_fo)));
1005       break;
1006     case PROP_KEEP_WITH_PREVIOUS_WITHIN_COLUMN:
1007       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_previous_within_column (fo_fo)));
1008       break;
1009     case PROP_KEEP_WITH_PREVIOUS_WITHIN_LINE:
1010       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_previous_within_line (fo_fo)));
1011       break;
1012     case PROP_KEEP_WITH_PREVIOUS_WITHIN_PAGE:
1013       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_keep_with_previous_within_page (fo_fo)));
1014       break;
1015     case PROP_MARGIN_BOTTOM:
1016       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_margin_bottom (fo_fo)));
1017       break;
1018     case PROP_MARGIN_LEFT:
1019       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_margin_left (fo_fo)));
1020       break;
1021     case PROP_MARGIN_RIGHT:
1022       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_margin_right (fo_fo)));
1023       break;
1024     case PROP_MARGIN_TOP:
1025       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_margin_top (fo_fo)));
1026       break;
1027     case PROP_PADDING_AFTER:
1028       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_after (fo_fo)));
1029       break;
1030     case PROP_PADDING_BEFORE:
1031       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_before (fo_fo)));
1032       break;
1033     case PROP_PADDING_BOTTOM:
1034       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_bottom (fo_fo)));
1035       break;
1036     case PROP_PADDING_END:
1037       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_end (fo_fo)));
1038       break;
1039     case PROP_PADDING_LEFT:
1040       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_left (fo_fo)));
1041       break;
1042     case PROP_PADDING_RIGHT:
1043       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_right (fo_fo)));
1044       break;
1045     case PROP_PADDING_START:
1046       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_start (fo_fo)));
1047       break;
1048     case PROP_PADDING_TOP:
1049       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_padding_top (fo_fo)));
1050       break;
1051     case PROP_ROLE:
1052       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_role (fo_fo)));
1053       break;
1054     case PROP_SOURCE_DOCUMENT:
1055       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_source_document (fo_fo)));
1056       break;
1057     case PROP_SPACE_AFTER:
1058       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_space_after (fo_fo)));
1059       break;
1060     case PROP_SPACE_BEFORE:
1061       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_space_before (fo_fo)));
1062       break;
1063     case PROP_START_INDENT:
1064       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_start_indent (fo_fo)));
1065       break;
1066     case PROP_TEXT_ALIGN:
1067       g_value_set_object (value, G_OBJECT (fo_table_and_caption_get_text_align (fo_fo)));
1068       break;
1069     default:
1070       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
1071       break;
1072     }
1073 }
1074 
1075 /**
1076  * fo_table_and_caption_set_property:
1077  * @object:  #GObject whose property will be set.
1078  * @prop_id: Property ID assigned when property registered.
1079  * @value:   New value for property.
1080  * @pspec:   Parameter specification for this property type.
1081  *
1082  * Implements #GObjectSetPropertyFunc for #FoTableAndCaption.
1083  **/
1084 void
fo_table_and_caption_set_property(GObject * object,guint prop_id,const GValue * value,GParamSpec * pspec)1085 fo_table_and_caption_set_property (GObject      *object,
1086                                    guint         prop_id,
1087                                    const GValue *value,
1088                                    GParamSpec   *pspec)
1089 {
1090   FoFo *fo_fo;
1091 
1092   fo_fo = FO_FO (object);
1093 
1094   switch (prop_id)
1095     {
1096     case PROP_BACKGROUND_COLOR:
1097       fo_table_and_caption_set_background_color (fo_fo, g_value_get_object (value));
1098       break;
1099     case PROP_BACKGROUND_IMAGE:
1100       fo_table_and_caption_set_background_image (fo_fo, g_value_get_object (value));
1101       break;
1102     case PROP_BORDER_AFTER_COLOR:
1103       fo_table_and_caption_set_border_after_color (fo_fo, g_value_get_object (value));
1104       break;
1105     case PROP_BORDER_AFTER_STYLE:
1106       fo_table_and_caption_set_border_after_style (fo_fo, g_value_get_object (value));
1107       break;
1108     case PROP_BORDER_AFTER_WIDTH:
1109       fo_table_and_caption_set_border_after_width (fo_fo, g_value_get_object (value));
1110       break;
1111     case PROP_BORDER_BEFORE_COLOR:
1112       fo_table_and_caption_set_border_before_color (fo_fo, g_value_get_object (value));
1113       break;
1114     case PROP_BORDER_BEFORE_STYLE:
1115       fo_table_and_caption_set_border_before_style (fo_fo, g_value_get_object (value));
1116       break;
1117     case PROP_BORDER_BEFORE_WIDTH:
1118       fo_table_and_caption_set_border_before_width (fo_fo, g_value_get_object (value));
1119       break;
1120     case PROP_BORDER_BOTTOM_COLOR:
1121       fo_table_and_caption_set_border_bottom_color (fo_fo, g_value_get_object (value));
1122       break;
1123     case PROP_BORDER_BOTTOM_STYLE:
1124       fo_table_and_caption_set_border_bottom_style (fo_fo, g_value_get_object (value));
1125       break;
1126     case PROP_BORDER_BOTTOM_WIDTH:
1127       fo_table_and_caption_set_border_bottom_width (fo_fo, g_value_get_object (value));
1128       break;
1129     case PROP_BORDER_END_COLOR:
1130       fo_table_and_caption_set_border_end_color (fo_fo, g_value_get_object (value));
1131       break;
1132     case PROP_BORDER_END_STYLE:
1133       fo_table_and_caption_set_border_end_style (fo_fo, g_value_get_object (value));
1134       break;
1135     case PROP_BORDER_END_WIDTH:
1136       fo_table_and_caption_set_border_end_width (fo_fo, g_value_get_object (value));
1137       break;
1138     case PROP_BORDER_LEFT_COLOR:
1139       fo_table_and_caption_set_border_left_color (fo_fo, g_value_get_object (value));
1140       break;
1141     case PROP_BORDER_LEFT_STYLE:
1142       fo_table_and_caption_set_border_left_style (fo_fo, g_value_get_object (value));
1143       break;
1144     case PROP_BORDER_LEFT_WIDTH:
1145       fo_table_and_caption_set_border_left_width (fo_fo, g_value_get_object (value));
1146       break;
1147     case PROP_BORDER_RIGHT_COLOR:
1148       fo_table_and_caption_set_border_right_color (fo_fo, g_value_get_object (value));
1149       break;
1150     case PROP_BORDER_RIGHT_STYLE:
1151       fo_table_and_caption_set_border_right_style (fo_fo, g_value_get_object (value));
1152       break;
1153     case PROP_BORDER_RIGHT_WIDTH:
1154       fo_table_and_caption_set_border_right_width (fo_fo, g_value_get_object (value));
1155       break;
1156     case PROP_BORDER_START_COLOR:
1157       fo_table_and_caption_set_border_start_color (fo_fo, g_value_get_object (value));
1158       break;
1159     case PROP_BORDER_START_STYLE:
1160       fo_table_and_caption_set_border_start_style (fo_fo, g_value_get_object (value));
1161       break;
1162     case PROP_BORDER_START_WIDTH:
1163       fo_table_and_caption_set_border_start_width (fo_fo, g_value_get_object (value));
1164       break;
1165     case PROP_BORDER_TOP_COLOR:
1166       fo_table_and_caption_set_border_top_color (fo_fo, g_value_get_object (value));
1167       break;
1168     case PROP_BORDER_TOP_STYLE:
1169       fo_table_and_caption_set_border_top_style (fo_fo, g_value_get_object (value));
1170       break;
1171     case PROP_BORDER_TOP_WIDTH:
1172       fo_table_and_caption_set_border_top_width (fo_fo, g_value_get_object (value));
1173       break;
1174     case PROP_BREAK_AFTER:
1175       fo_table_and_caption_set_break_after (fo_fo, g_value_get_object (value));
1176       break;
1177     case PROP_BREAK_BEFORE:
1178       fo_table_and_caption_set_break_before (fo_fo, g_value_get_object (value));
1179       break;
1180     case PROP_END_INDENT:
1181       fo_table_and_caption_set_end_indent (fo_fo, g_value_get_object (value));
1182       break;
1183     case PROP_ID:
1184       fo_table_and_caption_set_id (fo_fo, g_value_get_object (value));
1185       break;
1186     case PROP_KEEP_TOGETHER:
1187       fo_table_and_caption_set_keep_together (fo_fo, g_value_get_object (value));
1188       break;
1189     case PROP_KEEP_TOGETHER_WITHIN_COLUMN:
1190       fo_table_and_caption_set_keep_together_within_column (fo_fo, g_value_get_object (value));
1191       break;
1192     case PROP_KEEP_TOGETHER_WITHIN_LINE:
1193       fo_table_and_caption_set_keep_together_within_line (fo_fo, g_value_get_object (value));
1194       break;
1195     case PROP_KEEP_TOGETHER_WITHIN_PAGE:
1196       fo_table_and_caption_set_keep_together_within_page (fo_fo, g_value_get_object (value));
1197       break;
1198     case PROP_KEEP_WITH_NEXT:
1199       fo_table_and_caption_set_keep_with_next (fo_fo, g_value_get_object (value));
1200       break;
1201     case PROP_KEEP_WITH_NEXT_WITHIN_COLUMN:
1202       fo_table_and_caption_set_keep_with_next_within_column (fo_fo, g_value_get_object (value));
1203       break;
1204     case PROP_KEEP_WITH_NEXT_WITHIN_LINE:
1205       fo_table_and_caption_set_keep_with_next_within_line (fo_fo, g_value_get_object (value));
1206       break;
1207     case PROP_KEEP_WITH_NEXT_WITHIN_PAGE:
1208       fo_table_and_caption_set_keep_with_next_within_page (fo_fo, g_value_get_object (value));
1209       break;
1210     case PROP_KEEP_WITH_PREVIOUS:
1211       fo_table_and_caption_set_keep_with_previous (fo_fo, g_value_get_object (value));
1212       break;
1213     case PROP_KEEP_WITH_PREVIOUS_WITHIN_COLUMN:
1214       fo_table_and_caption_set_keep_with_previous_within_column (fo_fo, g_value_get_object (value));
1215       break;
1216     case PROP_KEEP_WITH_PREVIOUS_WITHIN_LINE:
1217       fo_table_and_caption_set_keep_with_previous_within_line (fo_fo, g_value_get_object (value));
1218       break;
1219     case PROP_KEEP_WITH_PREVIOUS_WITHIN_PAGE:
1220       fo_table_and_caption_set_keep_with_previous_within_page (fo_fo, g_value_get_object (value));
1221       break;
1222     case PROP_MARGIN_BOTTOM:
1223       fo_table_and_caption_set_margin_bottom (fo_fo, g_value_get_object (value));
1224       break;
1225     case PROP_MARGIN_LEFT:
1226       fo_table_and_caption_set_margin_left (fo_fo, g_value_get_object (value));
1227       break;
1228     case PROP_MARGIN_RIGHT:
1229       fo_table_and_caption_set_margin_right (fo_fo, g_value_get_object (value));
1230       break;
1231     case PROP_MARGIN_TOP:
1232       fo_table_and_caption_set_margin_top (fo_fo, g_value_get_object (value));
1233       break;
1234     case PROP_PADDING_AFTER:
1235       fo_table_and_caption_set_padding_after (fo_fo, g_value_get_object (value));
1236       break;
1237     case PROP_PADDING_BEFORE:
1238       fo_table_and_caption_set_padding_before (fo_fo, g_value_get_object (value));
1239       break;
1240     case PROP_PADDING_BOTTOM:
1241       fo_table_and_caption_set_padding_bottom (fo_fo, g_value_get_object (value));
1242       break;
1243     case PROP_PADDING_END:
1244       fo_table_and_caption_set_padding_end (fo_fo, g_value_get_object (value));
1245       break;
1246     case PROP_PADDING_LEFT:
1247       fo_table_and_caption_set_padding_left (fo_fo, g_value_get_object (value));
1248       break;
1249     case PROP_PADDING_RIGHT:
1250       fo_table_and_caption_set_padding_right (fo_fo, g_value_get_object (value));
1251       break;
1252     case PROP_PADDING_START:
1253       fo_table_and_caption_set_padding_start (fo_fo, g_value_get_object (value));
1254       break;
1255     case PROP_PADDING_TOP:
1256       fo_table_and_caption_set_padding_top (fo_fo, g_value_get_object (value));
1257       break;
1258     case PROP_ROLE:
1259       fo_table_and_caption_set_role (fo_fo, g_value_get_object (value));
1260       break;
1261     case PROP_SOURCE_DOCUMENT:
1262       fo_table_and_caption_set_source_document (fo_fo, g_value_get_object (value));
1263       break;
1264     case PROP_SPACE_AFTER:
1265       fo_table_and_caption_set_space_after (fo_fo, g_value_get_object (value));
1266       break;
1267     case PROP_SPACE_BEFORE:
1268       fo_table_and_caption_set_space_before (fo_fo, g_value_get_object (value));
1269       break;
1270     case PROP_START_INDENT:
1271       fo_table_and_caption_set_start_indent (fo_fo, g_value_get_object (value));
1272       break;
1273     case PROP_TEXT_ALIGN:
1274       fo_table_and_caption_set_text_align (fo_fo, g_value_get_object (value));
1275       break;
1276     default:
1277       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
1278       break;
1279     }
1280 }
1281 
1282 /**
1283  * fo_table_and_caption_new:
1284  *
1285  * Creates a new #FoTableAndCaption initialized to default value.
1286  *
1287  * Return value: the new #FoTableAndCaption.
1288  **/
1289 FoFo*
fo_table_and_caption_new(void)1290 fo_table_and_caption_new (void)
1291 {
1292   return FO_FO (g_object_new (fo_table_and_caption_get_type (),
1293                               NULL));
1294 }
1295 
1296 /**
1297  * fo_table_and_caption_validate_content:
1298  * @fo:    #FoTableAndCaption object to validate.
1299  * @error: #GError indicating error condition, if any.
1300  *
1301  * Validate the content model, i.e., the structure, of the object.
1302  * Return value matches #GNodeTraverseFunc model: %FALSE indicates
1303  * content model is correct, or %TRUE indicates an error.  When used
1304  * with fo_node_traverse(), returning %TRUE stops the traversal.
1305  *
1306  * Content model: (table-caption?, table)
1307  *
1308  * Return value: %FALSE if content model okay, %TRUE if not.
1309  **/
1310 gboolean
fo_table_and_caption_validate_content(FoFo * fo,GError ** error)1311 fo_table_and_caption_validate_content (FoFo    *fo,
1312                                        GError **error)
1313 {
1314   FoNode *child_node;
1315   GError *tmp_error;
1316 
1317   g_return_val_if_fail (fo != NULL, TRUE);
1318   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo), TRUE);
1319   g_return_val_if_fail (error == NULL || *error == NULL, TRUE);
1320 
1321   fo_fo_trim_whitespace_children (fo);
1322 
1323   child_node = fo_node_first_child (FO_NODE (fo));
1324 
1325   if (!child_node)
1326     goto error;
1327 
1328   if (FO_IS_TABLE_CAPTION (child_node))
1329     {
1330       child_node = fo_node_next_sibling (child_node);
1331     }
1332 
1333   if (!child_node ||
1334       !FO_IS_TABLE (child_node))
1335     goto error;
1336 
1337   child_node = fo_node_next_sibling (child_node);
1338 
1339   if (child_node)
1340     goto error;
1341 
1342   return FALSE;
1343 
1344  error:
1345   tmp_error = g_error_new (FO_FO_ERROR,
1346 			   FO_FO_ERROR_INVALID_CONTENT,
1347 			   _(fo_fo_error_messages[FO_FO_ERROR_INVALID_CONTENT]),
1348 			   fo_object_sprintf (fo));
1349 
1350   return fo_object_log_or_propagate_error (FO_OBJECT (fo),
1351 					   error,
1352 					   tmp_error);
1353 }
1354 
1355 /**
1356  * fo_table_and_caption_validate:
1357  * @fo:              #FoTableAndCaption object to validate.
1358  * @current_context: #FoContext associated with current object.
1359  * @parent_context:  #FoContext associated with parent FO.
1360  * @error:           Information about any error that has occurred.
1361  *
1362  * Validate and possibly update interrelated property values in
1363  * @current_context, then update @fo property values.  Set @error if
1364  * an error occurred.
1365  **/
1366 void
fo_table_and_caption_validate(FoFo * fo,FoContext * current_context,FoContext * parent_context,GError ** error)1367 fo_table_and_caption_validate (FoFo      *fo,
1368                                FoContext *current_context,
1369                                FoContext *parent_context,
1370                                GError   **error)
1371 {
1372   FoTableAndCaption *fo_table_and_caption;
1373 
1374   g_return_if_fail (fo != NULL);
1375   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo));
1376   g_return_if_fail (FO_IS_CONTEXT (current_context));
1377   g_return_if_fail (FO_IS_CONTEXT (parent_context));
1378   g_return_if_fail (error == NULL || *error == NULL);
1379 
1380   fo_table_and_caption = FO_TABLE_AND_CAPTION (fo);
1381 
1382   fo_context_merge (current_context, parent_context);
1383   fo_fo_update_from_context (fo, current_context);
1384 }
1385 
1386 /**
1387  * fo_table_and_caption_update_from_context:
1388  * @fo:      The #FoFo object.
1389  * @context: The #FoContext object from which to update the properties of @fo.
1390  *
1391  * Sets the properties of @fo to the corresponding property values in @context.
1392  **/
1393 void
fo_table_and_caption_update_from_context(FoFo * fo,FoContext * context)1394 fo_table_and_caption_update_from_context (FoFo      *fo,
1395                                           FoContext *context)
1396 {
1397   g_return_if_fail (fo != NULL);
1398   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo));
1399   g_return_if_fail (context != NULL);
1400   g_return_if_fail (FO_IS_CONTEXT (context));
1401 
1402   fo_table_and_caption_set_background_color (fo,
1403 			  fo_context_get_background_color (context));
1404   fo_table_and_caption_set_background_image (fo,
1405 			  fo_context_get_background_image (context));
1406   fo_table_and_caption_set_border_after_color (fo,
1407 			  fo_context_get_border_after_color (context));
1408   fo_table_and_caption_set_border_after_style (fo,
1409 			  fo_context_get_border_after_style (context));
1410   fo_table_and_caption_set_border_after_width (fo,
1411 			  fo_context_get_border_after_width (context));
1412   fo_table_and_caption_set_border_before_color (fo,
1413 			  fo_context_get_border_before_color (context));
1414   fo_table_and_caption_set_border_before_style (fo,
1415 			  fo_context_get_border_before_style (context));
1416   fo_table_and_caption_set_border_before_width (fo,
1417 			  fo_context_get_border_before_width (context));
1418   fo_table_and_caption_set_border_bottom_color (fo,
1419 			  fo_context_get_border_bottom_color (context));
1420   fo_table_and_caption_set_border_bottom_style (fo,
1421 			  fo_context_get_border_bottom_style (context));
1422   fo_table_and_caption_set_border_bottom_width (fo,
1423 			  fo_context_get_border_bottom_width (context));
1424   fo_table_and_caption_set_border_end_color (fo,
1425 			  fo_context_get_border_end_color (context));
1426   fo_table_and_caption_set_border_end_style (fo,
1427 			  fo_context_get_border_end_style (context));
1428   fo_table_and_caption_set_border_end_width (fo,
1429 			  fo_context_get_border_end_width (context));
1430   fo_table_and_caption_set_border_left_color (fo,
1431 			  fo_context_get_border_left_color (context));
1432   fo_table_and_caption_set_border_left_style (fo,
1433 			  fo_context_get_border_left_style (context));
1434   fo_table_and_caption_set_border_left_width (fo,
1435 			  fo_context_get_border_left_width (context));
1436   fo_table_and_caption_set_border_right_color (fo,
1437 			  fo_context_get_border_right_color (context));
1438   fo_table_and_caption_set_border_right_style (fo,
1439 			  fo_context_get_border_right_style (context));
1440   fo_table_and_caption_set_border_right_width (fo,
1441 			  fo_context_get_border_right_width (context));
1442   fo_table_and_caption_set_border_start_color (fo,
1443 			  fo_context_get_border_start_color (context));
1444   fo_table_and_caption_set_border_start_style (fo,
1445 			  fo_context_get_border_start_style (context));
1446   fo_table_and_caption_set_border_start_width (fo,
1447 			  fo_context_get_border_start_width (context));
1448   fo_table_and_caption_set_border_top_color (fo,
1449 			  fo_context_get_border_top_color (context));
1450   fo_table_and_caption_set_border_top_style (fo,
1451 			  fo_context_get_border_top_style (context));
1452   fo_table_and_caption_set_border_top_width (fo,
1453 			  fo_context_get_border_top_width (context));
1454   fo_table_and_caption_set_break_after (fo,
1455 			  fo_context_get_break_after (context));
1456   fo_table_and_caption_set_break_before (fo,
1457 			  fo_context_get_break_before (context));
1458   fo_table_and_caption_set_end_indent (fo,
1459 			  fo_context_get_end_indent (context));
1460   fo_table_and_caption_set_id (fo,
1461 			  fo_context_get_id (context));
1462   fo_table_and_caption_set_keep_together (fo,
1463 			  fo_context_get_keep_together (context));
1464   fo_table_and_caption_set_keep_together_within_column (fo,
1465 			  fo_context_get_keep_together_within_column (context));
1466   fo_table_and_caption_set_keep_together_within_line (fo,
1467 			  fo_context_get_keep_together_within_line (context));
1468   fo_table_and_caption_set_keep_together_within_page (fo,
1469 			  fo_context_get_keep_together_within_page (context));
1470   fo_table_and_caption_set_keep_with_next (fo,
1471 			  fo_context_get_keep_with_next (context));
1472   fo_table_and_caption_set_keep_with_next_within_column (fo,
1473 			  fo_context_get_keep_with_next_within_column (context));
1474   fo_table_and_caption_set_keep_with_next_within_line (fo,
1475 			  fo_context_get_keep_with_next_within_line (context));
1476   fo_table_and_caption_set_keep_with_next_within_page (fo,
1477 			  fo_context_get_keep_with_next_within_page (context));
1478   fo_table_and_caption_set_keep_with_previous (fo,
1479 			  fo_context_get_keep_with_previous (context));
1480   fo_table_and_caption_set_keep_with_previous_within_column (fo,
1481 			  fo_context_get_keep_with_previous_within_column (context));
1482   fo_table_and_caption_set_keep_with_previous_within_line (fo,
1483 			  fo_context_get_keep_with_previous_within_line (context));
1484   fo_table_and_caption_set_keep_with_previous_within_page (fo,
1485 			  fo_context_get_keep_with_previous_within_page (context));
1486   fo_table_and_caption_set_margin_bottom (fo,
1487 			  fo_context_get_margin_bottom (context));
1488   fo_table_and_caption_set_margin_left (fo,
1489 			  fo_context_get_margin_left (context));
1490   fo_table_and_caption_set_margin_right (fo,
1491 			  fo_context_get_margin_right (context));
1492   fo_table_and_caption_set_margin_top (fo,
1493 			  fo_context_get_margin_top (context));
1494   fo_table_and_caption_set_padding_after (fo,
1495 			  fo_context_get_padding_after (context));
1496   fo_table_and_caption_set_padding_before (fo,
1497 			  fo_context_get_padding_before (context));
1498   fo_table_and_caption_set_padding_bottom (fo,
1499 			  fo_context_get_padding_bottom (context));
1500   fo_table_and_caption_set_padding_end (fo,
1501 			  fo_context_get_padding_end (context));
1502   fo_table_and_caption_set_padding_left (fo,
1503 			  fo_context_get_padding_left (context));
1504   fo_table_and_caption_set_padding_right (fo,
1505 			  fo_context_get_padding_right (context));
1506   fo_table_and_caption_set_padding_start (fo,
1507 			  fo_context_get_padding_start (context));
1508   fo_table_and_caption_set_padding_top (fo,
1509 			  fo_context_get_padding_top (context));
1510   fo_table_and_caption_set_role (fo,
1511 			  fo_context_get_role (context));
1512   fo_table_and_caption_set_source_document (fo,
1513 			  fo_context_get_source_document (context));
1514   fo_table_and_caption_set_space_after (fo,
1515 			  fo_context_get_space_after (context));
1516   fo_table_and_caption_set_space_before (fo,
1517 			  fo_context_get_space_before (context));
1518   fo_table_and_caption_set_start_indent (fo,
1519 			  fo_context_get_start_indent (context));
1520   fo_table_and_caption_set_text_align (fo,
1521 			  fo_context_get_text_align (context));
1522 }
1523 
1524 /**
1525  * fo_table_and_caption_debug_dump_properties:
1526  * @fo:    The #FoFo object.
1527  * @depth: Indent level to add to the output.
1528  *
1529  * Calls #fo_object_debug_dump on each property of @fo then calls
1530  * debug_dump_properties method of parent class.
1531  **/
1532 void
fo_table_and_caption_debug_dump_properties(FoFo * fo,gint depth)1533 fo_table_and_caption_debug_dump_properties (FoFo *fo,
1534                                             gint  depth)
1535 {
1536   FoTableAndCaption *fo_table_and_caption;
1537 
1538   g_return_if_fail (fo != NULL);
1539   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo));
1540 
1541   fo_table_and_caption = FO_TABLE_AND_CAPTION (fo);
1542 
1543   fo_object_debug_dump (fo_table_and_caption->background_color, depth);
1544   fo_object_debug_dump (fo_table_and_caption->background_image, depth);
1545   fo_object_debug_dump (fo_table_and_caption->border_after_color, depth);
1546   fo_object_debug_dump (fo_table_and_caption->border_after_style, depth);
1547   fo_object_debug_dump (fo_table_and_caption->border_after_width, depth);
1548   fo_object_debug_dump (fo_table_and_caption->border_before_color, depth);
1549   fo_object_debug_dump (fo_table_and_caption->border_before_style, depth);
1550   fo_object_debug_dump (fo_table_and_caption->border_before_width, depth);
1551   fo_object_debug_dump (fo_table_and_caption->border_bottom_color, depth);
1552   fo_object_debug_dump (fo_table_and_caption->border_bottom_style, depth);
1553   fo_object_debug_dump (fo_table_and_caption->border_bottom_width, depth);
1554   fo_object_debug_dump (fo_table_and_caption->border_end_color, depth);
1555   fo_object_debug_dump (fo_table_and_caption->border_end_style, depth);
1556   fo_object_debug_dump (fo_table_and_caption->border_end_width, depth);
1557   fo_object_debug_dump (fo_table_and_caption->border_left_color, depth);
1558   fo_object_debug_dump (fo_table_and_caption->border_left_style, depth);
1559   fo_object_debug_dump (fo_table_and_caption->border_left_width, depth);
1560   fo_object_debug_dump (fo_table_and_caption->border_right_color, depth);
1561   fo_object_debug_dump (fo_table_and_caption->border_right_style, depth);
1562   fo_object_debug_dump (fo_table_and_caption->border_right_width, depth);
1563   fo_object_debug_dump (fo_table_and_caption->border_start_color, depth);
1564   fo_object_debug_dump (fo_table_and_caption->border_start_style, depth);
1565   fo_object_debug_dump (fo_table_and_caption->border_start_width, depth);
1566   fo_object_debug_dump (fo_table_and_caption->border_top_color, depth);
1567   fo_object_debug_dump (fo_table_and_caption->border_top_style, depth);
1568   fo_object_debug_dump (fo_table_and_caption->border_top_width, depth);
1569   fo_object_debug_dump (fo_table_and_caption->break_after, depth);
1570   fo_object_debug_dump (fo_table_and_caption->break_before, depth);
1571   fo_object_debug_dump (fo_table_and_caption->end_indent, depth);
1572   fo_object_debug_dump (fo_table_and_caption->id, depth);
1573   fo_object_debug_dump (fo_table_and_caption->keep_together, depth);
1574   fo_object_debug_dump (fo_table_and_caption->keep_together_within_column, depth);
1575   fo_object_debug_dump (fo_table_and_caption->keep_together_within_line, depth);
1576   fo_object_debug_dump (fo_table_and_caption->keep_together_within_page, depth);
1577   fo_object_debug_dump (fo_table_and_caption->keep_with_next, depth);
1578   fo_object_debug_dump (fo_table_and_caption->keep_with_next_within_column, depth);
1579   fo_object_debug_dump (fo_table_and_caption->keep_with_next_within_line, depth);
1580   fo_object_debug_dump (fo_table_and_caption->keep_with_next_within_page, depth);
1581   fo_object_debug_dump (fo_table_and_caption->keep_with_previous, depth);
1582   fo_object_debug_dump (fo_table_and_caption->keep_with_previous_within_column, depth);
1583   fo_object_debug_dump (fo_table_and_caption->keep_with_previous_within_line, depth);
1584   fo_object_debug_dump (fo_table_and_caption->keep_with_previous_within_page, depth);
1585   fo_object_debug_dump (fo_table_and_caption->margin_bottom, depth);
1586   fo_object_debug_dump (fo_table_and_caption->margin_left, depth);
1587   fo_object_debug_dump (fo_table_and_caption->margin_right, depth);
1588   fo_object_debug_dump (fo_table_and_caption->margin_top, depth);
1589   fo_object_debug_dump (fo_table_and_caption->padding_after, depth);
1590   fo_object_debug_dump (fo_table_and_caption->padding_before, depth);
1591   fo_object_debug_dump (fo_table_and_caption->padding_bottom, depth);
1592   fo_object_debug_dump (fo_table_and_caption->padding_end, depth);
1593   fo_object_debug_dump (fo_table_and_caption->padding_left, depth);
1594   fo_object_debug_dump (fo_table_and_caption->padding_right, depth);
1595   fo_object_debug_dump (fo_table_and_caption->padding_start, depth);
1596   fo_object_debug_dump (fo_table_and_caption->padding_top, depth);
1597   fo_object_debug_dump (fo_table_and_caption->role, depth);
1598   fo_object_debug_dump (fo_table_and_caption->source_document, depth);
1599   fo_object_debug_dump (fo_table_and_caption->space_after, depth);
1600   fo_object_debug_dump (fo_table_and_caption->space_before, depth);
1601   fo_object_debug_dump (fo_table_and_caption->start_indent, depth);
1602   fo_object_debug_dump (fo_table_and_caption->text_align, depth);
1603 
1604   FO_FO_CLASS (parent_class)->debug_dump_properties (fo, depth + 1);
1605 }
1606 
1607 /**
1608  * fo_table_and_caption_get_background_color:
1609  * @fo_fo: The @FoFo object.
1610  *
1611  * Gets the "background-color" property of @fo_fo.
1612  *
1613  * Return value: The "background-color" property value.
1614 **/
1615 FoProperty *
fo_table_and_caption_get_background_color(FoFo * fo_fo)1616 fo_table_and_caption_get_background_color (FoFo *fo_fo)
1617 {
1618   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1619 
1620   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1621   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1622 
1623   return fo_table_and_caption->background_color;
1624 }
1625 
1626 /**
1627  * fo_table_and_caption_set_background_color:
1628  * @fo_fo: The #FoFo object.
1629  * @new_background_color: The new "background-color" property value.
1630  *
1631  * Sets the "background-color" property of @fo_fo to @new_background_color.
1632  **/
1633 void
fo_table_and_caption_set_background_color(FoFo * fo_fo,FoProperty * new_background_color)1634 fo_table_and_caption_set_background_color (FoFo *fo_fo,
1635 		         FoProperty *new_background_color)
1636 {
1637   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1638 
1639   g_return_if_fail (fo_table_and_caption != NULL);
1640   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1641   g_return_if_fail ((new_background_color == NULL) ||
1642 		    FO_IS_PROPERTY_BACKGROUND_COLOR (new_background_color));
1643 
1644   if (new_background_color != NULL)
1645     {
1646       g_object_ref (new_background_color);
1647     }
1648   if (fo_table_and_caption->background_color != NULL)
1649     {
1650       g_object_unref (fo_table_and_caption->background_color);
1651     }
1652   fo_table_and_caption->background_color = new_background_color;
1653   /*g_object_notify (G_OBJECT (fo_table_and_caption), "background-color");*/
1654 }
1655 
1656 /**
1657  * fo_table_and_caption_get_background_image:
1658  * @fo_fo: The @FoFo object.
1659  *
1660  * Gets the "background-image" property of @fo_fo.
1661  *
1662  * Return value: The "background-image" property value.
1663 **/
1664 FoProperty *
fo_table_and_caption_get_background_image(FoFo * fo_fo)1665 fo_table_and_caption_get_background_image (FoFo *fo_fo)
1666 {
1667   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1668 
1669   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1670   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1671 
1672   return fo_table_and_caption->background_image;
1673 }
1674 
1675 /**
1676  * fo_table_and_caption_set_background_image:
1677  * @fo_fo: The #FoFo object.
1678  * @new_background_image: The new "background-image" property value.
1679  *
1680  * Sets the "background-image" property of @fo_fo to @new_background_image.
1681  **/
1682 void
fo_table_and_caption_set_background_image(FoFo * fo_fo,FoProperty * new_background_image)1683 fo_table_and_caption_set_background_image (FoFo *fo_fo,
1684 		         FoProperty *new_background_image)
1685 {
1686   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1687 
1688   g_return_if_fail (fo_table_and_caption != NULL);
1689   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1690   g_return_if_fail ((new_background_image == NULL) ||
1691 		    FO_IS_PROPERTY_BACKGROUND_IMAGE (new_background_image));
1692 
1693   if (new_background_image != NULL)
1694     {
1695       g_object_ref (new_background_image);
1696     }
1697   if (fo_table_and_caption->background_image != NULL)
1698     {
1699       g_object_unref (fo_table_and_caption->background_image);
1700     }
1701   fo_table_and_caption->background_image = new_background_image;
1702   /*g_object_notify (G_OBJECT (fo_table_and_caption), "background-image");*/
1703 }
1704 
1705 /**
1706  * fo_table_and_caption_get_border_after_color:
1707  * @fo_fo: The @FoFo object.
1708  *
1709  * Gets the "border-after-color" property of @fo_fo.
1710  *
1711  * Return value: The "border-after-color" property value.
1712 **/
1713 FoProperty *
fo_table_and_caption_get_border_after_color(FoFo * fo_fo)1714 fo_table_and_caption_get_border_after_color (FoFo *fo_fo)
1715 {
1716   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1717 
1718   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1719   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1720 
1721   return fo_table_and_caption->border_after_color;
1722 }
1723 
1724 /**
1725  * fo_table_and_caption_set_border_after_color:
1726  * @fo_fo: The #FoFo object.
1727  * @new_border_after_color: The new "border-after-color" property value.
1728  *
1729  * Sets the "border-after-color" property of @fo_fo to @new_border_after_color.
1730  **/
1731 void
fo_table_and_caption_set_border_after_color(FoFo * fo_fo,FoProperty * new_border_after_color)1732 fo_table_and_caption_set_border_after_color (FoFo *fo_fo,
1733 		         FoProperty *new_border_after_color)
1734 {
1735   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1736 
1737   g_return_if_fail (fo_table_and_caption != NULL);
1738   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1739   g_return_if_fail ((new_border_after_color == NULL) ||
1740 		    FO_IS_PROPERTY_BORDER_AFTER_COLOR (new_border_after_color));
1741 
1742   if (new_border_after_color != NULL)
1743     {
1744       g_object_ref (new_border_after_color);
1745     }
1746   if (fo_table_and_caption->border_after_color != NULL)
1747     {
1748       g_object_unref (fo_table_and_caption->border_after_color);
1749     }
1750   fo_table_and_caption->border_after_color = new_border_after_color;
1751   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-after-color");*/
1752 }
1753 
1754 /**
1755  * fo_table_and_caption_get_border_after_style:
1756  * @fo_fo: The @FoFo object.
1757  *
1758  * Gets the "border-after-style" property of @fo_fo.
1759  *
1760  * Return value: The "border-after-style" property value.
1761 **/
1762 FoProperty *
fo_table_and_caption_get_border_after_style(FoFo * fo_fo)1763 fo_table_and_caption_get_border_after_style (FoFo *fo_fo)
1764 {
1765   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1766 
1767   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1768   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1769 
1770   return fo_table_and_caption->border_after_style;
1771 }
1772 
1773 /**
1774  * fo_table_and_caption_set_border_after_style:
1775  * @fo_fo: The #FoFo object.
1776  * @new_border_after_style: The new "border-after-style" property value.
1777  *
1778  * Sets the "border-after-style" property of @fo_fo to @new_border_after_style.
1779  **/
1780 void
fo_table_and_caption_set_border_after_style(FoFo * fo_fo,FoProperty * new_border_after_style)1781 fo_table_and_caption_set_border_after_style (FoFo *fo_fo,
1782 		         FoProperty *new_border_after_style)
1783 {
1784   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1785 
1786   g_return_if_fail (fo_table_and_caption != NULL);
1787   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1788   g_return_if_fail ((new_border_after_style == NULL) ||
1789 		    FO_IS_PROPERTY_BORDER_AFTER_STYLE (new_border_after_style));
1790 
1791   if (new_border_after_style != NULL)
1792     {
1793       g_object_ref (new_border_after_style);
1794     }
1795   if (fo_table_and_caption->border_after_style != NULL)
1796     {
1797       g_object_unref (fo_table_and_caption->border_after_style);
1798     }
1799   fo_table_and_caption->border_after_style = new_border_after_style;
1800   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-after-style");*/
1801 }
1802 
1803 /**
1804  * fo_table_and_caption_get_border_after_width:
1805  * @fo_fo: The @FoFo object.
1806  *
1807  * Gets the "border-after-width" property of @fo_fo.
1808  *
1809  * Return value: The "border-after-width" property value.
1810 **/
1811 FoProperty *
fo_table_and_caption_get_border_after_width(FoFo * fo_fo)1812 fo_table_and_caption_get_border_after_width (FoFo *fo_fo)
1813 {
1814   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1815 
1816   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1817   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1818 
1819   return fo_table_and_caption->border_after_width;
1820 }
1821 
1822 /**
1823  * fo_table_and_caption_set_border_after_width:
1824  * @fo_fo: The #FoFo object.
1825  * @new_border_after_width: The new "border-after-width" property value.
1826  *
1827  * Sets the "border-after-width" property of @fo_fo to @new_border_after_width.
1828  **/
1829 void
fo_table_and_caption_set_border_after_width(FoFo * fo_fo,FoProperty * new_border_after_width)1830 fo_table_and_caption_set_border_after_width (FoFo *fo_fo,
1831 		         FoProperty *new_border_after_width)
1832 {
1833   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1834 
1835   g_return_if_fail (fo_table_and_caption != NULL);
1836   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1837   g_return_if_fail ((new_border_after_width == NULL) ||
1838 		    FO_IS_PROPERTY_BORDER_AFTER_WIDTH (new_border_after_width));
1839 
1840   if (new_border_after_width != NULL)
1841     {
1842       g_object_ref (new_border_after_width);
1843     }
1844   if (fo_table_and_caption->border_after_width != NULL)
1845     {
1846       g_object_unref (fo_table_and_caption->border_after_width);
1847     }
1848   fo_table_and_caption->border_after_width = new_border_after_width;
1849   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-after-width");*/
1850 }
1851 
1852 /**
1853  * fo_table_and_caption_get_border_before_color:
1854  * @fo_fo: The @FoFo object.
1855  *
1856  * Gets the "border-before-color" property of @fo_fo.
1857  *
1858  * Return value: The "border-before-color" property value.
1859 **/
1860 FoProperty *
fo_table_and_caption_get_border_before_color(FoFo * fo_fo)1861 fo_table_and_caption_get_border_before_color (FoFo *fo_fo)
1862 {
1863   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1864 
1865   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1866   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1867 
1868   return fo_table_and_caption->border_before_color;
1869 }
1870 
1871 /**
1872  * fo_table_and_caption_set_border_before_color:
1873  * @fo_fo: The #FoFo object.
1874  * @new_border_before_color: The new "border-before-color" property value.
1875  *
1876  * Sets the "border-before-color" property of @fo_fo to @new_border_before_color.
1877  **/
1878 void
fo_table_and_caption_set_border_before_color(FoFo * fo_fo,FoProperty * new_border_before_color)1879 fo_table_and_caption_set_border_before_color (FoFo *fo_fo,
1880 		         FoProperty *new_border_before_color)
1881 {
1882   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1883 
1884   g_return_if_fail (fo_table_and_caption != NULL);
1885   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1886   g_return_if_fail ((new_border_before_color == NULL) ||
1887 		    FO_IS_PROPERTY_BORDER_BEFORE_COLOR (new_border_before_color));
1888 
1889   if (new_border_before_color != NULL)
1890     {
1891       g_object_ref (new_border_before_color);
1892     }
1893   if (fo_table_and_caption->border_before_color != NULL)
1894     {
1895       g_object_unref (fo_table_and_caption->border_before_color);
1896     }
1897   fo_table_and_caption->border_before_color = new_border_before_color;
1898   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-before-color");*/
1899 }
1900 
1901 /**
1902  * fo_table_and_caption_get_border_before_style:
1903  * @fo_fo: The @FoFo object.
1904  *
1905  * Gets the "border-before-style" property of @fo_fo.
1906  *
1907  * Return value: The "border-before-style" property value.
1908 **/
1909 FoProperty *
fo_table_and_caption_get_border_before_style(FoFo * fo_fo)1910 fo_table_and_caption_get_border_before_style (FoFo *fo_fo)
1911 {
1912   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1913 
1914   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1915   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1916 
1917   return fo_table_and_caption->border_before_style;
1918 }
1919 
1920 /**
1921  * fo_table_and_caption_set_border_before_style:
1922  * @fo_fo: The #FoFo object.
1923  * @new_border_before_style: The new "border-before-style" property value.
1924  *
1925  * Sets the "border-before-style" property of @fo_fo to @new_border_before_style.
1926  **/
1927 void
fo_table_and_caption_set_border_before_style(FoFo * fo_fo,FoProperty * new_border_before_style)1928 fo_table_and_caption_set_border_before_style (FoFo *fo_fo,
1929 		         FoProperty *new_border_before_style)
1930 {
1931   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1932 
1933   g_return_if_fail (fo_table_and_caption != NULL);
1934   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1935   g_return_if_fail ((new_border_before_style == NULL) ||
1936 		    FO_IS_PROPERTY_BORDER_BEFORE_STYLE (new_border_before_style));
1937 
1938   if (new_border_before_style != NULL)
1939     {
1940       g_object_ref (new_border_before_style);
1941     }
1942   if (fo_table_and_caption->border_before_style != NULL)
1943     {
1944       g_object_unref (fo_table_and_caption->border_before_style);
1945     }
1946   fo_table_and_caption->border_before_style = new_border_before_style;
1947   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-before-style");*/
1948 }
1949 
1950 /**
1951  * fo_table_and_caption_get_border_before_width:
1952  * @fo_fo: The @FoFo object.
1953  *
1954  * Gets the "border-before-width" property of @fo_fo.
1955  *
1956  * Return value: The "border-before-width" property value.
1957 **/
1958 FoProperty *
fo_table_and_caption_get_border_before_width(FoFo * fo_fo)1959 fo_table_and_caption_get_border_before_width (FoFo *fo_fo)
1960 {
1961   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1962 
1963   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
1964   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
1965 
1966   return fo_table_and_caption->border_before_width;
1967 }
1968 
1969 /**
1970  * fo_table_and_caption_set_border_before_width:
1971  * @fo_fo: The #FoFo object.
1972  * @new_border_before_width: The new "border-before-width" property value.
1973  *
1974  * Sets the "border-before-width" property of @fo_fo to @new_border_before_width.
1975  **/
1976 void
fo_table_and_caption_set_border_before_width(FoFo * fo_fo,FoProperty * new_border_before_width)1977 fo_table_and_caption_set_border_before_width (FoFo *fo_fo,
1978 		         FoProperty *new_border_before_width)
1979 {
1980   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
1981 
1982   g_return_if_fail (fo_table_and_caption != NULL);
1983   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
1984   g_return_if_fail ((new_border_before_width == NULL) ||
1985 		    FO_IS_PROPERTY_BORDER_BEFORE_WIDTH (new_border_before_width));
1986 
1987   if (new_border_before_width != NULL)
1988     {
1989       g_object_ref (new_border_before_width);
1990     }
1991   if (fo_table_and_caption->border_before_width != NULL)
1992     {
1993       g_object_unref (fo_table_and_caption->border_before_width);
1994     }
1995   fo_table_and_caption->border_before_width = new_border_before_width;
1996   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-before-width");*/
1997 }
1998 
1999 /**
2000  * fo_table_and_caption_get_border_bottom_color:
2001  * @fo_fo: The @FoFo object.
2002  *
2003  * Gets the "border-bottom-color" property of @fo_fo.
2004  *
2005  * Return value: The "border-bottom-color" property value.
2006 **/
2007 FoProperty *
fo_table_and_caption_get_border_bottom_color(FoFo * fo_fo)2008 fo_table_and_caption_get_border_bottom_color (FoFo *fo_fo)
2009 {
2010   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2011 
2012   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2013   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2014 
2015   return fo_table_and_caption->border_bottom_color;
2016 }
2017 
2018 /**
2019  * fo_table_and_caption_set_border_bottom_color:
2020  * @fo_fo: The #FoFo object.
2021  * @new_border_bottom_color: The new "border-bottom-color" property value.
2022  *
2023  * Sets the "border-bottom-color" property of @fo_fo to @new_border_bottom_color.
2024  **/
2025 void
fo_table_and_caption_set_border_bottom_color(FoFo * fo_fo,FoProperty * new_border_bottom_color)2026 fo_table_and_caption_set_border_bottom_color (FoFo *fo_fo,
2027 		         FoProperty *new_border_bottom_color)
2028 {
2029   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2030 
2031   g_return_if_fail (fo_table_and_caption != NULL);
2032   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2033   g_return_if_fail ((new_border_bottom_color == NULL) ||
2034 		    FO_IS_PROPERTY_BORDER_BOTTOM_COLOR (new_border_bottom_color));
2035 
2036   if (new_border_bottom_color != NULL)
2037     {
2038       g_object_ref (new_border_bottom_color);
2039     }
2040   if (fo_table_and_caption->border_bottom_color != NULL)
2041     {
2042       g_object_unref (fo_table_and_caption->border_bottom_color);
2043     }
2044   fo_table_and_caption->border_bottom_color = new_border_bottom_color;
2045   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-bottom-color");*/
2046 }
2047 
2048 /**
2049  * fo_table_and_caption_get_border_bottom_style:
2050  * @fo_fo: The @FoFo object.
2051  *
2052  * Gets the "border-bottom-style" property of @fo_fo.
2053  *
2054  * Return value: The "border-bottom-style" property value.
2055 **/
2056 FoProperty *
fo_table_and_caption_get_border_bottom_style(FoFo * fo_fo)2057 fo_table_and_caption_get_border_bottom_style (FoFo *fo_fo)
2058 {
2059   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2060 
2061   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2062   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2063 
2064   return fo_table_and_caption->border_bottom_style;
2065 }
2066 
2067 /**
2068  * fo_table_and_caption_set_border_bottom_style:
2069  * @fo_fo: The #FoFo object.
2070  * @new_border_bottom_style: The new "border-bottom-style" property value.
2071  *
2072  * Sets the "border-bottom-style" property of @fo_fo to @new_border_bottom_style.
2073  **/
2074 void
fo_table_and_caption_set_border_bottom_style(FoFo * fo_fo,FoProperty * new_border_bottom_style)2075 fo_table_and_caption_set_border_bottom_style (FoFo *fo_fo,
2076 		         FoProperty *new_border_bottom_style)
2077 {
2078   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2079 
2080   g_return_if_fail (fo_table_and_caption != NULL);
2081   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2082   g_return_if_fail ((new_border_bottom_style == NULL) ||
2083 		    FO_IS_PROPERTY_BORDER_BOTTOM_STYLE (new_border_bottom_style));
2084 
2085   if (new_border_bottom_style != NULL)
2086     {
2087       g_object_ref (new_border_bottom_style);
2088     }
2089   if (fo_table_and_caption->border_bottom_style != NULL)
2090     {
2091       g_object_unref (fo_table_and_caption->border_bottom_style);
2092     }
2093   fo_table_and_caption->border_bottom_style = new_border_bottom_style;
2094   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-bottom-style");*/
2095 }
2096 
2097 /**
2098  * fo_table_and_caption_get_border_bottom_width:
2099  * @fo_fo: The @FoFo object.
2100  *
2101  * Gets the "border-bottom-width" property of @fo_fo.
2102  *
2103  * Return value: The "border-bottom-width" property value.
2104 **/
2105 FoProperty *
fo_table_and_caption_get_border_bottom_width(FoFo * fo_fo)2106 fo_table_and_caption_get_border_bottom_width (FoFo *fo_fo)
2107 {
2108   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2109 
2110   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2111   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2112 
2113   return fo_table_and_caption->border_bottom_width;
2114 }
2115 
2116 /**
2117  * fo_table_and_caption_set_border_bottom_width:
2118  * @fo_fo: The #FoFo object.
2119  * @new_border_bottom_width: The new "border-bottom-width" property value.
2120  *
2121  * Sets the "border-bottom-width" property of @fo_fo to @new_border_bottom_width.
2122  **/
2123 void
fo_table_and_caption_set_border_bottom_width(FoFo * fo_fo,FoProperty * new_border_bottom_width)2124 fo_table_and_caption_set_border_bottom_width (FoFo *fo_fo,
2125 		         FoProperty *new_border_bottom_width)
2126 {
2127   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2128 
2129   g_return_if_fail (fo_table_and_caption != NULL);
2130   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2131   g_return_if_fail ((new_border_bottom_width == NULL) ||
2132 		    FO_IS_PROPERTY_BORDER_BOTTOM_WIDTH (new_border_bottom_width));
2133 
2134   if (new_border_bottom_width != NULL)
2135     {
2136       g_object_ref (new_border_bottom_width);
2137     }
2138   if (fo_table_and_caption->border_bottom_width != NULL)
2139     {
2140       g_object_unref (fo_table_and_caption->border_bottom_width);
2141     }
2142   fo_table_and_caption->border_bottom_width = new_border_bottom_width;
2143   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-bottom-width");*/
2144 }
2145 
2146 /**
2147  * fo_table_and_caption_get_border_end_color:
2148  * @fo_fo: The @FoFo object.
2149  *
2150  * Gets the "border-end-color" property of @fo_fo.
2151  *
2152  * Return value: The "border-end-color" property value.
2153 **/
2154 FoProperty *
fo_table_and_caption_get_border_end_color(FoFo * fo_fo)2155 fo_table_and_caption_get_border_end_color (FoFo *fo_fo)
2156 {
2157   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2158 
2159   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2160   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2161 
2162   return fo_table_and_caption->border_end_color;
2163 }
2164 
2165 /**
2166  * fo_table_and_caption_set_border_end_color:
2167  * @fo_fo: The #FoFo object.
2168  * @new_border_end_color: The new "border-end-color" property value.
2169  *
2170  * Sets the "border-end-color" property of @fo_fo to @new_border_end_color.
2171  **/
2172 void
fo_table_and_caption_set_border_end_color(FoFo * fo_fo,FoProperty * new_border_end_color)2173 fo_table_and_caption_set_border_end_color (FoFo *fo_fo,
2174 		         FoProperty *new_border_end_color)
2175 {
2176   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2177 
2178   g_return_if_fail (fo_table_and_caption != NULL);
2179   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2180   g_return_if_fail ((new_border_end_color == NULL) ||
2181 		    FO_IS_PROPERTY_BORDER_END_COLOR (new_border_end_color));
2182 
2183   if (new_border_end_color != NULL)
2184     {
2185       g_object_ref (new_border_end_color);
2186     }
2187   if (fo_table_and_caption->border_end_color != NULL)
2188     {
2189       g_object_unref (fo_table_and_caption->border_end_color);
2190     }
2191   fo_table_and_caption->border_end_color = new_border_end_color;
2192   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-end-color");*/
2193 }
2194 
2195 /**
2196  * fo_table_and_caption_get_border_end_style:
2197  * @fo_fo: The @FoFo object.
2198  *
2199  * Gets the "border-end-style" property of @fo_fo.
2200  *
2201  * Return value: The "border-end-style" property value.
2202 **/
2203 FoProperty *
fo_table_and_caption_get_border_end_style(FoFo * fo_fo)2204 fo_table_and_caption_get_border_end_style (FoFo *fo_fo)
2205 {
2206   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2207 
2208   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2209   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2210 
2211   return fo_table_and_caption->border_end_style;
2212 }
2213 
2214 /**
2215  * fo_table_and_caption_set_border_end_style:
2216  * @fo_fo: The #FoFo object.
2217  * @new_border_end_style: The new "border-end-style" property value.
2218  *
2219  * Sets the "border-end-style" property of @fo_fo to @new_border_end_style.
2220  **/
2221 void
fo_table_and_caption_set_border_end_style(FoFo * fo_fo,FoProperty * new_border_end_style)2222 fo_table_and_caption_set_border_end_style (FoFo *fo_fo,
2223 		         FoProperty *new_border_end_style)
2224 {
2225   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2226 
2227   g_return_if_fail (fo_table_and_caption != NULL);
2228   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2229   g_return_if_fail ((new_border_end_style == NULL) ||
2230 		    FO_IS_PROPERTY_BORDER_END_STYLE (new_border_end_style));
2231 
2232   if (new_border_end_style != NULL)
2233     {
2234       g_object_ref (new_border_end_style);
2235     }
2236   if (fo_table_and_caption->border_end_style != NULL)
2237     {
2238       g_object_unref (fo_table_and_caption->border_end_style);
2239     }
2240   fo_table_and_caption->border_end_style = new_border_end_style;
2241   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-end-style");*/
2242 }
2243 
2244 /**
2245  * fo_table_and_caption_get_border_end_width:
2246  * @fo_fo: The @FoFo object.
2247  *
2248  * Gets the "border-end-width" property of @fo_fo.
2249  *
2250  * Return value: The "border-end-width" property value.
2251 **/
2252 FoProperty *
fo_table_and_caption_get_border_end_width(FoFo * fo_fo)2253 fo_table_and_caption_get_border_end_width (FoFo *fo_fo)
2254 {
2255   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2256 
2257   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2258   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2259 
2260   return fo_table_and_caption->border_end_width;
2261 }
2262 
2263 /**
2264  * fo_table_and_caption_set_border_end_width:
2265  * @fo_fo: The #FoFo object.
2266  * @new_border_end_width: The new "border-end-width" property value.
2267  *
2268  * Sets the "border-end-width" property of @fo_fo to @new_border_end_width.
2269  **/
2270 void
fo_table_and_caption_set_border_end_width(FoFo * fo_fo,FoProperty * new_border_end_width)2271 fo_table_and_caption_set_border_end_width (FoFo *fo_fo,
2272 		         FoProperty *new_border_end_width)
2273 {
2274   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2275 
2276   g_return_if_fail (fo_table_and_caption != NULL);
2277   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2278   g_return_if_fail ((new_border_end_width == NULL) ||
2279 		    FO_IS_PROPERTY_BORDER_END_WIDTH (new_border_end_width));
2280 
2281   if (new_border_end_width != NULL)
2282     {
2283       g_object_ref (new_border_end_width);
2284     }
2285   if (fo_table_and_caption->border_end_width != NULL)
2286     {
2287       g_object_unref (fo_table_and_caption->border_end_width);
2288     }
2289   fo_table_and_caption->border_end_width = new_border_end_width;
2290   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-end-width");*/
2291 }
2292 
2293 /**
2294  * fo_table_and_caption_get_border_left_color:
2295  * @fo_fo: The @FoFo object.
2296  *
2297  * Gets the "border-left-color" property of @fo_fo.
2298  *
2299  * Return value: The "border-left-color" property value.
2300 **/
2301 FoProperty *
fo_table_and_caption_get_border_left_color(FoFo * fo_fo)2302 fo_table_and_caption_get_border_left_color (FoFo *fo_fo)
2303 {
2304   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2305 
2306   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2307   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2308 
2309   return fo_table_and_caption->border_left_color;
2310 }
2311 
2312 /**
2313  * fo_table_and_caption_set_border_left_color:
2314  * @fo_fo: The #FoFo object.
2315  * @new_border_left_color: The new "border-left-color" property value.
2316  *
2317  * Sets the "border-left-color" property of @fo_fo to @new_border_left_color.
2318  **/
2319 void
fo_table_and_caption_set_border_left_color(FoFo * fo_fo,FoProperty * new_border_left_color)2320 fo_table_and_caption_set_border_left_color (FoFo *fo_fo,
2321 		         FoProperty *new_border_left_color)
2322 {
2323   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2324 
2325   g_return_if_fail (fo_table_and_caption != NULL);
2326   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2327   g_return_if_fail ((new_border_left_color == NULL) ||
2328 		    FO_IS_PROPERTY_BORDER_LEFT_COLOR (new_border_left_color));
2329 
2330   if (new_border_left_color != NULL)
2331     {
2332       g_object_ref (new_border_left_color);
2333     }
2334   if (fo_table_and_caption->border_left_color != NULL)
2335     {
2336       g_object_unref (fo_table_and_caption->border_left_color);
2337     }
2338   fo_table_and_caption->border_left_color = new_border_left_color;
2339   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-left-color");*/
2340 }
2341 
2342 /**
2343  * fo_table_and_caption_get_border_left_style:
2344  * @fo_fo: The @FoFo object.
2345  *
2346  * Gets the "border-left-style" property of @fo_fo.
2347  *
2348  * Return value: The "border-left-style" property value.
2349 **/
2350 FoProperty *
fo_table_and_caption_get_border_left_style(FoFo * fo_fo)2351 fo_table_and_caption_get_border_left_style (FoFo *fo_fo)
2352 {
2353   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2354 
2355   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2356   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2357 
2358   return fo_table_and_caption->border_left_style;
2359 }
2360 
2361 /**
2362  * fo_table_and_caption_set_border_left_style:
2363  * @fo_fo: The #FoFo object.
2364  * @new_border_left_style: The new "border-left-style" property value.
2365  *
2366  * Sets the "border-left-style" property of @fo_fo to @new_border_left_style.
2367  **/
2368 void
fo_table_and_caption_set_border_left_style(FoFo * fo_fo,FoProperty * new_border_left_style)2369 fo_table_and_caption_set_border_left_style (FoFo *fo_fo,
2370 		         FoProperty *new_border_left_style)
2371 {
2372   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2373 
2374   g_return_if_fail (fo_table_and_caption != NULL);
2375   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2376   g_return_if_fail ((new_border_left_style == NULL) ||
2377 		    FO_IS_PROPERTY_BORDER_LEFT_STYLE (new_border_left_style));
2378 
2379   if (new_border_left_style != NULL)
2380     {
2381       g_object_ref (new_border_left_style);
2382     }
2383   if (fo_table_and_caption->border_left_style != NULL)
2384     {
2385       g_object_unref (fo_table_and_caption->border_left_style);
2386     }
2387   fo_table_and_caption->border_left_style = new_border_left_style;
2388   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-left-style");*/
2389 }
2390 
2391 /**
2392  * fo_table_and_caption_get_border_left_width:
2393  * @fo_fo: The @FoFo object.
2394  *
2395  * Gets the "border-left-width" property of @fo_fo.
2396  *
2397  * Return value: The "border-left-width" property value.
2398 **/
2399 FoProperty *
fo_table_and_caption_get_border_left_width(FoFo * fo_fo)2400 fo_table_and_caption_get_border_left_width (FoFo *fo_fo)
2401 {
2402   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2403 
2404   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2405   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2406 
2407   return fo_table_and_caption->border_left_width;
2408 }
2409 
2410 /**
2411  * fo_table_and_caption_set_border_left_width:
2412  * @fo_fo: The #FoFo object.
2413  * @new_border_left_width: The new "border-left-width" property value.
2414  *
2415  * Sets the "border-left-width" property of @fo_fo to @new_border_left_width.
2416  **/
2417 void
fo_table_and_caption_set_border_left_width(FoFo * fo_fo,FoProperty * new_border_left_width)2418 fo_table_and_caption_set_border_left_width (FoFo *fo_fo,
2419 		         FoProperty *new_border_left_width)
2420 {
2421   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2422 
2423   g_return_if_fail (fo_table_and_caption != NULL);
2424   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2425   g_return_if_fail ((new_border_left_width == NULL) ||
2426 		    FO_IS_PROPERTY_BORDER_LEFT_WIDTH (new_border_left_width));
2427 
2428   if (new_border_left_width != NULL)
2429     {
2430       g_object_ref (new_border_left_width);
2431     }
2432   if (fo_table_and_caption->border_left_width != NULL)
2433     {
2434       g_object_unref (fo_table_and_caption->border_left_width);
2435     }
2436   fo_table_and_caption->border_left_width = new_border_left_width;
2437   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-left-width");*/
2438 }
2439 
2440 /**
2441  * fo_table_and_caption_get_border_right_color:
2442  * @fo_fo: The @FoFo object.
2443  *
2444  * Gets the "border-right-color" property of @fo_fo.
2445  *
2446  * Return value: The "border-right-color" property value.
2447 **/
2448 FoProperty *
fo_table_and_caption_get_border_right_color(FoFo * fo_fo)2449 fo_table_and_caption_get_border_right_color (FoFo *fo_fo)
2450 {
2451   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2452 
2453   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2454   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2455 
2456   return fo_table_and_caption->border_right_color;
2457 }
2458 
2459 /**
2460  * fo_table_and_caption_set_border_right_color:
2461  * @fo_fo: The #FoFo object.
2462  * @new_border_right_color: The new "border-right-color" property value.
2463  *
2464  * Sets the "border-right-color" property of @fo_fo to @new_border_right_color.
2465  **/
2466 void
fo_table_and_caption_set_border_right_color(FoFo * fo_fo,FoProperty * new_border_right_color)2467 fo_table_and_caption_set_border_right_color (FoFo *fo_fo,
2468 		         FoProperty *new_border_right_color)
2469 {
2470   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2471 
2472   g_return_if_fail (fo_table_and_caption != NULL);
2473   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2474   g_return_if_fail ((new_border_right_color == NULL) ||
2475 		    FO_IS_PROPERTY_BORDER_RIGHT_COLOR (new_border_right_color));
2476 
2477   if (new_border_right_color != NULL)
2478     {
2479       g_object_ref (new_border_right_color);
2480     }
2481   if (fo_table_and_caption->border_right_color != NULL)
2482     {
2483       g_object_unref (fo_table_and_caption->border_right_color);
2484     }
2485   fo_table_and_caption->border_right_color = new_border_right_color;
2486   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-right-color");*/
2487 }
2488 
2489 /**
2490  * fo_table_and_caption_get_border_right_style:
2491  * @fo_fo: The @FoFo object.
2492  *
2493  * Gets the "border-right-style" property of @fo_fo.
2494  *
2495  * Return value: The "border-right-style" property value.
2496 **/
2497 FoProperty *
fo_table_and_caption_get_border_right_style(FoFo * fo_fo)2498 fo_table_and_caption_get_border_right_style (FoFo *fo_fo)
2499 {
2500   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2501 
2502   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2503   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2504 
2505   return fo_table_and_caption->border_right_style;
2506 }
2507 
2508 /**
2509  * fo_table_and_caption_set_border_right_style:
2510  * @fo_fo: The #FoFo object.
2511  * @new_border_right_style: The new "border-right-style" property value.
2512  *
2513  * Sets the "border-right-style" property of @fo_fo to @new_border_right_style.
2514  **/
2515 void
fo_table_and_caption_set_border_right_style(FoFo * fo_fo,FoProperty * new_border_right_style)2516 fo_table_and_caption_set_border_right_style (FoFo *fo_fo,
2517 		         FoProperty *new_border_right_style)
2518 {
2519   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2520 
2521   g_return_if_fail (fo_table_and_caption != NULL);
2522   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2523   g_return_if_fail ((new_border_right_style == NULL) ||
2524 		    FO_IS_PROPERTY_BORDER_RIGHT_STYLE (new_border_right_style));
2525 
2526   if (new_border_right_style != NULL)
2527     {
2528       g_object_ref (new_border_right_style);
2529     }
2530   if (fo_table_and_caption->border_right_style != NULL)
2531     {
2532       g_object_unref (fo_table_and_caption->border_right_style);
2533     }
2534   fo_table_and_caption->border_right_style = new_border_right_style;
2535   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-right-style");*/
2536 }
2537 
2538 /**
2539  * fo_table_and_caption_get_border_right_width:
2540  * @fo_fo: The @FoFo object.
2541  *
2542  * Gets the "border-right-width" property of @fo_fo.
2543  *
2544  * Return value: The "border-right-width" property value.
2545 **/
2546 FoProperty *
fo_table_and_caption_get_border_right_width(FoFo * fo_fo)2547 fo_table_and_caption_get_border_right_width (FoFo *fo_fo)
2548 {
2549   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2550 
2551   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2552   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2553 
2554   return fo_table_and_caption->border_right_width;
2555 }
2556 
2557 /**
2558  * fo_table_and_caption_set_border_right_width:
2559  * @fo_fo: The #FoFo object.
2560  * @new_border_right_width: The new "border-right-width" property value.
2561  *
2562  * Sets the "border-right-width" property of @fo_fo to @new_border_right_width.
2563  **/
2564 void
fo_table_and_caption_set_border_right_width(FoFo * fo_fo,FoProperty * new_border_right_width)2565 fo_table_and_caption_set_border_right_width (FoFo *fo_fo,
2566 		         FoProperty *new_border_right_width)
2567 {
2568   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2569 
2570   g_return_if_fail (fo_table_and_caption != NULL);
2571   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2572   g_return_if_fail ((new_border_right_width == NULL) ||
2573 		    FO_IS_PROPERTY_BORDER_RIGHT_WIDTH (new_border_right_width));
2574 
2575   if (new_border_right_width != NULL)
2576     {
2577       g_object_ref (new_border_right_width);
2578     }
2579   if (fo_table_and_caption->border_right_width != NULL)
2580     {
2581       g_object_unref (fo_table_and_caption->border_right_width);
2582     }
2583   fo_table_and_caption->border_right_width = new_border_right_width;
2584   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-right-width");*/
2585 }
2586 
2587 /**
2588  * fo_table_and_caption_get_border_start_color:
2589  * @fo_fo: The @FoFo object.
2590  *
2591  * Gets the "border-start-color" property of @fo_fo.
2592  *
2593  * Return value: The "border-start-color" property value.
2594 **/
2595 FoProperty *
fo_table_and_caption_get_border_start_color(FoFo * fo_fo)2596 fo_table_and_caption_get_border_start_color (FoFo *fo_fo)
2597 {
2598   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2599 
2600   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2601   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2602 
2603   return fo_table_and_caption->border_start_color;
2604 }
2605 
2606 /**
2607  * fo_table_and_caption_set_border_start_color:
2608  * @fo_fo: The #FoFo object.
2609  * @new_border_start_color: The new "border-start-color" property value.
2610  *
2611  * Sets the "border-start-color" property of @fo_fo to @new_border_start_color.
2612  **/
2613 void
fo_table_and_caption_set_border_start_color(FoFo * fo_fo,FoProperty * new_border_start_color)2614 fo_table_and_caption_set_border_start_color (FoFo *fo_fo,
2615 		         FoProperty *new_border_start_color)
2616 {
2617   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2618 
2619   g_return_if_fail (fo_table_and_caption != NULL);
2620   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2621   g_return_if_fail ((new_border_start_color == NULL) ||
2622 		    FO_IS_PROPERTY_BORDER_START_COLOR (new_border_start_color));
2623 
2624   if (new_border_start_color != NULL)
2625     {
2626       g_object_ref (new_border_start_color);
2627     }
2628   if (fo_table_and_caption->border_start_color != NULL)
2629     {
2630       g_object_unref (fo_table_and_caption->border_start_color);
2631     }
2632   fo_table_and_caption->border_start_color = new_border_start_color;
2633   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-start-color");*/
2634 }
2635 
2636 /**
2637  * fo_table_and_caption_get_border_start_style:
2638  * @fo_fo: The @FoFo object.
2639  *
2640  * Gets the "border-start-style" property of @fo_fo.
2641  *
2642  * Return value: The "border-start-style" property value.
2643 **/
2644 FoProperty *
fo_table_and_caption_get_border_start_style(FoFo * fo_fo)2645 fo_table_and_caption_get_border_start_style (FoFo *fo_fo)
2646 {
2647   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2648 
2649   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2650   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2651 
2652   return fo_table_and_caption->border_start_style;
2653 }
2654 
2655 /**
2656  * fo_table_and_caption_set_border_start_style:
2657  * @fo_fo: The #FoFo object.
2658  * @new_border_start_style: The new "border-start-style" property value.
2659  *
2660  * Sets the "border-start-style" property of @fo_fo to @new_border_start_style.
2661  **/
2662 void
fo_table_and_caption_set_border_start_style(FoFo * fo_fo,FoProperty * new_border_start_style)2663 fo_table_and_caption_set_border_start_style (FoFo *fo_fo,
2664 		         FoProperty *new_border_start_style)
2665 {
2666   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2667 
2668   g_return_if_fail (fo_table_and_caption != NULL);
2669   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2670   g_return_if_fail ((new_border_start_style == NULL) ||
2671 		    FO_IS_PROPERTY_BORDER_START_STYLE (new_border_start_style));
2672 
2673   if (new_border_start_style != NULL)
2674     {
2675       g_object_ref (new_border_start_style);
2676     }
2677   if (fo_table_and_caption->border_start_style != NULL)
2678     {
2679       g_object_unref (fo_table_and_caption->border_start_style);
2680     }
2681   fo_table_and_caption->border_start_style = new_border_start_style;
2682   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-start-style");*/
2683 }
2684 
2685 /**
2686  * fo_table_and_caption_get_border_start_width:
2687  * @fo_fo: The @FoFo object.
2688  *
2689  * Gets the "border-start-width" property of @fo_fo.
2690  *
2691  * Return value: The "border-start-width" property value.
2692 **/
2693 FoProperty *
fo_table_and_caption_get_border_start_width(FoFo * fo_fo)2694 fo_table_and_caption_get_border_start_width (FoFo *fo_fo)
2695 {
2696   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2697 
2698   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2699   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2700 
2701   return fo_table_and_caption->border_start_width;
2702 }
2703 
2704 /**
2705  * fo_table_and_caption_set_border_start_width:
2706  * @fo_fo: The #FoFo object.
2707  * @new_border_start_width: The new "border-start-width" property value.
2708  *
2709  * Sets the "border-start-width" property of @fo_fo to @new_border_start_width.
2710  **/
2711 void
fo_table_and_caption_set_border_start_width(FoFo * fo_fo,FoProperty * new_border_start_width)2712 fo_table_and_caption_set_border_start_width (FoFo *fo_fo,
2713 		         FoProperty *new_border_start_width)
2714 {
2715   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2716 
2717   g_return_if_fail (fo_table_and_caption != NULL);
2718   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2719   g_return_if_fail ((new_border_start_width == NULL) ||
2720 		    FO_IS_PROPERTY_BORDER_START_WIDTH (new_border_start_width));
2721 
2722   if (new_border_start_width != NULL)
2723     {
2724       g_object_ref (new_border_start_width);
2725     }
2726   if (fo_table_and_caption->border_start_width != NULL)
2727     {
2728       g_object_unref (fo_table_and_caption->border_start_width);
2729     }
2730   fo_table_and_caption->border_start_width = new_border_start_width;
2731   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-start-width");*/
2732 }
2733 
2734 /**
2735  * fo_table_and_caption_get_border_top_color:
2736  * @fo_fo: The @FoFo object.
2737  *
2738  * Gets the "border-top-color" property of @fo_fo.
2739  *
2740  * Return value: The "border-top-color" property value.
2741 **/
2742 FoProperty *
fo_table_and_caption_get_border_top_color(FoFo * fo_fo)2743 fo_table_and_caption_get_border_top_color (FoFo *fo_fo)
2744 {
2745   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2746 
2747   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2748   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2749 
2750   return fo_table_and_caption->border_top_color;
2751 }
2752 
2753 /**
2754  * fo_table_and_caption_set_border_top_color:
2755  * @fo_fo: The #FoFo object.
2756  * @new_border_top_color: The new "border-top-color" property value.
2757  *
2758  * Sets the "border-top-color" property of @fo_fo to @new_border_top_color.
2759  **/
2760 void
fo_table_and_caption_set_border_top_color(FoFo * fo_fo,FoProperty * new_border_top_color)2761 fo_table_and_caption_set_border_top_color (FoFo *fo_fo,
2762 		         FoProperty *new_border_top_color)
2763 {
2764   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2765 
2766   g_return_if_fail (fo_table_and_caption != NULL);
2767   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2768   g_return_if_fail ((new_border_top_color == NULL) ||
2769 		    FO_IS_PROPERTY_BORDER_TOP_COLOR (new_border_top_color));
2770 
2771   if (new_border_top_color != NULL)
2772     {
2773       g_object_ref (new_border_top_color);
2774     }
2775   if (fo_table_and_caption->border_top_color != NULL)
2776     {
2777       g_object_unref (fo_table_and_caption->border_top_color);
2778     }
2779   fo_table_and_caption->border_top_color = new_border_top_color;
2780   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-top-color");*/
2781 }
2782 
2783 /**
2784  * fo_table_and_caption_get_border_top_style:
2785  * @fo_fo: The @FoFo object.
2786  *
2787  * Gets the "border-top-style" property of @fo_fo.
2788  *
2789  * Return value: The "border-top-style" property value.
2790 **/
2791 FoProperty *
fo_table_and_caption_get_border_top_style(FoFo * fo_fo)2792 fo_table_and_caption_get_border_top_style (FoFo *fo_fo)
2793 {
2794   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2795 
2796   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2797   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2798 
2799   return fo_table_and_caption->border_top_style;
2800 }
2801 
2802 /**
2803  * fo_table_and_caption_set_border_top_style:
2804  * @fo_fo: The #FoFo object.
2805  * @new_border_top_style: The new "border-top-style" property value.
2806  *
2807  * Sets the "border-top-style" property of @fo_fo to @new_border_top_style.
2808  **/
2809 void
fo_table_and_caption_set_border_top_style(FoFo * fo_fo,FoProperty * new_border_top_style)2810 fo_table_and_caption_set_border_top_style (FoFo *fo_fo,
2811 		         FoProperty *new_border_top_style)
2812 {
2813   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2814 
2815   g_return_if_fail (fo_table_and_caption != NULL);
2816   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2817   g_return_if_fail ((new_border_top_style == NULL) ||
2818 		    FO_IS_PROPERTY_BORDER_TOP_STYLE (new_border_top_style));
2819 
2820   if (new_border_top_style != NULL)
2821     {
2822       g_object_ref (new_border_top_style);
2823     }
2824   if (fo_table_and_caption->border_top_style != NULL)
2825     {
2826       g_object_unref (fo_table_and_caption->border_top_style);
2827     }
2828   fo_table_and_caption->border_top_style = new_border_top_style;
2829   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-top-style");*/
2830 }
2831 
2832 /**
2833  * fo_table_and_caption_get_border_top_width:
2834  * @fo_fo: The @FoFo object.
2835  *
2836  * Gets the "border-top-width" property of @fo_fo.
2837  *
2838  * Return value: The "border-top-width" property value.
2839 **/
2840 FoProperty *
fo_table_and_caption_get_border_top_width(FoFo * fo_fo)2841 fo_table_and_caption_get_border_top_width (FoFo *fo_fo)
2842 {
2843   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2844 
2845   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2846   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2847 
2848   return fo_table_and_caption->border_top_width;
2849 }
2850 
2851 /**
2852  * fo_table_and_caption_set_border_top_width:
2853  * @fo_fo: The #FoFo object.
2854  * @new_border_top_width: The new "border-top-width" property value.
2855  *
2856  * Sets the "border-top-width" property of @fo_fo to @new_border_top_width.
2857  **/
2858 void
fo_table_and_caption_set_border_top_width(FoFo * fo_fo,FoProperty * new_border_top_width)2859 fo_table_and_caption_set_border_top_width (FoFo *fo_fo,
2860 		         FoProperty *new_border_top_width)
2861 {
2862   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2863 
2864   g_return_if_fail (fo_table_and_caption != NULL);
2865   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2866   g_return_if_fail ((new_border_top_width == NULL) ||
2867 		    FO_IS_PROPERTY_BORDER_TOP_WIDTH (new_border_top_width));
2868 
2869   if (new_border_top_width != NULL)
2870     {
2871       g_object_ref (new_border_top_width);
2872     }
2873   if (fo_table_and_caption->border_top_width != NULL)
2874     {
2875       g_object_unref (fo_table_and_caption->border_top_width);
2876     }
2877   fo_table_and_caption->border_top_width = new_border_top_width;
2878   /*g_object_notify (G_OBJECT (fo_table_and_caption), "border-top-width");*/
2879 }
2880 
2881 /**
2882  * fo_table_and_caption_get_break_after:
2883  * @fo_fo: The @FoFo object.
2884  *
2885  * Gets the "break-after" property of @fo_fo.
2886  *
2887  * Return value: The "break-after" property value.
2888 **/
2889 FoProperty *
fo_table_and_caption_get_break_after(FoFo * fo_fo)2890 fo_table_and_caption_get_break_after (FoFo *fo_fo)
2891 {
2892   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2893 
2894   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2895   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2896 
2897   return fo_table_and_caption->break_after;
2898 }
2899 
2900 /**
2901  * fo_table_and_caption_set_break_after:
2902  * @fo_fo: The #FoFo object.
2903  * @new_break_after: The new "break-after" property value.
2904  *
2905  * Sets the "break-after" property of @fo_fo to @new_break_after.
2906  **/
2907 void
fo_table_and_caption_set_break_after(FoFo * fo_fo,FoProperty * new_break_after)2908 fo_table_and_caption_set_break_after (FoFo *fo_fo,
2909 		         FoProperty *new_break_after)
2910 {
2911   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2912 
2913   g_return_if_fail (fo_table_and_caption != NULL);
2914   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2915   g_return_if_fail ((new_break_after == NULL) ||
2916 		    FO_IS_PROPERTY_BREAK_AFTER (new_break_after));
2917 
2918   if (new_break_after != NULL)
2919     {
2920       g_object_ref (new_break_after);
2921     }
2922   if (fo_table_and_caption->break_after != NULL)
2923     {
2924       g_object_unref (fo_table_and_caption->break_after);
2925     }
2926   fo_table_and_caption->break_after = new_break_after;
2927   /*g_object_notify (G_OBJECT (fo_table_and_caption), "break-after");*/
2928 }
2929 
2930 /**
2931  * fo_table_and_caption_get_break_before:
2932  * @fo_fo: The @FoFo object.
2933  *
2934  * Gets the "break-before" property of @fo_fo.
2935  *
2936  * Return value: The "break-before" property value.
2937 **/
2938 FoProperty *
fo_table_and_caption_get_break_before(FoFo * fo_fo)2939 fo_table_and_caption_get_break_before (FoFo *fo_fo)
2940 {
2941   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2942 
2943   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2944   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2945 
2946   return fo_table_and_caption->break_before;
2947 }
2948 
2949 /**
2950  * fo_table_and_caption_set_break_before:
2951  * @fo_fo: The #FoFo object.
2952  * @new_break_before: The new "break-before" property value.
2953  *
2954  * Sets the "break-before" property of @fo_fo to @new_break_before.
2955  **/
2956 void
fo_table_and_caption_set_break_before(FoFo * fo_fo,FoProperty * new_break_before)2957 fo_table_and_caption_set_break_before (FoFo *fo_fo,
2958 		         FoProperty *new_break_before)
2959 {
2960   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2961 
2962   g_return_if_fail (fo_table_and_caption != NULL);
2963   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
2964   g_return_if_fail ((new_break_before == NULL) ||
2965 		    FO_IS_PROPERTY_BREAK_BEFORE (new_break_before));
2966 
2967   if (new_break_before != NULL)
2968     {
2969       g_object_ref (new_break_before);
2970     }
2971   if (fo_table_and_caption->break_before != NULL)
2972     {
2973       g_object_unref (fo_table_and_caption->break_before);
2974     }
2975   fo_table_and_caption->break_before = new_break_before;
2976   /*g_object_notify (G_OBJECT (fo_table_and_caption), "break-before");*/
2977 }
2978 
2979 /**
2980  * fo_table_and_caption_get_end_indent:
2981  * @fo_fo: The @FoFo object.
2982  *
2983  * Gets the "end-indent" property of @fo_fo.
2984  *
2985  * Return value: The "end-indent" property value.
2986 **/
2987 FoProperty *
fo_table_and_caption_get_end_indent(FoFo * fo_fo)2988 fo_table_and_caption_get_end_indent (FoFo *fo_fo)
2989 {
2990   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
2991 
2992   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
2993   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
2994 
2995   return fo_table_and_caption->end_indent;
2996 }
2997 
2998 /**
2999  * fo_table_and_caption_set_end_indent:
3000  * @fo_fo: The #FoFo object.
3001  * @new_end_indent: The new "end-indent" property value.
3002  *
3003  * Sets the "end-indent" property of @fo_fo to @new_end_indent.
3004  **/
3005 void
fo_table_and_caption_set_end_indent(FoFo * fo_fo,FoProperty * new_end_indent)3006 fo_table_and_caption_set_end_indent (FoFo *fo_fo,
3007 		         FoProperty *new_end_indent)
3008 {
3009   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3010 
3011   g_return_if_fail (fo_table_and_caption != NULL);
3012   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3013   g_return_if_fail ((new_end_indent == NULL) ||
3014 		    FO_IS_PROPERTY_END_INDENT (new_end_indent));
3015 
3016   if (new_end_indent != NULL)
3017     {
3018       g_object_ref (new_end_indent);
3019     }
3020   if (fo_table_and_caption->end_indent != NULL)
3021     {
3022       g_object_unref (fo_table_and_caption->end_indent);
3023     }
3024   fo_table_and_caption->end_indent = new_end_indent;
3025   /*g_object_notify (G_OBJECT (fo_table_and_caption), "end-indent");*/
3026 }
3027 
3028 /**
3029  * fo_table_and_caption_get_id:
3030  * @fo_fo: The @FoFo object.
3031  *
3032  * Gets the "id" property of @fo_fo.
3033  *
3034  * Return value: The "id" property value.
3035 **/
3036 FoProperty *
fo_table_and_caption_get_id(FoFo * fo_fo)3037 fo_table_and_caption_get_id (FoFo *fo_fo)
3038 {
3039   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3040 
3041   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3042   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3043 
3044   return fo_table_and_caption->id;
3045 }
3046 
3047 /**
3048  * fo_table_and_caption_set_id:
3049  * @fo_fo: The #FoFo object.
3050  * @new_id: The new "id" property value.
3051  *
3052  * Sets the "id" property of @fo_fo to @new_id.
3053  **/
3054 void
fo_table_and_caption_set_id(FoFo * fo_fo,FoProperty * new_id)3055 fo_table_and_caption_set_id (FoFo *fo_fo,
3056 		         FoProperty *new_id)
3057 {
3058   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3059 
3060   g_return_if_fail (fo_table_and_caption != NULL);
3061   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3062   g_return_if_fail ((new_id == NULL) ||
3063 		    FO_IS_PROPERTY_ID (new_id));
3064 
3065   if (new_id != NULL)
3066     {
3067       g_object_ref (new_id);
3068     }
3069   if (fo_table_and_caption->id != NULL)
3070     {
3071       g_object_unref (fo_table_and_caption->id);
3072     }
3073   fo_table_and_caption->id = new_id;
3074   /*g_object_notify (G_OBJECT (fo_table_and_caption), "id");*/
3075 }
3076 
3077 /**
3078  * fo_table_and_caption_get_keep_together:
3079  * @fo_fo: The @FoFo object.
3080  *
3081  * Gets the "keep-together" property of @fo_fo.
3082  *
3083  * Return value: The "keep-together" property value.
3084 **/
3085 FoProperty *
fo_table_and_caption_get_keep_together(FoFo * fo_fo)3086 fo_table_and_caption_get_keep_together (FoFo *fo_fo)
3087 {
3088   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3089 
3090   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3091   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3092 
3093   return fo_table_and_caption->keep_together;
3094 }
3095 
3096 /**
3097  * fo_table_and_caption_set_keep_together:
3098  * @fo_fo: The #FoFo object.
3099  * @new_keep_together: The new "keep-together" property value.
3100  *
3101  * Sets the "keep-together" property of @fo_fo to @new_keep_together.
3102  **/
3103 void
fo_table_and_caption_set_keep_together(FoFo * fo_fo,FoProperty * new_keep_together)3104 fo_table_and_caption_set_keep_together (FoFo *fo_fo,
3105 		         FoProperty *new_keep_together)
3106 {
3107   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3108 
3109   g_return_if_fail (fo_table_and_caption != NULL);
3110   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3111   g_return_if_fail ((new_keep_together == NULL) ||
3112 		    FO_IS_PROPERTY_KEEP_TOGETHER (new_keep_together));
3113 
3114   if (new_keep_together != NULL)
3115     {
3116       g_object_ref (new_keep_together);
3117     }
3118   if (fo_table_and_caption->keep_together != NULL)
3119     {
3120       g_object_unref (fo_table_and_caption->keep_together);
3121     }
3122   fo_table_and_caption->keep_together = new_keep_together;
3123   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-together");*/
3124 }
3125 
3126 /**
3127  * fo_table_and_caption_get_keep_together_within_column:
3128  * @fo_fo: The @FoFo object.
3129  *
3130  * Gets the "keep-together-within-column" property of @fo_fo.
3131  *
3132  * Return value: The "keep-together-within-column" property value.
3133 **/
3134 FoProperty *
fo_table_and_caption_get_keep_together_within_column(FoFo * fo_fo)3135 fo_table_and_caption_get_keep_together_within_column (FoFo *fo_fo)
3136 {
3137   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3138 
3139   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3140   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3141 
3142   return fo_table_and_caption->keep_together_within_column;
3143 }
3144 
3145 /**
3146  * fo_table_and_caption_set_keep_together_within_column:
3147  * @fo_fo: The #FoFo object.
3148  * @new_keep_together_within_column: The new "keep-together-within-column" property value.
3149  *
3150  * Sets the "keep-together-within-column" property of @fo_fo to @new_keep_together_within_column.
3151  **/
3152 void
fo_table_and_caption_set_keep_together_within_column(FoFo * fo_fo,FoProperty * new_keep_together_within_column)3153 fo_table_and_caption_set_keep_together_within_column (FoFo *fo_fo,
3154 		         FoProperty *new_keep_together_within_column)
3155 {
3156   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3157 
3158   g_return_if_fail (fo_table_and_caption != NULL);
3159   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3160   g_return_if_fail ((new_keep_together_within_column == NULL) ||
3161 		    FO_IS_PROPERTY_KEEP_TOGETHER_WITHIN_COLUMN (new_keep_together_within_column));
3162 
3163   if (new_keep_together_within_column != NULL)
3164     {
3165       g_object_ref (new_keep_together_within_column);
3166     }
3167   if (fo_table_and_caption->keep_together_within_column != NULL)
3168     {
3169       g_object_unref (fo_table_and_caption->keep_together_within_column);
3170     }
3171   fo_table_and_caption->keep_together_within_column = new_keep_together_within_column;
3172   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-together-within-column");*/
3173 }
3174 
3175 /**
3176  * fo_table_and_caption_get_keep_together_within_line:
3177  * @fo_fo: The @FoFo object.
3178  *
3179  * Gets the "keep-together-within-line" property of @fo_fo.
3180  *
3181  * Return value: The "keep-together-within-line" property value.
3182 **/
3183 FoProperty *
fo_table_and_caption_get_keep_together_within_line(FoFo * fo_fo)3184 fo_table_and_caption_get_keep_together_within_line (FoFo *fo_fo)
3185 {
3186   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3187 
3188   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3189   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3190 
3191   return fo_table_and_caption->keep_together_within_line;
3192 }
3193 
3194 /**
3195  * fo_table_and_caption_set_keep_together_within_line:
3196  * @fo_fo: The #FoFo object.
3197  * @new_keep_together_within_line: The new "keep-together-within-line" property value.
3198  *
3199  * Sets the "keep-together-within-line" property of @fo_fo to @new_keep_together_within_line.
3200  **/
3201 void
fo_table_and_caption_set_keep_together_within_line(FoFo * fo_fo,FoProperty * new_keep_together_within_line)3202 fo_table_and_caption_set_keep_together_within_line (FoFo *fo_fo,
3203 		         FoProperty *new_keep_together_within_line)
3204 {
3205   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3206 
3207   g_return_if_fail (fo_table_and_caption != NULL);
3208   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3209   g_return_if_fail ((new_keep_together_within_line == NULL) ||
3210 		    FO_IS_PROPERTY_KEEP_TOGETHER_WITHIN_LINE (new_keep_together_within_line));
3211 
3212   if (new_keep_together_within_line != NULL)
3213     {
3214       g_object_ref (new_keep_together_within_line);
3215     }
3216   if (fo_table_and_caption->keep_together_within_line != NULL)
3217     {
3218       g_object_unref (fo_table_and_caption->keep_together_within_line);
3219     }
3220   fo_table_and_caption->keep_together_within_line = new_keep_together_within_line;
3221   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-together-within-line");*/
3222 }
3223 
3224 /**
3225  * fo_table_and_caption_get_keep_together_within_page:
3226  * @fo_fo: The @FoFo object.
3227  *
3228  * Gets the "keep-together-within-page" property of @fo_fo.
3229  *
3230  * Return value: The "keep-together-within-page" property value.
3231 **/
3232 FoProperty *
fo_table_and_caption_get_keep_together_within_page(FoFo * fo_fo)3233 fo_table_and_caption_get_keep_together_within_page (FoFo *fo_fo)
3234 {
3235   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3236 
3237   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3238   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3239 
3240   return fo_table_and_caption->keep_together_within_page;
3241 }
3242 
3243 /**
3244  * fo_table_and_caption_set_keep_together_within_page:
3245  * @fo_fo: The #FoFo object.
3246  * @new_keep_together_within_page: The new "keep-together-within-page" property value.
3247  *
3248  * Sets the "keep-together-within-page" property of @fo_fo to @new_keep_together_within_page.
3249  **/
3250 void
fo_table_and_caption_set_keep_together_within_page(FoFo * fo_fo,FoProperty * new_keep_together_within_page)3251 fo_table_and_caption_set_keep_together_within_page (FoFo *fo_fo,
3252 		         FoProperty *new_keep_together_within_page)
3253 {
3254   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3255 
3256   g_return_if_fail (fo_table_and_caption != NULL);
3257   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3258   g_return_if_fail ((new_keep_together_within_page == NULL) ||
3259 		    FO_IS_PROPERTY_KEEP_TOGETHER_WITHIN_PAGE (new_keep_together_within_page));
3260 
3261   if (new_keep_together_within_page != NULL)
3262     {
3263       g_object_ref (new_keep_together_within_page);
3264     }
3265   if (fo_table_and_caption->keep_together_within_page != NULL)
3266     {
3267       g_object_unref (fo_table_and_caption->keep_together_within_page);
3268     }
3269   fo_table_and_caption->keep_together_within_page = new_keep_together_within_page;
3270   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-together-within-page");*/
3271 }
3272 
3273 /**
3274  * fo_table_and_caption_get_keep_with_next:
3275  * @fo_fo: The @FoFo object.
3276  *
3277  * Gets the "keep-with-next" property of @fo_fo.
3278  *
3279  * Return value: The "keep-with-next" property value.
3280 **/
3281 FoProperty *
fo_table_and_caption_get_keep_with_next(FoFo * fo_fo)3282 fo_table_and_caption_get_keep_with_next (FoFo *fo_fo)
3283 {
3284   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3285 
3286   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3287   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3288 
3289   return fo_table_and_caption->keep_with_next;
3290 }
3291 
3292 /**
3293  * fo_table_and_caption_set_keep_with_next:
3294  * @fo_fo: The #FoFo object.
3295  * @new_keep_with_next: The new "keep-with-next" property value.
3296  *
3297  * Sets the "keep-with-next" property of @fo_fo to @new_keep_with_next.
3298  **/
3299 void
fo_table_and_caption_set_keep_with_next(FoFo * fo_fo,FoProperty * new_keep_with_next)3300 fo_table_and_caption_set_keep_with_next (FoFo *fo_fo,
3301 		         FoProperty *new_keep_with_next)
3302 {
3303   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3304 
3305   g_return_if_fail (fo_table_and_caption != NULL);
3306   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3307   g_return_if_fail ((new_keep_with_next == NULL) ||
3308 		    FO_IS_PROPERTY_KEEP_WITH_NEXT (new_keep_with_next));
3309 
3310   if (new_keep_with_next != NULL)
3311     {
3312       g_object_ref (new_keep_with_next);
3313     }
3314   if (fo_table_and_caption->keep_with_next != NULL)
3315     {
3316       g_object_unref (fo_table_and_caption->keep_with_next);
3317     }
3318   fo_table_and_caption->keep_with_next = new_keep_with_next;
3319   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-next");*/
3320 }
3321 
3322 /**
3323  * fo_table_and_caption_get_keep_with_next_within_column:
3324  * @fo_fo: The @FoFo object.
3325  *
3326  * Gets the "keep-with-next-within-column" property of @fo_fo.
3327  *
3328  * Return value: The "keep-with-next-within-column" property value.
3329 **/
3330 FoProperty *
fo_table_and_caption_get_keep_with_next_within_column(FoFo * fo_fo)3331 fo_table_and_caption_get_keep_with_next_within_column (FoFo *fo_fo)
3332 {
3333   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3334 
3335   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3336   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3337 
3338   return fo_table_and_caption->keep_with_next_within_column;
3339 }
3340 
3341 /**
3342  * fo_table_and_caption_set_keep_with_next_within_column:
3343  * @fo_fo: The #FoFo object.
3344  * @new_keep_with_next_within_column: The new "keep-with-next-within-column" property value.
3345  *
3346  * Sets the "keep-with-next-within-column" property of @fo_fo to @new_keep_with_next_within_column.
3347  **/
3348 void
fo_table_and_caption_set_keep_with_next_within_column(FoFo * fo_fo,FoProperty * new_keep_with_next_within_column)3349 fo_table_and_caption_set_keep_with_next_within_column (FoFo *fo_fo,
3350 		         FoProperty *new_keep_with_next_within_column)
3351 {
3352   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3353 
3354   g_return_if_fail (fo_table_and_caption != NULL);
3355   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3356   g_return_if_fail ((new_keep_with_next_within_column == NULL) ||
3357 		    FO_IS_PROPERTY_KEEP_WITH_NEXT_WITHIN_COLUMN (new_keep_with_next_within_column));
3358 
3359   if (new_keep_with_next_within_column != NULL)
3360     {
3361       g_object_ref (new_keep_with_next_within_column);
3362     }
3363   if (fo_table_and_caption->keep_with_next_within_column != NULL)
3364     {
3365       g_object_unref (fo_table_and_caption->keep_with_next_within_column);
3366     }
3367   fo_table_and_caption->keep_with_next_within_column = new_keep_with_next_within_column;
3368   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-next-within-column");*/
3369 }
3370 
3371 /**
3372  * fo_table_and_caption_get_keep_with_next_within_line:
3373  * @fo_fo: The @FoFo object.
3374  *
3375  * Gets the "keep-with-next-within-line" property of @fo_fo.
3376  *
3377  * Return value: The "keep-with-next-within-line" property value.
3378 **/
3379 FoProperty *
fo_table_and_caption_get_keep_with_next_within_line(FoFo * fo_fo)3380 fo_table_and_caption_get_keep_with_next_within_line (FoFo *fo_fo)
3381 {
3382   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3383 
3384   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3385   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3386 
3387   return fo_table_and_caption->keep_with_next_within_line;
3388 }
3389 
3390 /**
3391  * fo_table_and_caption_set_keep_with_next_within_line:
3392  * @fo_fo: The #FoFo object.
3393  * @new_keep_with_next_within_line: The new "keep-with-next-within-line" property value.
3394  *
3395  * Sets the "keep-with-next-within-line" property of @fo_fo to @new_keep_with_next_within_line.
3396  **/
3397 void
fo_table_and_caption_set_keep_with_next_within_line(FoFo * fo_fo,FoProperty * new_keep_with_next_within_line)3398 fo_table_and_caption_set_keep_with_next_within_line (FoFo *fo_fo,
3399 		         FoProperty *new_keep_with_next_within_line)
3400 {
3401   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3402 
3403   g_return_if_fail (fo_table_and_caption != NULL);
3404   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3405   g_return_if_fail ((new_keep_with_next_within_line == NULL) ||
3406 		    FO_IS_PROPERTY_KEEP_WITH_NEXT_WITHIN_LINE (new_keep_with_next_within_line));
3407 
3408   if (new_keep_with_next_within_line != NULL)
3409     {
3410       g_object_ref (new_keep_with_next_within_line);
3411     }
3412   if (fo_table_and_caption->keep_with_next_within_line != NULL)
3413     {
3414       g_object_unref (fo_table_and_caption->keep_with_next_within_line);
3415     }
3416   fo_table_and_caption->keep_with_next_within_line = new_keep_with_next_within_line;
3417   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-next-within-line");*/
3418 }
3419 
3420 /**
3421  * fo_table_and_caption_get_keep_with_next_within_page:
3422  * @fo_fo: The @FoFo object.
3423  *
3424  * Gets the "keep-with-next-within-page" property of @fo_fo.
3425  *
3426  * Return value: The "keep-with-next-within-page" property value.
3427 **/
3428 FoProperty *
fo_table_and_caption_get_keep_with_next_within_page(FoFo * fo_fo)3429 fo_table_and_caption_get_keep_with_next_within_page (FoFo *fo_fo)
3430 {
3431   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3432 
3433   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3434   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3435 
3436   return fo_table_and_caption->keep_with_next_within_page;
3437 }
3438 
3439 /**
3440  * fo_table_and_caption_set_keep_with_next_within_page:
3441  * @fo_fo: The #FoFo object.
3442  * @new_keep_with_next_within_page: The new "keep-with-next-within-page" property value.
3443  *
3444  * Sets the "keep-with-next-within-page" property of @fo_fo to @new_keep_with_next_within_page.
3445  **/
3446 void
fo_table_and_caption_set_keep_with_next_within_page(FoFo * fo_fo,FoProperty * new_keep_with_next_within_page)3447 fo_table_and_caption_set_keep_with_next_within_page (FoFo *fo_fo,
3448 		         FoProperty *new_keep_with_next_within_page)
3449 {
3450   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3451 
3452   g_return_if_fail (fo_table_and_caption != NULL);
3453   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3454   g_return_if_fail ((new_keep_with_next_within_page == NULL) ||
3455 		    FO_IS_PROPERTY_KEEP_WITH_NEXT_WITHIN_PAGE (new_keep_with_next_within_page));
3456 
3457   if (new_keep_with_next_within_page != NULL)
3458     {
3459       g_object_ref (new_keep_with_next_within_page);
3460     }
3461   if (fo_table_and_caption->keep_with_next_within_page != NULL)
3462     {
3463       g_object_unref (fo_table_and_caption->keep_with_next_within_page);
3464     }
3465   fo_table_and_caption->keep_with_next_within_page = new_keep_with_next_within_page;
3466   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-next-within-page");*/
3467 }
3468 
3469 /**
3470  * fo_table_and_caption_get_keep_with_previous:
3471  * @fo_fo: The @FoFo object.
3472  *
3473  * Gets the "keep-with-previous" property of @fo_fo.
3474  *
3475  * Return value: The "keep-with-previous" property value.
3476 **/
3477 FoProperty *
fo_table_and_caption_get_keep_with_previous(FoFo * fo_fo)3478 fo_table_and_caption_get_keep_with_previous (FoFo *fo_fo)
3479 {
3480   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3481 
3482   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3483   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3484 
3485   return fo_table_and_caption->keep_with_previous;
3486 }
3487 
3488 /**
3489  * fo_table_and_caption_set_keep_with_previous:
3490  * @fo_fo: The #FoFo object.
3491  * @new_keep_with_previous: The new "keep-with-previous" property value.
3492  *
3493  * Sets the "keep-with-previous" property of @fo_fo to @new_keep_with_previous.
3494  **/
3495 void
fo_table_and_caption_set_keep_with_previous(FoFo * fo_fo,FoProperty * new_keep_with_previous)3496 fo_table_and_caption_set_keep_with_previous (FoFo *fo_fo,
3497 		         FoProperty *new_keep_with_previous)
3498 {
3499   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3500 
3501   g_return_if_fail (fo_table_and_caption != NULL);
3502   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3503   g_return_if_fail ((new_keep_with_previous == NULL) ||
3504 		    FO_IS_PROPERTY_KEEP_WITH_PREVIOUS (new_keep_with_previous));
3505 
3506   if (new_keep_with_previous != NULL)
3507     {
3508       g_object_ref (new_keep_with_previous);
3509     }
3510   if (fo_table_and_caption->keep_with_previous != NULL)
3511     {
3512       g_object_unref (fo_table_and_caption->keep_with_previous);
3513     }
3514   fo_table_and_caption->keep_with_previous = new_keep_with_previous;
3515   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-previous");*/
3516 }
3517 
3518 /**
3519  * fo_table_and_caption_get_keep_with_previous_within_column:
3520  * @fo_fo: The @FoFo object.
3521  *
3522  * Gets the "keep-with-previous-within-column" property of @fo_fo.
3523  *
3524  * Return value: The "keep-with-previous-within-column" property value.
3525 **/
3526 FoProperty *
fo_table_and_caption_get_keep_with_previous_within_column(FoFo * fo_fo)3527 fo_table_and_caption_get_keep_with_previous_within_column (FoFo *fo_fo)
3528 {
3529   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3530 
3531   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3532   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3533 
3534   return fo_table_and_caption->keep_with_previous_within_column;
3535 }
3536 
3537 /**
3538  * fo_table_and_caption_set_keep_with_previous_within_column:
3539  * @fo_fo: The #FoFo object.
3540  * @new_keep_with_previous_within_column: The new "keep-with-previous-within-column" property value.
3541  *
3542  * Sets the "keep-with-previous-within-column" property of @fo_fo to @new_keep_with_previous_within_column.
3543  **/
3544 void
fo_table_and_caption_set_keep_with_previous_within_column(FoFo * fo_fo,FoProperty * new_keep_with_previous_within_column)3545 fo_table_and_caption_set_keep_with_previous_within_column (FoFo *fo_fo,
3546 		         FoProperty *new_keep_with_previous_within_column)
3547 {
3548   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3549 
3550   g_return_if_fail (fo_table_and_caption != NULL);
3551   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3552   g_return_if_fail ((new_keep_with_previous_within_column == NULL) ||
3553 		    FO_IS_PROPERTY_KEEP_WITH_PREVIOUS_WITHIN_COLUMN (new_keep_with_previous_within_column));
3554 
3555   if (new_keep_with_previous_within_column != NULL)
3556     {
3557       g_object_ref (new_keep_with_previous_within_column);
3558     }
3559   if (fo_table_and_caption->keep_with_previous_within_column != NULL)
3560     {
3561       g_object_unref (fo_table_and_caption->keep_with_previous_within_column);
3562     }
3563   fo_table_and_caption->keep_with_previous_within_column = new_keep_with_previous_within_column;
3564   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-previous-within-column");*/
3565 }
3566 
3567 /**
3568  * fo_table_and_caption_get_keep_with_previous_within_line:
3569  * @fo_fo: The @FoFo object.
3570  *
3571  * Gets the "keep-with-previous-within-line" property of @fo_fo.
3572  *
3573  * Return value: The "keep-with-previous-within-line" property value.
3574 **/
3575 FoProperty *
fo_table_and_caption_get_keep_with_previous_within_line(FoFo * fo_fo)3576 fo_table_and_caption_get_keep_with_previous_within_line (FoFo *fo_fo)
3577 {
3578   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3579 
3580   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3581   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3582 
3583   return fo_table_and_caption->keep_with_previous_within_line;
3584 }
3585 
3586 /**
3587  * fo_table_and_caption_set_keep_with_previous_within_line:
3588  * @fo_fo: The #FoFo object.
3589  * @new_keep_with_previous_within_line: The new "keep-with-previous-within-line" property value.
3590  *
3591  * Sets the "keep-with-previous-within-line" property of @fo_fo to @new_keep_with_previous_within_line.
3592  **/
3593 void
fo_table_and_caption_set_keep_with_previous_within_line(FoFo * fo_fo,FoProperty * new_keep_with_previous_within_line)3594 fo_table_and_caption_set_keep_with_previous_within_line (FoFo *fo_fo,
3595 		         FoProperty *new_keep_with_previous_within_line)
3596 {
3597   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3598 
3599   g_return_if_fail (fo_table_and_caption != NULL);
3600   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3601   g_return_if_fail ((new_keep_with_previous_within_line == NULL) ||
3602 		    FO_IS_PROPERTY_KEEP_WITH_PREVIOUS_WITHIN_LINE (new_keep_with_previous_within_line));
3603 
3604   if (new_keep_with_previous_within_line != NULL)
3605     {
3606       g_object_ref (new_keep_with_previous_within_line);
3607     }
3608   if (fo_table_and_caption->keep_with_previous_within_line != NULL)
3609     {
3610       g_object_unref (fo_table_and_caption->keep_with_previous_within_line);
3611     }
3612   fo_table_and_caption->keep_with_previous_within_line = new_keep_with_previous_within_line;
3613   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-previous-within-line");*/
3614 }
3615 
3616 /**
3617  * fo_table_and_caption_get_keep_with_previous_within_page:
3618  * @fo_fo: The @FoFo object.
3619  *
3620  * Gets the "keep-with-previous-within-page" property of @fo_fo.
3621  *
3622  * Return value: The "keep-with-previous-within-page" property value.
3623 **/
3624 FoProperty *
fo_table_and_caption_get_keep_with_previous_within_page(FoFo * fo_fo)3625 fo_table_and_caption_get_keep_with_previous_within_page (FoFo *fo_fo)
3626 {
3627   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3628 
3629   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3630   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3631 
3632   return fo_table_and_caption->keep_with_previous_within_page;
3633 }
3634 
3635 /**
3636  * fo_table_and_caption_set_keep_with_previous_within_page:
3637  * @fo_fo: The #FoFo object.
3638  * @new_keep_with_previous_within_page: The new "keep-with-previous-within-page" property value.
3639  *
3640  * Sets the "keep-with-previous-within-page" property of @fo_fo to @new_keep_with_previous_within_page.
3641  **/
3642 void
fo_table_and_caption_set_keep_with_previous_within_page(FoFo * fo_fo,FoProperty * new_keep_with_previous_within_page)3643 fo_table_and_caption_set_keep_with_previous_within_page (FoFo *fo_fo,
3644 		         FoProperty *new_keep_with_previous_within_page)
3645 {
3646   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3647 
3648   g_return_if_fail (fo_table_and_caption != NULL);
3649   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3650   g_return_if_fail ((new_keep_with_previous_within_page == NULL) ||
3651 		    FO_IS_PROPERTY_KEEP_WITH_PREVIOUS_WITHIN_PAGE (new_keep_with_previous_within_page));
3652 
3653   if (new_keep_with_previous_within_page != NULL)
3654     {
3655       g_object_ref (new_keep_with_previous_within_page);
3656     }
3657   if (fo_table_and_caption->keep_with_previous_within_page != NULL)
3658     {
3659       g_object_unref (fo_table_and_caption->keep_with_previous_within_page);
3660     }
3661   fo_table_and_caption->keep_with_previous_within_page = new_keep_with_previous_within_page;
3662   /*g_object_notify (G_OBJECT (fo_table_and_caption), "keep-with-previous-within-page");*/
3663 }
3664 
3665 /**
3666  * fo_table_and_caption_get_margin_bottom:
3667  * @fo_fo: The @FoFo object.
3668  *
3669  * Gets the "margin-bottom" property of @fo_fo.
3670  *
3671  * Return value: The "margin-bottom" property value.
3672 **/
3673 FoProperty *
fo_table_and_caption_get_margin_bottom(FoFo * fo_fo)3674 fo_table_and_caption_get_margin_bottom (FoFo *fo_fo)
3675 {
3676   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3677 
3678   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3679   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3680 
3681   return fo_table_and_caption->margin_bottom;
3682 }
3683 
3684 /**
3685  * fo_table_and_caption_set_margin_bottom:
3686  * @fo_fo: The #FoFo object.
3687  * @new_margin_bottom: The new "margin-bottom" property value.
3688  *
3689  * Sets the "margin-bottom" property of @fo_fo to @new_margin_bottom.
3690  **/
3691 void
fo_table_and_caption_set_margin_bottom(FoFo * fo_fo,FoProperty * new_margin_bottom)3692 fo_table_and_caption_set_margin_bottom (FoFo *fo_fo,
3693 		         FoProperty *new_margin_bottom)
3694 {
3695   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3696 
3697   g_return_if_fail (fo_table_and_caption != NULL);
3698   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3699   g_return_if_fail ((new_margin_bottom == NULL) ||
3700 		    FO_IS_PROPERTY_MARGIN_BOTTOM (new_margin_bottom));
3701 
3702   if (new_margin_bottom != NULL)
3703     {
3704       g_object_ref (new_margin_bottom);
3705     }
3706   if (fo_table_and_caption->margin_bottom != NULL)
3707     {
3708       g_object_unref (fo_table_and_caption->margin_bottom);
3709     }
3710   fo_table_and_caption->margin_bottom = new_margin_bottom;
3711   /*g_object_notify (G_OBJECT (fo_table_and_caption), "margin-bottom");*/
3712 }
3713 
3714 /**
3715  * fo_table_and_caption_get_margin_left:
3716  * @fo_fo: The @FoFo object.
3717  *
3718  * Gets the "margin-left" property of @fo_fo.
3719  *
3720  * Return value: The "margin-left" property value.
3721 **/
3722 FoProperty *
fo_table_and_caption_get_margin_left(FoFo * fo_fo)3723 fo_table_and_caption_get_margin_left (FoFo *fo_fo)
3724 {
3725   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3726 
3727   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3728   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3729 
3730   return fo_table_and_caption->margin_left;
3731 }
3732 
3733 /**
3734  * fo_table_and_caption_set_margin_left:
3735  * @fo_fo: The #FoFo object.
3736  * @new_margin_left: The new "margin-left" property value.
3737  *
3738  * Sets the "margin-left" property of @fo_fo to @new_margin_left.
3739  **/
3740 void
fo_table_and_caption_set_margin_left(FoFo * fo_fo,FoProperty * new_margin_left)3741 fo_table_and_caption_set_margin_left (FoFo *fo_fo,
3742 		         FoProperty *new_margin_left)
3743 {
3744   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3745 
3746   g_return_if_fail (fo_table_and_caption != NULL);
3747   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3748   g_return_if_fail ((new_margin_left == NULL) ||
3749 		    FO_IS_PROPERTY_MARGIN_LEFT (new_margin_left));
3750 
3751   if (new_margin_left != NULL)
3752     {
3753       g_object_ref (new_margin_left);
3754     }
3755   if (fo_table_and_caption->margin_left != NULL)
3756     {
3757       g_object_unref (fo_table_and_caption->margin_left);
3758     }
3759   fo_table_and_caption->margin_left = new_margin_left;
3760   /*g_object_notify (G_OBJECT (fo_table_and_caption), "margin-left");*/
3761 }
3762 
3763 /**
3764  * fo_table_and_caption_get_margin_right:
3765  * @fo_fo: The @FoFo object.
3766  *
3767  * Gets the "margin-right" property of @fo_fo.
3768  *
3769  * Return value: The "margin-right" property value.
3770 **/
3771 FoProperty *
fo_table_and_caption_get_margin_right(FoFo * fo_fo)3772 fo_table_and_caption_get_margin_right (FoFo *fo_fo)
3773 {
3774   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3775 
3776   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3777   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3778 
3779   return fo_table_and_caption->margin_right;
3780 }
3781 
3782 /**
3783  * fo_table_and_caption_set_margin_right:
3784  * @fo_fo: The #FoFo object.
3785  * @new_margin_right: The new "margin-right" property value.
3786  *
3787  * Sets the "margin-right" property of @fo_fo to @new_margin_right.
3788  **/
3789 void
fo_table_and_caption_set_margin_right(FoFo * fo_fo,FoProperty * new_margin_right)3790 fo_table_and_caption_set_margin_right (FoFo *fo_fo,
3791 		         FoProperty *new_margin_right)
3792 {
3793   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3794 
3795   g_return_if_fail (fo_table_and_caption != NULL);
3796   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3797   g_return_if_fail ((new_margin_right == NULL) ||
3798 		    FO_IS_PROPERTY_MARGIN_RIGHT (new_margin_right));
3799 
3800   if (new_margin_right != NULL)
3801     {
3802       g_object_ref (new_margin_right);
3803     }
3804   if (fo_table_and_caption->margin_right != NULL)
3805     {
3806       g_object_unref (fo_table_and_caption->margin_right);
3807     }
3808   fo_table_and_caption->margin_right = new_margin_right;
3809   /*g_object_notify (G_OBJECT (fo_table_and_caption), "margin-right");*/
3810 }
3811 
3812 /**
3813  * fo_table_and_caption_get_margin_top:
3814  * @fo_fo: The @FoFo object.
3815  *
3816  * Gets the "margin-top" property of @fo_fo.
3817  *
3818  * Return value: The "margin-top" property value.
3819 **/
3820 FoProperty *
fo_table_and_caption_get_margin_top(FoFo * fo_fo)3821 fo_table_and_caption_get_margin_top (FoFo *fo_fo)
3822 {
3823   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3824 
3825   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3826   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3827 
3828   return fo_table_and_caption->margin_top;
3829 }
3830 
3831 /**
3832  * fo_table_and_caption_set_margin_top:
3833  * @fo_fo: The #FoFo object.
3834  * @new_margin_top: The new "margin-top" property value.
3835  *
3836  * Sets the "margin-top" property of @fo_fo to @new_margin_top.
3837  **/
3838 void
fo_table_and_caption_set_margin_top(FoFo * fo_fo,FoProperty * new_margin_top)3839 fo_table_and_caption_set_margin_top (FoFo *fo_fo,
3840 		         FoProperty *new_margin_top)
3841 {
3842   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3843 
3844   g_return_if_fail (fo_table_and_caption != NULL);
3845   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3846   g_return_if_fail ((new_margin_top == NULL) ||
3847 		    FO_IS_PROPERTY_MARGIN_TOP (new_margin_top));
3848 
3849   if (new_margin_top != NULL)
3850     {
3851       g_object_ref (new_margin_top);
3852     }
3853   if (fo_table_and_caption->margin_top != NULL)
3854     {
3855       g_object_unref (fo_table_and_caption->margin_top);
3856     }
3857   fo_table_and_caption->margin_top = new_margin_top;
3858   /*g_object_notify (G_OBJECT (fo_table_and_caption), "margin-top");*/
3859 }
3860 
3861 /**
3862  * fo_table_and_caption_get_padding_after:
3863  * @fo_fo: The @FoFo object.
3864  *
3865  * Gets the "padding-after" property of @fo_fo.
3866  *
3867  * Return value: The "padding-after" property value.
3868 **/
3869 FoProperty *
fo_table_and_caption_get_padding_after(FoFo * fo_fo)3870 fo_table_and_caption_get_padding_after (FoFo *fo_fo)
3871 {
3872   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3873 
3874   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3875   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3876 
3877   return fo_table_and_caption->padding_after;
3878 }
3879 
3880 /**
3881  * fo_table_and_caption_set_padding_after:
3882  * @fo_fo: The #FoFo object.
3883  * @new_padding_after: The new "padding-after" property value.
3884  *
3885  * Sets the "padding-after" property of @fo_fo to @new_padding_after.
3886  **/
3887 void
fo_table_and_caption_set_padding_after(FoFo * fo_fo,FoProperty * new_padding_after)3888 fo_table_and_caption_set_padding_after (FoFo *fo_fo,
3889 		         FoProperty *new_padding_after)
3890 {
3891   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3892 
3893   g_return_if_fail (fo_table_and_caption != NULL);
3894   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3895   g_return_if_fail ((new_padding_after == NULL) ||
3896 		    FO_IS_PROPERTY_PADDING_AFTER (new_padding_after));
3897 
3898   if (new_padding_after != NULL)
3899     {
3900       g_object_ref (new_padding_after);
3901     }
3902   if (fo_table_and_caption->padding_after != NULL)
3903     {
3904       g_object_unref (fo_table_and_caption->padding_after);
3905     }
3906   fo_table_and_caption->padding_after = new_padding_after;
3907   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-after");*/
3908 }
3909 
3910 /**
3911  * fo_table_and_caption_get_padding_before:
3912  * @fo_fo: The @FoFo object.
3913  *
3914  * Gets the "padding-before" property of @fo_fo.
3915  *
3916  * Return value: The "padding-before" property value.
3917 **/
3918 FoProperty *
fo_table_and_caption_get_padding_before(FoFo * fo_fo)3919 fo_table_and_caption_get_padding_before (FoFo *fo_fo)
3920 {
3921   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3922 
3923   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3924   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3925 
3926   return fo_table_and_caption->padding_before;
3927 }
3928 
3929 /**
3930  * fo_table_and_caption_set_padding_before:
3931  * @fo_fo: The #FoFo object.
3932  * @new_padding_before: The new "padding-before" property value.
3933  *
3934  * Sets the "padding-before" property of @fo_fo to @new_padding_before.
3935  **/
3936 void
fo_table_and_caption_set_padding_before(FoFo * fo_fo,FoProperty * new_padding_before)3937 fo_table_and_caption_set_padding_before (FoFo *fo_fo,
3938 		         FoProperty *new_padding_before)
3939 {
3940   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3941 
3942   g_return_if_fail (fo_table_and_caption != NULL);
3943   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3944   g_return_if_fail ((new_padding_before == NULL) ||
3945 		    FO_IS_PROPERTY_PADDING_BEFORE (new_padding_before));
3946 
3947   if (new_padding_before != NULL)
3948     {
3949       g_object_ref (new_padding_before);
3950     }
3951   if (fo_table_and_caption->padding_before != NULL)
3952     {
3953       g_object_unref (fo_table_and_caption->padding_before);
3954     }
3955   fo_table_and_caption->padding_before = new_padding_before;
3956   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-before");*/
3957 }
3958 
3959 /**
3960  * fo_table_and_caption_get_padding_bottom:
3961  * @fo_fo: The @FoFo object.
3962  *
3963  * Gets the "padding-bottom" property of @fo_fo.
3964  *
3965  * Return value: The "padding-bottom" property value.
3966 **/
3967 FoProperty *
fo_table_and_caption_get_padding_bottom(FoFo * fo_fo)3968 fo_table_and_caption_get_padding_bottom (FoFo *fo_fo)
3969 {
3970   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3971 
3972   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
3973   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
3974 
3975   return fo_table_and_caption->padding_bottom;
3976 }
3977 
3978 /**
3979  * fo_table_and_caption_set_padding_bottom:
3980  * @fo_fo: The #FoFo object.
3981  * @new_padding_bottom: The new "padding-bottom" property value.
3982  *
3983  * Sets the "padding-bottom" property of @fo_fo to @new_padding_bottom.
3984  **/
3985 void
fo_table_and_caption_set_padding_bottom(FoFo * fo_fo,FoProperty * new_padding_bottom)3986 fo_table_and_caption_set_padding_bottom (FoFo *fo_fo,
3987 		         FoProperty *new_padding_bottom)
3988 {
3989   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
3990 
3991   g_return_if_fail (fo_table_and_caption != NULL);
3992   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
3993   g_return_if_fail ((new_padding_bottom == NULL) ||
3994 		    FO_IS_PROPERTY_PADDING_BOTTOM (new_padding_bottom));
3995 
3996   if (new_padding_bottom != NULL)
3997     {
3998       g_object_ref (new_padding_bottom);
3999     }
4000   if (fo_table_and_caption->padding_bottom != NULL)
4001     {
4002       g_object_unref (fo_table_and_caption->padding_bottom);
4003     }
4004   fo_table_and_caption->padding_bottom = new_padding_bottom;
4005   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-bottom");*/
4006 }
4007 
4008 /**
4009  * fo_table_and_caption_get_padding_end:
4010  * @fo_fo: The @FoFo object.
4011  *
4012  * Gets the "padding-end" property of @fo_fo.
4013  *
4014  * Return value: The "padding-end" property value.
4015 **/
4016 FoProperty *
fo_table_and_caption_get_padding_end(FoFo * fo_fo)4017 fo_table_and_caption_get_padding_end (FoFo *fo_fo)
4018 {
4019   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4020 
4021   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4022   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4023 
4024   return fo_table_and_caption->padding_end;
4025 }
4026 
4027 /**
4028  * fo_table_and_caption_set_padding_end:
4029  * @fo_fo: The #FoFo object.
4030  * @new_padding_end: The new "padding-end" property value.
4031  *
4032  * Sets the "padding-end" property of @fo_fo to @new_padding_end.
4033  **/
4034 void
fo_table_and_caption_set_padding_end(FoFo * fo_fo,FoProperty * new_padding_end)4035 fo_table_and_caption_set_padding_end (FoFo *fo_fo,
4036 		         FoProperty *new_padding_end)
4037 {
4038   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4039 
4040   g_return_if_fail (fo_table_and_caption != NULL);
4041   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4042   g_return_if_fail ((new_padding_end == NULL) ||
4043 		    FO_IS_PROPERTY_PADDING_END (new_padding_end));
4044 
4045   if (new_padding_end != NULL)
4046     {
4047       g_object_ref (new_padding_end);
4048     }
4049   if (fo_table_and_caption->padding_end != NULL)
4050     {
4051       g_object_unref (fo_table_and_caption->padding_end);
4052     }
4053   fo_table_and_caption->padding_end = new_padding_end;
4054   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-end");*/
4055 }
4056 
4057 /**
4058  * fo_table_and_caption_get_padding_left:
4059  * @fo_fo: The @FoFo object.
4060  *
4061  * Gets the "padding-left" property of @fo_fo.
4062  *
4063  * Return value: The "padding-left" property value.
4064 **/
4065 FoProperty *
fo_table_and_caption_get_padding_left(FoFo * fo_fo)4066 fo_table_and_caption_get_padding_left (FoFo *fo_fo)
4067 {
4068   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4069 
4070   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4071   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4072 
4073   return fo_table_and_caption->padding_left;
4074 }
4075 
4076 /**
4077  * fo_table_and_caption_set_padding_left:
4078  * @fo_fo: The #FoFo object.
4079  * @new_padding_left: The new "padding-left" property value.
4080  *
4081  * Sets the "padding-left" property of @fo_fo to @new_padding_left.
4082  **/
4083 void
fo_table_and_caption_set_padding_left(FoFo * fo_fo,FoProperty * new_padding_left)4084 fo_table_and_caption_set_padding_left (FoFo *fo_fo,
4085 		         FoProperty *new_padding_left)
4086 {
4087   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4088 
4089   g_return_if_fail (fo_table_and_caption != NULL);
4090   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4091   g_return_if_fail ((new_padding_left == NULL) ||
4092 		    FO_IS_PROPERTY_PADDING_LEFT (new_padding_left));
4093 
4094   if (new_padding_left != NULL)
4095     {
4096       g_object_ref (new_padding_left);
4097     }
4098   if (fo_table_and_caption->padding_left != NULL)
4099     {
4100       g_object_unref (fo_table_and_caption->padding_left);
4101     }
4102   fo_table_and_caption->padding_left = new_padding_left;
4103   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-left");*/
4104 }
4105 
4106 /**
4107  * fo_table_and_caption_get_padding_right:
4108  * @fo_fo: The @FoFo object.
4109  *
4110  * Gets the "padding-right" property of @fo_fo.
4111  *
4112  * Return value: The "padding-right" property value.
4113 **/
4114 FoProperty *
fo_table_and_caption_get_padding_right(FoFo * fo_fo)4115 fo_table_and_caption_get_padding_right (FoFo *fo_fo)
4116 {
4117   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4118 
4119   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4120   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4121 
4122   return fo_table_and_caption->padding_right;
4123 }
4124 
4125 /**
4126  * fo_table_and_caption_set_padding_right:
4127  * @fo_fo: The #FoFo object.
4128  * @new_padding_right: The new "padding-right" property value.
4129  *
4130  * Sets the "padding-right" property of @fo_fo to @new_padding_right.
4131  **/
4132 void
fo_table_and_caption_set_padding_right(FoFo * fo_fo,FoProperty * new_padding_right)4133 fo_table_and_caption_set_padding_right (FoFo *fo_fo,
4134 		         FoProperty *new_padding_right)
4135 {
4136   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4137 
4138   g_return_if_fail (fo_table_and_caption != NULL);
4139   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4140   g_return_if_fail ((new_padding_right == NULL) ||
4141 		    FO_IS_PROPERTY_PADDING_RIGHT (new_padding_right));
4142 
4143   if (new_padding_right != NULL)
4144     {
4145       g_object_ref (new_padding_right);
4146     }
4147   if (fo_table_and_caption->padding_right != NULL)
4148     {
4149       g_object_unref (fo_table_and_caption->padding_right);
4150     }
4151   fo_table_and_caption->padding_right = new_padding_right;
4152   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-right");*/
4153 }
4154 
4155 /**
4156  * fo_table_and_caption_get_padding_start:
4157  * @fo_fo: The @FoFo object.
4158  *
4159  * Gets the "padding-start" property of @fo_fo.
4160  *
4161  * Return value: The "padding-start" property value.
4162 **/
4163 FoProperty *
fo_table_and_caption_get_padding_start(FoFo * fo_fo)4164 fo_table_and_caption_get_padding_start (FoFo *fo_fo)
4165 {
4166   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4167 
4168   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4169   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4170 
4171   return fo_table_and_caption->padding_start;
4172 }
4173 
4174 /**
4175  * fo_table_and_caption_set_padding_start:
4176  * @fo_fo: The #FoFo object.
4177  * @new_padding_start: The new "padding-start" property value.
4178  *
4179  * Sets the "padding-start" property of @fo_fo to @new_padding_start.
4180  **/
4181 void
fo_table_and_caption_set_padding_start(FoFo * fo_fo,FoProperty * new_padding_start)4182 fo_table_and_caption_set_padding_start (FoFo *fo_fo,
4183 		         FoProperty *new_padding_start)
4184 {
4185   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4186 
4187   g_return_if_fail (fo_table_and_caption != NULL);
4188   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4189   g_return_if_fail ((new_padding_start == NULL) ||
4190 		    FO_IS_PROPERTY_PADDING_START (new_padding_start));
4191 
4192   if (new_padding_start != NULL)
4193     {
4194       g_object_ref (new_padding_start);
4195     }
4196   if (fo_table_and_caption->padding_start != NULL)
4197     {
4198       g_object_unref (fo_table_and_caption->padding_start);
4199     }
4200   fo_table_and_caption->padding_start = new_padding_start;
4201   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-start");*/
4202 }
4203 
4204 /**
4205  * fo_table_and_caption_get_padding_top:
4206  * @fo_fo: The @FoFo object.
4207  *
4208  * Gets the "padding-top" property of @fo_fo.
4209  *
4210  * Return value: The "padding-top" property value.
4211 **/
4212 FoProperty *
fo_table_and_caption_get_padding_top(FoFo * fo_fo)4213 fo_table_and_caption_get_padding_top (FoFo *fo_fo)
4214 {
4215   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4216 
4217   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4218   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4219 
4220   return fo_table_and_caption->padding_top;
4221 }
4222 
4223 /**
4224  * fo_table_and_caption_set_padding_top:
4225  * @fo_fo: The #FoFo object.
4226  * @new_padding_top: The new "padding-top" property value.
4227  *
4228  * Sets the "padding-top" property of @fo_fo to @new_padding_top.
4229  **/
4230 void
fo_table_and_caption_set_padding_top(FoFo * fo_fo,FoProperty * new_padding_top)4231 fo_table_and_caption_set_padding_top (FoFo *fo_fo,
4232 		         FoProperty *new_padding_top)
4233 {
4234   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4235 
4236   g_return_if_fail (fo_table_and_caption != NULL);
4237   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4238   g_return_if_fail ((new_padding_top == NULL) ||
4239 		    FO_IS_PROPERTY_PADDING_TOP (new_padding_top));
4240 
4241   if (new_padding_top != NULL)
4242     {
4243       g_object_ref (new_padding_top);
4244     }
4245   if (fo_table_and_caption->padding_top != NULL)
4246     {
4247       g_object_unref (fo_table_and_caption->padding_top);
4248     }
4249   fo_table_and_caption->padding_top = new_padding_top;
4250   /*g_object_notify (G_OBJECT (fo_table_and_caption), "padding-top");*/
4251 }
4252 
4253 /**
4254  * fo_table_and_caption_get_role:
4255  * @fo_fo: The @FoFo object.
4256  *
4257  * Gets the "role" property of @fo_fo.
4258  *
4259  * Return value: The "role" property value.
4260 **/
4261 FoProperty *
fo_table_and_caption_get_role(FoFo * fo_fo)4262 fo_table_and_caption_get_role (FoFo *fo_fo)
4263 {
4264   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4265 
4266   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4267   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4268 
4269   return fo_table_and_caption->role;
4270 }
4271 
4272 /**
4273  * fo_table_and_caption_set_role:
4274  * @fo_fo: The #FoFo object.
4275  * @new_role: The new "role" property value.
4276  *
4277  * Sets the "role" property of @fo_fo to @new_role.
4278  **/
4279 void
fo_table_and_caption_set_role(FoFo * fo_fo,FoProperty * new_role)4280 fo_table_and_caption_set_role (FoFo *fo_fo,
4281 		         FoProperty *new_role)
4282 {
4283   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4284 
4285   g_return_if_fail (fo_table_and_caption != NULL);
4286   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4287   g_return_if_fail ((new_role == NULL) ||
4288 		    FO_IS_PROPERTY_ROLE (new_role));
4289 
4290   if (new_role != NULL)
4291     {
4292       g_object_ref (new_role);
4293     }
4294   if (fo_table_and_caption->role != NULL)
4295     {
4296       g_object_unref (fo_table_and_caption->role);
4297     }
4298   fo_table_and_caption->role = new_role;
4299   /*g_object_notify (G_OBJECT (fo_table_and_caption), "role");*/
4300 }
4301 
4302 /**
4303  * fo_table_and_caption_get_source_document:
4304  * @fo_fo: The @FoFo object.
4305  *
4306  * Gets the "source-document" property of @fo_fo.
4307  *
4308  * Return value: The "source-document" property value.
4309 **/
4310 FoProperty *
fo_table_and_caption_get_source_document(FoFo * fo_fo)4311 fo_table_and_caption_get_source_document (FoFo *fo_fo)
4312 {
4313   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4314 
4315   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4316   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4317 
4318   return fo_table_and_caption->source_document;
4319 }
4320 
4321 /**
4322  * fo_table_and_caption_set_source_document:
4323  * @fo_fo: The #FoFo object.
4324  * @new_source_document: The new "source-document" property value.
4325  *
4326  * Sets the "source-document" property of @fo_fo to @new_source_document.
4327  **/
4328 void
fo_table_and_caption_set_source_document(FoFo * fo_fo,FoProperty * new_source_document)4329 fo_table_and_caption_set_source_document (FoFo *fo_fo,
4330 		         FoProperty *new_source_document)
4331 {
4332   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4333 
4334   g_return_if_fail (fo_table_and_caption != NULL);
4335   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4336   g_return_if_fail ((new_source_document == NULL) ||
4337 		    FO_IS_PROPERTY_SOURCE_DOCUMENT (new_source_document));
4338 
4339   if (new_source_document != NULL)
4340     {
4341       g_object_ref (new_source_document);
4342     }
4343   if (fo_table_and_caption->source_document != NULL)
4344     {
4345       g_object_unref (fo_table_and_caption->source_document);
4346     }
4347   fo_table_and_caption->source_document = new_source_document;
4348   /*g_object_notify (G_OBJECT (fo_table_and_caption), "source-document");*/
4349 }
4350 
4351 /**
4352  * fo_table_and_caption_get_space_after:
4353  * @fo_fo: The @FoFo object.
4354  *
4355  * Gets the "space-after" property of @fo_fo.
4356  *
4357  * Return value: The "space-after" property value.
4358 **/
4359 FoProperty *
fo_table_and_caption_get_space_after(FoFo * fo_fo)4360 fo_table_and_caption_get_space_after (FoFo *fo_fo)
4361 {
4362   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4363 
4364   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4365   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4366 
4367   return fo_table_and_caption->space_after;
4368 }
4369 
4370 /**
4371  * fo_table_and_caption_set_space_after:
4372  * @fo_fo: The #FoFo object.
4373  * @new_space_after: The new "space-after" property value.
4374  *
4375  * Sets the "space-after" property of @fo_fo to @new_space_after.
4376  **/
4377 void
fo_table_and_caption_set_space_after(FoFo * fo_fo,FoProperty * new_space_after)4378 fo_table_and_caption_set_space_after (FoFo *fo_fo,
4379 		         FoProperty *new_space_after)
4380 {
4381   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4382 
4383   g_return_if_fail (fo_table_and_caption != NULL);
4384   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4385   g_return_if_fail ((new_space_after == NULL) ||
4386 		    FO_IS_PROPERTY_SPACE_AFTER (new_space_after));
4387 
4388   if (new_space_after != NULL)
4389     {
4390       g_object_ref (new_space_after);
4391     }
4392   if (fo_table_and_caption->space_after != NULL)
4393     {
4394       g_object_unref (fo_table_and_caption->space_after);
4395     }
4396   fo_table_and_caption->space_after = new_space_after;
4397   /*g_object_notify (G_OBJECT (fo_table_and_caption), "space-after");*/
4398 }
4399 
4400 /**
4401  * fo_table_and_caption_get_space_before:
4402  * @fo_fo: The @FoFo object.
4403  *
4404  * Gets the "space-before" property of @fo_fo.
4405  *
4406  * Return value: The "space-before" property value.
4407 **/
4408 FoProperty *
fo_table_and_caption_get_space_before(FoFo * fo_fo)4409 fo_table_and_caption_get_space_before (FoFo *fo_fo)
4410 {
4411   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4412 
4413   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4414   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4415 
4416   return fo_table_and_caption->space_before;
4417 }
4418 
4419 /**
4420  * fo_table_and_caption_set_space_before:
4421  * @fo_fo: The #FoFo object.
4422  * @new_space_before: The new "space-before" property value.
4423  *
4424  * Sets the "space-before" property of @fo_fo to @new_space_before.
4425  **/
4426 void
fo_table_and_caption_set_space_before(FoFo * fo_fo,FoProperty * new_space_before)4427 fo_table_and_caption_set_space_before (FoFo *fo_fo,
4428 		         FoProperty *new_space_before)
4429 {
4430   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4431 
4432   g_return_if_fail (fo_table_and_caption != NULL);
4433   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4434   g_return_if_fail ((new_space_before == NULL) ||
4435 		    FO_IS_PROPERTY_SPACE_BEFORE (new_space_before));
4436 
4437   if (new_space_before != NULL)
4438     {
4439       g_object_ref (new_space_before);
4440     }
4441   if (fo_table_and_caption->space_before != NULL)
4442     {
4443       g_object_unref (fo_table_and_caption->space_before);
4444     }
4445   fo_table_and_caption->space_before = new_space_before;
4446   /*g_object_notify (G_OBJECT (fo_table_and_caption), "space-before");*/
4447 }
4448 
4449 /**
4450  * fo_table_and_caption_get_start_indent:
4451  * @fo_fo: The @FoFo object.
4452  *
4453  * Gets the "start-indent" property of @fo_fo.
4454  *
4455  * Return value: The "start-indent" property value.
4456 **/
4457 FoProperty *
fo_table_and_caption_get_start_indent(FoFo * fo_fo)4458 fo_table_and_caption_get_start_indent (FoFo *fo_fo)
4459 {
4460   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4461 
4462   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4463   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4464 
4465   return fo_table_and_caption->start_indent;
4466 }
4467 
4468 /**
4469  * fo_table_and_caption_set_start_indent:
4470  * @fo_fo: The #FoFo object.
4471  * @new_start_indent: The new "start-indent" property value.
4472  *
4473  * Sets the "start-indent" property of @fo_fo to @new_start_indent.
4474  **/
4475 void
fo_table_and_caption_set_start_indent(FoFo * fo_fo,FoProperty * new_start_indent)4476 fo_table_and_caption_set_start_indent (FoFo *fo_fo,
4477 		         FoProperty *new_start_indent)
4478 {
4479   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4480 
4481   g_return_if_fail (fo_table_and_caption != NULL);
4482   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4483   g_return_if_fail ((new_start_indent == NULL) ||
4484 		    FO_IS_PROPERTY_START_INDENT (new_start_indent));
4485 
4486   if (new_start_indent != NULL)
4487     {
4488       g_object_ref (new_start_indent);
4489     }
4490   if (fo_table_and_caption->start_indent != NULL)
4491     {
4492       g_object_unref (fo_table_and_caption->start_indent);
4493     }
4494   fo_table_and_caption->start_indent = new_start_indent;
4495   /*g_object_notify (G_OBJECT (fo_table_and_caption), "start-indent");*/
4496 }
4497 
4498 /**
4499  * fo_table_and_caption_get_text_align:
4500  * @fo_fo: The @FoFo object.
4501  *
4502  * Gets the "text-align" property of @fo_fo.
4503  *
4504  * Return value: The "text-align" property value.
4505 **/
4506 FoProperty *
fo_table_and_caption_get_text_align(FoFo * fo_fo)4507 fo_table_and_caption_get_text_align (FoFo *fo_fo)
4508 {
4509   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4510 
4511   g_return_val_if_fail (fo_table_and_caption != NULL, NULL);
4512   g_return_val_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption), NULL);
4513 
4514   return fo_table_and_caption->text_align;
4515 }
4516 
4517 /**
4518  * fo_table_and_caption_set_text_align:
4519  * @fo_fo: The #FoFo object.
4520  * @new_text_align: The new "text-align" property value.
4521  *
4522  * Sets the "text-align" property of @fo_fo to @new_text_align.
4523  **/
4524 void
fo_table_and_caption_set_text_align(FoFo * fo_fo,FoProperty * new_text_align)4525 fo_table_and_caption_set_text_align (FoFo *fo_fo,
4526 		         FoProperty *new_text_align)
4527 {
4528   FoTableAndCaption *fo_table_and_caption = (FoTableAndCaption *) fo_fo;
4529 
4530   g_return_if_fail (fo_table_and_caption != NULL);
4531   g_return_if_fail (FO_IS_TABLE_AND_CAPTION (fo_table_and_caption));
4532   g_return_if_fail ((new_text_align == NULL) ||
4533 		    FO_IS_PROPERTY_TEXT_ALIGN (new_text_align));
4534 
4535   if (new_text_align != NULL)
4536     {
4537       g_object_ref (new_text_align);
4538     }
4539   if (fo_table_and_caption->text_align != NULL)
4540     {
4541       g_object_unref (fo_table_and_caption->text_align);
4542     }
4543   fo_table_and_caption->text_align = new_text_align;
4544   /*g_object_notify (G_OBJECT (fo_table_and_caption), "text-align");*/
4545 }
4546