Revision: fd1518b84a9e Branch: default Author: John Boyer <john.boyer@xxxxxxxxxxxxxxxxx> Date: Fri Aug 16 19:45:15 2013 UTC Log: muultiple emphasis of text http://code.google.com/p/liblouisutdml/source/detail?r=fd1518b84a9e Modified: /liblouisutdml/transcriber.c ======================================= --- /liblouisutdml/transcriber.c Mon Aug 12 19:52:56 2013 UTC +++ /liblouisutdml/transcriber.c Fri Aug 16 19:45:15 2013 UTC @@ -1008,6 +1008,51 @@ } insert_text_string (node, attrValue); } + +static void +setEmphasis () +{ + int k; + int top = ud->top; + memset (&ud->typeform[ud->old_text_length], ud->text_length - + ud->old_text_length, 0); + while (top >= 0 && (ud->stack[top] == italicx || ud->stack[top] == boldx + || ud->stack[top] == underlinex + || ud->stack[top] == compbrl)) + { + switch (ud->stack[top]) + { + case italicx: + if (!(ud->emphasis & italic)) + break; + for (k = ud->old_text_length; k < ud->text_length; k++) + ud->typeform[k] |= italic; + break; + case underlinex: + if (!(ud->emphasis & underline)) + break; + for (k = ud->old_text_length; k < ud->text_length; k++) + ud->typeform[k] |= underline; + break; + case boldx: + if (!(ud->emphasis & bold)) + break; + for (k = ud->old_text_length; k < ud->text_length; k++) + ud->typeform[k] |= boldx; + break; + case compbrl: + if (!(ud->emphasis & computer_braille)) + break; + for (k = ud->old_text_length; k < ud->text_length; k++) + ud->typeform[k] |= compbrl; + break; + default: + break; + } + top--; + } + return; +} void insert_text_string (xmlNode * node, xmlChar * str) @@ -1028,7 +1073,6 @@ insert_text (xmlNode * node) { int length = strlen ((char *) node->content); - int wcLength; int k; for (k = length; k > 0 && node->content[k - 1] <= 32; k--); if (k <= 0) @@ -1066,32 +1110,8 @@ break; } ud->old_text_length = ud->text_length; - wcLength = insert_utf8 (node->content); - switch (ud->stack[ud->top]) - { - case italicx: - if (!(ud->emphasis & italic)) - break; - memset (&ud->typeform[ud->old_text_length], italic, wcLength); - break; - case underlinex: - if (!(ud->emphasis & underline)) - break; - memset (&ud->typeform[ud->old_text_length], underline, wcLength); - break; - case boldx: - if (!(ud->emphasis & bold)) - break; - memset (&ud->typeform[ud->old_text_length], bold, wcLength); - break; - case compbrl: - if (!(ud->emphasis & computer_braille)) - break;- memset (&ud->typeform[ud->old_text_length], computer_braille, wcLength);
- break; - default: - break; - } + insert_utf8 (node->content); + setEmphasis (); } static int @@ -4685,27 +4705,8 @@ } ud->text_length = ud->old_text_length; return; - case italicx: - if (!(ud->emphasis & italic)) - break; - memset (&ud->typeform[ud->old_text_length], italic, outSize); - break; - case underlinex: - if (!(ud->emphasis & underline)) - break; - memset (&ud->typeform[ud->old_text_length], underline, outSize); - break; - case boldx: - if (!(ud->emphasis & bold)) - break; - memset (&ud->typeform[ud->old_text_length], bold, outSize); - break; - case compbrl: - if (!(ud->emphasis & computer_braille)) - break;- memset (&ud->typeform[ud->old_text_length], computer_braille, outSize);
- break; default: + setEmphasis (); break; } if (ud->old_text_length == 0) For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com