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