diff options
author | Dodji Seketeli <dodji@src.gnome.org> | 2003-04-08 20:16:13 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@src.gnome.org> | 2003-04-08 20:16:13 +0000 |
commit | f5afed3647bc587c4cc0a2242f654c597f9b157f (patch) | |
tree | 43a55014293eb4a2b79ac4083cd484a0b02c4d13 /src | |
parent | dca3db5e31dec3000f198514a596ce0fd13e48ed (diff) | |
download | libcroco-f5afed3647bc587c4cc0a2242f654c597f9b157f.tar.gz |
more box debuging code.
Dodji.
Diffstat (limited to 'src')
-rw-r--r-- | src/cr-box.c | 167 | ||||
-rw-r--r-- | src/cr-box.h | 5 | ||||
-rw-r--r-- | src/cr-lay-eng.c | 2 | ||||
-rw-r--r-- | src/cr-utils.c | 4 |
4 files changed, 138 insertions, 40 deletions
diff --git a/src/cr-box.c b/src/cr-box.c index 5ed3d3d..0cd11c7 100644 --- a/src/cr-box.c +++ b/src/cr-box.c @@ -376,8 +376,8 @@ cr_box_edge_to_string (CRBoxEdge *a_this, (long int)a_this->height) ; cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - g_string_printf (result, "x_offset: %ld\n", - (long int)a_this->x_offset) ; + g_string_append_printf (result, "x_offset: %ld\n", + (long int)a_this->x_offset) ; cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; g_string_append_printf (result, "y_offset: %ld\n", @@ -435,6 +435,8 @@ cr_box_content_new_from_text (guchar *a_text) { CRBoxContent *result = NULL ; + g_return_val_if_fail (a_text, NULL) ; + result = g_try_malloc (sizeof (CRBoxContent)) ; if (!result) { @@ -588,6 +590,7 @@ cr_box_to_string (CRBox *a_this, GString **a_string) { GString *result = NULL ; + CRBox *cur_box = NULL ; g_return_val_if_fail (a_this && a_string, CR_BAD_PARAM_ERROR) ; @@ -604,57 +607,145 @@ cr_box_to_string (CRBox *a_this, cr_utils_trace_info ("Out of memory") ; return CR_ERROR ; } + *a_string = result ; } - cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - - switch (a_this->type) + for (cur_box = a_this ; cur_box ; cur_box = cur_box->next) { - case BOX_TYPE_BLOCK: - g_string_printf (result, "BLOCK") ; - break ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - case BOX_TYPE_ANONYMOUS_BLOCK: - g_string_printf (result, "ANONYMOUS BLOCK") ; - break ; + switch (cur_box->type) + { + case BOX_TYPE_BLOCK: + g_string_append_printf (result, "BLOCK") ; + break ; - case BOX_TYPE_INLINE: - g_string_printf (result, "INLINE") ; - break ; + case BOX_TYPE_ANONYMOUS_BLOCK: + g_string_append_printf (result, "ANONYMOUS BLOCK") ; + break ; - case BOX_TYPE_ANONYMOUS_INLINE: - g_string_printf (result, "ANONYMOUS INLINE") ; - break ; + case BOX_TYPE_INLINE: + g_string_append_printf (result, "INLINE") ; + break ; - case BOX_TYPE_COMPACT: - g_string_printf (result, "COMPACT") ; - break ; + case BOX_TYPE_ANONYMOUS_INLINE: + g_string_append_printf (result, "ANONYMOUS INLINE") ; + break ; - case BOX_TYPE_RUN_IN: - g_string_printf (result, "RUN IN") ; - break ; + case BOX_TYPE_COMPACT: + g_string_append_printf (result, "COMPACT") ; + break ; - default: - g_string_printf (result, "UNKNOWN") ; - break ; - } - g_string_printf (result, " box\n") ; - cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - g_string_printf (result, "{") ; - - cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - g_string_printf (result, "*****%s*****\n", "outer_edge") ; - cr_box_edge_to_string (&a_this->outer_edge, - a_nb_indent, &result) ; + case BOX_TYPE_RUN_IN: + g_string_append_printf (result, "RUN IN") ; + break ; + default: + g_string_append_printf (result, "UNKNOWN") ; + break ; + } + g_string_append_printf (result, " box\n") ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; + g_string_append_printf (result, "{") ; - g_string_printf (result, "\n") ; - cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; - g_string_printf (result, "}") ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s begin*****/\n", + "outer_edge") ; + cr_box_edge_to_string (&cur_box->outer_edge, + a_nb_indent + 2, &result) ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s end*****/\n", + "outer_edge") ; + + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s begin*****/\n", + "border_edge") ; + cr_box_edge_to_string (&cur_box->border_edge, + a_nb_indent + 2, &result) ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s end*****/\n", + "border_edge") ; + + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s begin*****/\n", + "padding_edge") ; + cr_box_edge_to_string (&cur_box->padding_edge, + a_nb_indent + 2, &result) ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s end*****/\n", + "padding_edge") ; + + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s begin*****/\n", + "inner_edge") ; + cr_box_edge_to_string (&cur_box->inner_edge, + a_nb_indent + 2, &result) ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent + 2) ; + g_string_append_printf (result, "/*****%s end*****/\n", + "inner_edge") ; + + if (cur_box->children) + { + g_string_append_printf (result, "\n") ; + cr_box_to_string (cur_box->children, + a_nb_indent + 2, &result) ; + g_string_append_printf (result, "\n") ; + } + + g_string_append_printf (result, "\n") ; + cr_utils_dump_n_chars2 (' ', result, a_nb_indent) ; + g_string_append_printf (result, "}\n") ; + } return CR_OK ; } +enum CRStatus +cr_box_dump_to_file (CRBox *a_this, + gulong a_nb_indent, + FILE *a_filep) +{ + GString *str = NULL ; + enum CRStatus status = CR_OK ; + + g_return_val_if_fail (a_this && a_filep, + CR_BAD_PARAM_ERROR) ; + + status = cr_box_to_string (a_this, a_nb_indent, &str) ; + + if (status != CR_OK) + { + cr_utils_trace_info ("An error occured " + "during in memory serialisation") ; + goto cleanup ; + } + + if (!str || !str->str) + { + cr_utils_trace_info ("Error: Box could not be serialised") ; + goto cleanup ; + } + + if (!fwrite (str->str, 1, str->len, a_filep)) + { + cr_utils_trace_info ("An error occured during" + "serialisation into file") ; + status = CR_ERROR ; + goto cleanup ; + } + + status = CR_OK ; + + cleanup: + + if (str) + { + g_string_free (str, TRUE) ; + str = NULL ; + } + return status ; +} + /** *Destructor of #CRBox. *recursively destroys all diff --git a/src/cr-box.h b/src/cr-box.h index 0d5ca0f..3cd4ec2 100644 --- a/src/cr-box.h +++ b/src/cr-box.h @@ -230,6 +230,11 @@ cr_box_to_string (CRBox *a_this, GString **a_string) ; enum CRStatus +cr_box_dump_to_file (CRBox *a_this, + gulong a_nb_indent, + FILE *a_filep) ; + +enum CRStatus cr_box_append_child (CRBox *a_this, CRBox *a_to_append) ; void diff --git a/src/cr-lay-eng.c b/src/cr-lay-eng.c index aa4b1dc..465a7c2 100644 --- a/src/cr-lay-eng.c +++ b/src/cr-lay-eng.c @@ -167,7 +167,7 @@ cr_lay_eng_create_box_tree_real (CRLayEng * a_this, *be updated later via the cr_box_reflow() method. */ cur_box = cr_box_new (style) ; - if (cur_box) + if (!cur_box) { cr_utils_trace_info ("Could not create a box") ; diff --git a/src/cr-utils.c b/src/cr-utils.c index f7c2aef..78bbe50 100644 --- a/src/cr-utils.c +++ b/src/cr-utils.c @@ -1427,9 +1427,11 @@ cr_utils_dump_n_chars2 (guchar a_char, { glong i = 0 ; + g_return_if_fail (a_string) ; + for (i = 0 ; i < a_nb ; i++) { - g_string_printf (a_string, "%c", a_char) ; + g_string_append_printf (a_string, "%c", a_char) ; } } |