[liblouis-liblouisxml] [liblouisutdml] push by john.bo...@xxxxxxxxxxxxxxxxx - just a few more bugs in formatFor utd on 2012-02-28 03:38 GMT

  • From: liblouisutdml@xxxxxxxxxxxxxx
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Tue, 28 Feb 2012 03:39:23 +0000

Revision: 59e33bd81b66
Author:   John Boyer <john.boyer@xxxxxxxxxxxxxxxxx>
Date:     Mon Feb 27 19:37:42 2012
Log:      just a few more bugs in formatFor utd
http://code.google.com/p/liblouisutdml/source/detail?r=59e33bd81b66

Modified:
 /lbu_files/utd.sem
 /liblouisutdml/transcriber.c
 /liblouisutdml/utd2brf.c

=======================================
--- /lbu_files/utd.sem  Sat Jul  3 09:32:58 2010
+++ /lbu_files/utd.sem  Mon Feb 27 19:37:42 2012
@@ -5,7 +5,7 @@
 utdmeta meta,name,utd
 utdbrl brl
 utdbrlonly span,class,brlonly
-utdnewpage newpage,number
+utdnewpage newpage,brlnumber
 utdnewline newline,xy
 utdgraphic xxx
 newentries no
=======================================
--- /liblouisutdml/transcriber.c        Sat Feb 25 10:46:20 2012
+++ /liblouisutdml/transcriber.c        Mon Feb 27 19:37:42 2012
@@ -344,7 +344,7 @@
static int first0Bit[MAXBYTES] = { 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0XFE };

 int
