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