summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@src.gnome.org>2003-04-08 20:16:13 +0000
committerDodji Seketeli <dodji@src.gnome.org>2003-04-08 20:16:13 +0000
commitf5afed3647bc587c4cc0a2242f654c597f9b157f (patch)
tree43a55014293eb4a2b79ac4083cd484a0b02c4d13 /src
parentdca3db5e31dec3000f198514a596ce0fd13e48ed (diff)
downloadlibcroco-f5afed3647bc587c4cc0a2242f654c597f9b157f.tar.gz
more box debuging code.
Dodji.
Diffstat (limited to 'src')
-rw-r--r--src/cr-box.c167
-rw-r--r--src/cr-box.h5
-rw-r--r--src/cr-lay-eng.c2
-rw-r--r--src/cr-utils.c4
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) ;
}
}