33 #define DECLARATION_INDENT_NB 2
35 static void cr_statement_clear (
CRStatement * a_this);
38 parse_font_face_start_font_face_cb (
CRDocHandler * a_this,
45 g_return_if_fail (stmt);
48 g_return_if_fail (status ==
CR_OK);
52 parse_font_face_unrecoverable_error_cb (
CRDocHandler * a_this)
58 g_return_if_fail (a_this);
62 if (status !=
CR_OK) {
64 "This may lead to some memory leaks.");
77 CRTerm * a_value, gboolean a_important)
85 g_return_if_fail (a_this && a_name);
89 g_return_if_fail (status ==
CR_OK && stmt);
93 g_return_if_fail (name);
120 parse_font_face_end_font_face_cb (
CRDocHandler * a_this)
126 g_return_if_fail (a_this);
130 g_return_if_fail (status ==
CR_OK && result);
134 g_return_if_fail (status ==
CR_OK);
145 CRString *page_name = NULL, *pseudo_name = NULL ;
157 g_return_if_fail (stmt);
159 g_return_if_fail (status ==
CR_OK);
163 parse_page_unrecoverable_error_cb (
CRDocHandler * a_this)
169 g_return_if_fail (a_this);
173 if (status !=
CR_OK) {
175 "This may lead to some memory leaks.");
188 CRTerm * a_expression, gboolean a_important)
201 g_return_if_fail (name);
204 g_return_if_fail (decl);
222 g_return_if_fail (status ==
CR_OK && stmt);
226 g_return_if_fail (status ==
CR_OK);
231 GList * a_media_list,
236 GList *media_list = NULL;
238 g_return_if_fail (a_this && a_this->priv);
246 g_return_if_fail (media_list);
252 g_return_if_fail (status ==
CR_OK);
254 g_return_if_fail (status ==
CR_OK);
258 parse_at_media_unrecoverable_error_cb (
CRDocHandler * a_this)
264 g_return_if_fail (a_this);
268 if (status !=
CR_OK) {
270 "This may lead to some memory leaks.");
282 parse_at_media_start_selector_cb (
CRDocHandler * a_this,
290 g_return_if_fail (a_this && a_this->priv && a_sellist);
292 at_media_ptr = &at_media;
294 g_return_if_fail (status ==
CR_OK && at_media);
297 g_return_if_fail (ruleset);
299 g_return_if_fail (status ==
CR_OK);
305 gboolean a_important)
318 g_return_if_fail (a_this && a_name);
321 g_return_if_fail (name);
325 (gpointer *) stmtptr);
326 g_return_if_fail (status ==
CR_OK && stmt);
330 g_return_if_fail (decl);
333 g_return_if_fail (status ==
CR_OK);
349 g_return_if_fail (a_this && a_sellist);
353 g_return_if_fail (status ==
CR_OK && stmt
359 g_return_if_fail (status ==
CR_OK);
364 GList * a_media_list)
370 g_return_if_fail (a_this && a_this->priv);
372 at_media_ptr = &at_media;
374 (gpointer *) at_media_ptr);
375 g_return_if_fail (status ==
CR_OK && at_media);
385 g_return_if_fail (a_this && a_this->priv && a_sellist);
388 g_return_if_fail (ruleset);
394 parse_ruleset_unrecoverable_error_cb (
CRDocHandler * a_this)
402 if (status !=
CR_OK) {
404 "This may lead to some memory leaks.");
417 CRTerm * a_value, gboolean a_important)
425 g_return_if_fail (a_this && a_this->priv && a_name);
428 g_return_if_fail (stringue);
430 rulesetptr = &ruleset;
432 g_return_if_fail (status ==
CR_OK
437 g_return_if_fail (decl);
440 g_return_if_fail (status ==
CR_OK);
451 g_return_if_fail (a_this && a_sellist);
456 g_return_if_fail (status ==
CR_OK
464 g_return_if_fail (a_this);
466 switch (a_this->
type) {
509 cur; cur = cur->next) {
589 cr_statement_ruleset_to_string (
CRStatement const * a_this, glong a_indent)
591 GString *stringue = NULL;
592 gchar *tmp_str = NULL,
597 stringue = g_string_new (NULL);
607 g_string_append (stringue, tmp_str);
612 g_string_append (stringue,
" {\n");
618 g_string_append (stringue, tmp_str);
622 g_string_append (stringue,
"\n");
625 g_string_append (stringue,
"}");
626 result = stringue->str;
629 g_string_free (stringue, FALSE);
653 cr_statement_font_face_rule_to_string (
CRStatement const * a_this,
656 gchar *result = NULL, *tmp_str = NULL ;
657 GString *stringue = NULL ;
659 g_return_val_if_fail (a_this
664 stringue = g_string_new (NULL) ;
665 g_return_val_if_fail (stringue, NULL) ;
669 g_string_append (stringue,
"@font-face {\n");
674 g_string_append (stringue,
679 g_string_append (stringue,
"\n}");
682 result = stringue->str ;
683 g_string_free (stringue, FALSE) ;
701 cr_statement_charset_to_string (
CRStatement const *a_this,
705 GString *stringue = NULL ;
707 g_return_val_if_fail (a_this
717 g_return_val_if_fail (str, NULL);
718 stringue = g_string_new (NULL) ;
719 g_return_val_if_fail (stringue, NULL) ;
721 g_string_append_printf (stringue,
722 "@charset \"%s\" ;", str);
729 str = stringue->str ;
730 g_string_free (stringue, FALSE) ;
746 cr_statement_at_page_rule_to_string (
CRStatement const *a_this,
749 GString *stringue = NULL;
750 gchar *result = NULL ;
752 stringue = g_string_new (NULL) ;
755 g_string_append (stringue,
"@page");
758 g_string_append_printf
762 g_string_append (stringue,
" ");
766 g_string_append_printf
772 g_string_append (stringue,
" {\n");
777 g_string_append (stringue, str) ;
781 g_string_append (stringue,
"\n}\n");
783 result = stringue->str ;
784 g_string_free (stringue, FALSE) ;
798 cr_statement_media_rule_to_string (
CRStatement const *a_this,
802 GString *stringue = NULL ;
803 GList
const *cur = NULL;
809 stringue = g_string_new (NULL) ;
811 g_string_append (stringue,
"@media");
825 g_string_append_printf
833 g_string_append (stringue,
" {\n");
838 g_string_append (stringue, str) ;
842 g_string_append (stringue,
"\n}");
845 str = stringue->str ;
846 g_string_free (stringue, FALSE) ;
853 cr_statement_import_rule_to_string (
CRStatement const *a_this,
856 GString *stringue = NULL ;
859 g_return_val_if_fail (a_this
866 stringue = g_string_new (NULL) ;
867 g_return_val_if_fail (stringue, NULL) ;
872 g_string_append_printf (stringue,
873 "@import url(\"%s\")",
881 GList
const *cur = NULL;
884 cur; cur = cur->next) {
894 && crstr->stryng->str) {
898 crstr->stryng->len) ;
903 g_string_append (stringue,
" ;");
906 str = stringue->str ;
907 g_string_free (stringue, FALSE) ;
936 gboolean result = FALSE;
940 g_return_val_if_fail (parser, FALSE);
943 if (status !=
CR_OK) {
948 if (status ==
CR_OK) {
1003 (a_buf, a_encoding);
1010 (a_buf, a_encoding);
1018 (a_buf, a_encoding);
1025 (a_buf, a_encoding);
1056 g_return_val_if_fail (a_buf, NULL);
1061 g_return_val_if_fail (parser, NULL);
1064 g_return_val_if_fail (parser, NULL);
1066 sac_handler->start_selector = parse_ruleset_start_selector_cb;
1067 sac_handler->end_selector = parse_ruleset_end_selector_cb;
1068 sac_handler->property = parse_ruleset_property_cb;
1069 sac_handler->unrecoverable_error =
1070 parse_ruleset_unrecoverable_error_cb;
1075 if (status !=
CR_OK) {
1079 resultptr = &result;
1081 (gpointer *) resultptr);
1082 if (!((status ==
CR_OK) && result)) {
1093 sac_handler = NULL ;
1126 g_return_val_if_fail (a_sel_list, NULL);
1128 if (a_parent_media_rule) {
1129 g_return_val_if_fail
1160 if (a_parent_media_rule) {
1205 (
"Instantiation of the sac handler failed");
1209 sac_handler->start_media = parse_at_media_start_media_cb;
1210 sac_handler->start_selector = parse_at_media_start_selector_cb;
1211 sac_handler->property = parse_at_media_property_cb;
1212 sac_handler->end_selector = parse_at_media_end_selector_cb;
1213 sac_handler->end_media = parse_at_media_end_media_cb;
1214 sac_handler->unrecoverable_error =
1215 parse_at_media_unrecoverable_error_cb;
1218 if (status !=
CR_OK)
1222 if (status !=
CR_OK)
1226 if (status !=
CR_OK)
1229 resultptr = &result;
1231 (gpointer *) resultptr);
1232 if (status !=
CR_OK)
1240 sac_handler = NULL ;
1289 for (cur = a_rulesets; cur; cur = cur->
next) {
1292 "It should be a list of "
1293 "correct ruleset statement only !");
1296 cur->kind.ruleset->parent_media_rule = result;
1325 GList * a_media_list,
1352 if (a_container_sheet)
1377 GList *media_list = NULL;
1389 if (status !=
CR_OK)
1396 if (status !=
CR_OK || !import_string)
1404 import_string = NULL;
1415 media_list = g_list_next (media_list)) {
1416 if (media_list->data) {
1418 media_list->data = NULL;
1421 g_list_free (media_list);
1424 if (import_string) {
1426 import_string = NULL;
1506 g_return_val_if_fail (a_buf, NULL);
1518 (
"Instantiation of the sac handler failed.");
1522 sac_handler->start_page = parse_page_start_page_cb;
1523 sac_handler->property = parse_page_property_cb;
1524 sac_handler->end_page = parse_page_end_page_cb;
1525 sac_handler->unrecoverable_error = parse_page_unrecoverable_error_cb;
1528 if (status !=
CR_OK)
1533 if (status !=
CR_OK)
1536 if (status !=
CR_OK)
1539 resultptr = &result;
1541 (gpointer *) resultptr);
1548 sac_handler = NULL ;
1576 g_return_val_if_fail (a_charset, NULL);
1622 g_return_val_if_fail (a_buf, NULL);
1633 if (status !=
CR_OK)
1636 if (status !=
CR_OK || !charset)
1733 sac_handler->start_font_face = parse_font_face_start_font_face_cb;
1734 sac_handler->property = parse_font_face_property_cb;
1735 sac_handler->end_font_face = parse_font_face_end_font_face_cb;
1736 sac_handler->unrecoverable_error =
1737 parse_font_face_unrecoverable_error_cb;
1740 if (status !=
CR_OK)
1748 if (status !=
CR_OK)
1752 if (status !=
CR_OK)
1755 resultptr = &result;
1757 (gpointer *) resultptr);
1758 if (status !=
CR_OK || !result)
1765 sac_handler = NULL ;
1825 g_return_val_if_fail (a_new, NULL);
1832 for (cur = a_this; cur && cur->
next; cur = cur->
next) ;
1857 g_return_val_if_fail (a_new, NULL);
1862 a_new->
next = a_this;
1863 a_this->
prev = a_new;
1866 for (cur = a_new; cur && cur->
prev; cur = cur->
prev) ;
1887 g_return_val_if_fail (result, NULL);
1893 g_return_val_if_fail (a_stmt->
next->
prev == a_stmt, NULL);
1896 g_return_val_if_fail (a_stmt->
prev->
next == a_stmt, NULL);
1915 a_stmt->
next = NULL;
1916 a_stmt->
prev = NULL;
1937 g_return_val_if_fail (a_this, -1);
1939 for (cur = a_this; cur; cur = cur->
next)
1961 g_return_val_if_fail (a_this, NULL);
1963 for (cur = a_this; cur; cur = cur->
next)
2017 g_return_val_if_fail (a_this
2105 g_return_val_if_fail (new_decls,
CR_ERROR);
2133 g_return_val_if_fail (new_decls,
CR_ERROR);
2155 g_return_val_if_fail (a_this
2179 g_return_val_if_fail (a_this
2202 g_return_val_if_fail (a_this
2230 g_return_val_if_fail (a_this
2250 g_return_val_if_fail (a_this
2271 g_return_val_if_fail (a_this
2294 g_return_val_if_fail (a_this
2326 g_return_val_if_fail (a_this
2350 g_return_val_if_fail (a_this
2377 g_return_val_if_fail (a_this
2401 g_return_val_if_fail (a_this
2432 g_return_val_if_fail (a_this
2460 g_return_val_if_fail (a_this
2469 g_return_val_if_fail (decls,
CR_ERROR);
2499 switch (a_this->
type) {
2501 str = cr_statement_ruleset_to_string
2506 str = cr_statement_font_face_rule_to_string
2507 (a_this, a_indent) ;
2511 str = cr_statement_charset_to_string
2516 str = cr_statement_at_page_rule_to_string
2521 str = cr_statement_media_rule_to_string
2526 str = cr_statement_import_rule_to_string
2541 GString *stringue = NULL ;
2544 g_return_val_if_fail (a_this, NULL) ;
2546 stringue = g_string_new (NULL) ;
2551 for (cur_stmt = a_this ; cur_stmt;
2552 cur_stmt = cur_stmt->
next) {
2555 if (!cur_stmt->
prev) {
2556 g_string_append (stringue, str) ;
2558 g_string_append_printf
2559 (stringue,
"\n%s", str) ;
2565 str = stringue->str ;
2566 g_string_free (stringue, FALSE) ;
2589 fprintf (a_fp,
"%s",str) ;
2609 g_return_if_fail (a_fp && a_this);
2610 str = cr_statement_ruleset_to_string (a_this, a_indent);
2612 fprintf (a_fp,
"%s", str);
2632 g_return_if_fail (a_this
2635 str = cr_statement_font_face_rule_to_string (a_this,
2638 fprintf (a_fp,
"%s", str) ;
2660 str = cr_statement_charset_to_string (a_this,
2663 fprintf (a_fp,
"%s", str) ;
2684 g_return_if_fail (a_this
2688 str = cr_statement_at_page_rule_to_string (a_this, a_indent) ;
2690 fprintf (a_fp,
"%s", str);
2714 str = cr_statement_media_rule_to_string (a_this, a_indent) ;
2716 fprintf (a_fp,
"%s", str) ;
2735 g_return_if_fail (a_this
2740 str = cr_statement_import_rule_to_string (a_this, a_indent) ;
2742 fprintf (a_fp,
"%s", str) ;
2760 g_return_if_fail (a_this);
2763 for (cur = a_this; cur && cur->
next; cur = cur->
next) {
2764 cr_statement_clear (cur);
2768 cr_statement_clear (cur);
2770 if (cur->
prev == NULL) {
2776 for (cur = cur->
prev; cur && cur->
prev; cur = cur->
prev) {