-utf8_string_to_wc (const unsigned char *instr, int *inSize, widechar *
+utf8_string_to_wc (const unsigned char *inStr, int *inSize, widechar *
                   outstr, int *outSize)
 {
   int in = 0;
@@ -357,7 +357,7 @@
   int k;
   while (in < *inSize)
     {
-      ch = instr[in++] & 0xff;
+      ch = inStr[in++] & 0xff;
       if (ch < 128 || ud->input_encoding == ascii8)
        {
          outstr[out++] = (widechar) ch;
@@ -379,7 +379,7 @@
        {
          if (in >= *inSize)
            break;
-         utf32 = (utf32 << 6) + (instr[in++] & 0x3f);
+         utf32 = (utf32 << 6) + (inStr[in++] & 0x3f);
        }
       if (CHARSIZE == 2 && utf32 > 0xffff)
        utf32 = 0xffff;
@@ -397,7 +397,7 @@
 }

 int
-wc_string_to_utf8 (const widechar * instr, int *inSize, unsigned char *outstr, +wc_string_to_utf8 (const widechar * inStr, int *inSize, unsigned char *outstr,
                   int *outSize)
 {
   int in = 0;
@@ -410,7 +410,7 @@
   int k;
   while (in < *inSize)
     {
-      utf32 = instr[in++];
+      utf32 = inStr[in++];
       if (utf32 < 128)
        {
          utf8Str[0] = utf32;
@@ -3863,11 +3863,14 @@
 } ShortBrlOnlyStrings;

 static int
-setOrigTextChar (ShortBrlOnlyStrings * sbstr, unsigned char *instr, int
+setOrigTextChar (ShortBrlOnlyStrings * sbstr, unsigned char *inStr, int
                 length)
 {
-  sbstr->origTextLength = sizeof (sbstr->origText) - 4;
- utf8_string_to_wc (instr, &length, sbstr->origText, &sbstr->origTextLength);
+  for (; length >= 0 && inStr[length - 1] <= 32; length--);
+  if (length <= 0)
+    return 0;
+  sbstr->origTextLength = MAXNAMELEN - 4;
+ utf8_string_to_wc (inStr, &length, sbstr->origText, &sbstr->origTextLength);
   sbstr->transTextLength = 0;
   sbstr->prefixedOrigTextLength = 0;
   sbstr->prefixedTransTextLength = 0;
@@ -3875,13 +3878,14 @@
 }

 static int
-setOrigTextWidechar (ShortBrlOnlyStrings * sbstr, widechar * instr,
+setOrigTextWidechar (ShortBrlOnlyStrings * sbstr, widechar * inStr,
                     int length)
 {
+  if (length <= 0)
+    return 0;
   if (length >= MAXNAMELEN)
     length = MAXNAMELEN - 4;
-  sbstr->origTextLength = length;
-  memcpy (sbstr->origText, instr, length * CHARSIZE);
+  memcpy (sbstr->origText, inStr, length * CHARSIZE);
   sbstr->origTextLength = length;
   sbstr->transTextLength = 0;
   sbstr->prefixedOrigTextLength = 0;
@@ -3893,18 +3897,16 @@
 translateShortBrlOnly (ShortBrlOnlyStrings * sbstr)
 {
   int translationLength = sbstr->origTextLength;
-  int translatedLength = sizeof (sbstr->transText);
-  int k;
+  int translatedLength = MAXNAMELEN - 4;
   if (!lou_translateString (currentTable, sbstr->origText,
                            &translationLength,
                            sbstr->transText, &translatedLength, NULL, NULL,
                            dotsIO))
     return 0;
+  for (; sbstr->transText[translatedLength - 1] == SPACE;
+  translatedLength--);
   sbstr->transText[translatedLength] = 0;
   sbstr->transTextLength = translatedLength;
-  for (k = 0; k < translatedLength; k++)
-    if (sbstr->transText[k] == 160)
-      sbstr->transText[k] = ' ';
   return 1;
 }

@@ -3931,9 +3933,9 @@
     sbstr->prefixedTransText[k] = dots;
   for (; k < MAXNAMELEN; k++)
     {
+      sbstr->prefixedTransText[k] = sbstr->transText[kk++];
       if (kk > sbstr->transTextLength)
        break;
-      sbstr->prefixedTransText[k] = sbstr->transText[kk++];
     }
   sbstr->prefixedTransTextLength = k;
   kk = 0;
@@ -3941,9 +3943,9 @@
     sbstr->prefixedOrigText[k] = character;
   for (; k < MAXNAMELEN; k++)
     {
+      sbstr->prefixedOrigText[k] = sbstr->origText[kk++];
       if (kk > sbstr->origTextLength)
        break;
-      sbstr->prefixedOrigText[k] = sbstr->origText[kk++];
     }
   sbstr->prefixedOrigTextLength = k;
 }
@@ -3988,7 +3990,7 @@
   PageStatus curPageStatus = checkPageStatus ();
   if (!ud->print_pages || !*printPageNumber)
     return 1;
-  strcpy (setup, " ");
+  strcpy (setup, "-");
   if (!(printPageNumber[0] >= '0' && printPageNumber[0] <= '9'))
     strcat (setup, ud->letsign);
   strcat (setup, printPageNumber);
@@ -4501,8 +4503,14 @@
   if (curPageStatus == bottomOfPage)
     {
       if (ud->print_page_number[0] != '_')
-       xmlSetProp (newpageNode, (xmlChar *) "printnumber", (xmlChar *)
-                   ud->print_page_number);
+       {
+         unsigned char holder[MAXNUMLEN];
+         int k;
+         for (k = 0; ud->print_page_number[k]; k++)
+         holder[k] = ud->print_page_number[k];
+         holder[k] = 0;
+         xmlSetProp (newpageNode, (xmlChar *) "printnumber", holder);
+       }
       ud->braille_page_number++;
       ud->vert_line_pos = ud->page_top;
       makeNewpage (brlNode);
=======================================
--- /liblouisutdml/utd2brf.c    Fri Feb 17 07:19:45 2012
+++ /liblouisutdml/utd2brf.c    Mon Feb 27 19:37:42 2012
@@ -39,15 +39,20 @@
 static int finishBrlNode ();
 static int finishDocument ();
 static int doUtdbrlonly (xmlNode * node, int action);
-static int doUtdnewpage (xmlNode * node);
+static int
+doUtdnewpage (xmlNode * node);
 static int doUtdnewline (xmlNode * node);
 static int doUtdgraphic (xmlNode * node);
+static int firstPage;
+static int firstLineOnPage;

 int
 utd2brf (xmlNode * node)
 {
   ud->top = -1;
   ud->style_top = -1;
+  firstPage = 1;
+  firstLineOnPage = 1;
   beginDocument ();
   findBrlNodes (node);
   finishDocument ();
@@ -105,11 +110,11 @@
 static char *blanks =
   "                                                            ";
 static int
-writeCharacters (const char *text, int length)
+insertCharacters (const char *text, int length)
 {
   int k;
   for (k = 0; k < length; k++)
-    ud->outbuf1[ud->outbuf1_len_so_far++] = text[k];
+  ud->outbuf1[ud->outbuf1_len_so_far++] = text[k];
   return 1;
 }

@@ -176,25 +181,25 @@
       child = child->next;
     }
   if (action != 0)
-    {
       pop_sem_stack ();
-      return 1;
-    }
   return 1;
 }

-static int skipFirstNew = 0;
-static int newpagePending = 0;
 static int lastLinepos;

 static int
 doUtdnewpage (xmlNode * node)
 {
-  lastLinepos = 0;
-  if (skipFirstNew)
-    return 1;
-  newpagePending = 1;
+  lastLinepos = ud->page_top;
+  firstLineOnPage = 1;
+  if (firstPage)
+  {
+  firstPage = 0;
   return 1;
+  }
+  insertCharacters (ud->lineEnd, strlen (ud->lineEnd));
+  insertCharacters (ud->pageEnd, strlen (ud->pageEnd));
+  return 1;
 }

 static int
@@ -204,20 +209,15 @@
   int k;
   int leadingBlanks;
   int linepos;
-  if (skipFirstNew)
-    skipFirstNew = newpagePending = 0;
-  else
-    writeCharacters (ud->lineEnd, strlen (ud->lineEnd));
-  if (newpagePending)
-    {
-      writeCharacters (ud->pageEnd, strlen (ud->pageEnd));
-      newpagePending = 0;
-    }
+  if (!firstLineOnPage)
+    insertCharacters (ud->lineEnd, strlen (ud->lineEnd));
   xy = (char *) xmlGetProp (node, (xmlChar *) "xy");
   for (k = 0; xy[k] != ','; k++);
   leadingBlanks = (atoi (xy) - ud->left_margin) / ud->cell_width;
   linepos = (atoi (&xy[k + 1]) - ud->page_top) / ud->normal_line;
-  writeCharacters (blanks, leadingBlanks);
+  insertCharacters (blanks, leadingBlanks);
+  if (firstLineOnPage)
+  firstLineOnPage = 0;
   return 1;
 }

For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

Other related posts:

  • » [liblouis-liblouisxml] [liblouisutdml] push by john.bo...@xxxxxxxxxxxxxxxxx - just a few more bugs in formatFor utd on 2012-02-28 03:38 GMT - liblouisutdml