2 new revisions: Revision: d1a1bdb45903 Branch: default Author: Michael Whapples Date: Thu Jun 19 09:01:21 2014 UTC Log: Start of UTD output for boxline style stuff. http://code.google.com/p/liblouisutdml/source/detail?r=d1a1bdb45903 Revision: 93a2e0eac344 Branch: default Author: Michael Whapples Date: Thu Jun 19 09:02:37 2014 UTC Log: Merge http://code.google.com/p/liblouisutdml/source/detail?r=93a2e0eac344 ============================================================================== Revision: d1a1bdb45903 Branch: default Author: Michael Whapples Date: Thu Jun 19 09:01:21 2014 UTC Log: Start of UTD output for boxline style stuff. http://code.google.com/p/liblouisutdml/source/detail?r=d1a1bdb45903 Modified: /liblouisutdml/transcriber.c ======================================= --- /liblouisutdml/transcriber.c Wed Jun 18 09:29:21 2014 UTC +++ /liblouisutdml/transcriber.c Thu Jun 19 09:01:21 2014 UTC @@ -40,7 +40,24 @@ static StyleType *style; static StyleType *prevStyle; static int styleBody (); -static int addBoxline(const char *boxChar); +static xmlNode *brlNode; +/* + * addBoxline adds a boxline to the document using the character given. + * boxChar: The character to fill the line with.+ * beforeAfter: Whether the line is before or after content. Value 1 for after
+ * and -1 for before. + */ +static int addBoxline(const char *boxChar, int beforeAfter); +/* + * utd_addBoxline, UTD version of addBoxline + * boxChar: The character to fill the line with. + * beforeAfter: Whether the boxline should be before or after the content. + * Value 1 for after and value -1 for before. + */ +static int utd_addBoxline(const char *boxChar, int beforeAfter); + +static int utd_startLine(); +static int utd_finishLine(int number, int beforeAfter); int fineFormat () @@ -2867,7 +2884,7 @@ } if (style->topBoxline[0]) { - addBoxline(style->topBoxline); + addBoxline(style->topBoxline, -1); } writeOutbuf (); ud->blank_lines = maximum (ud->blank_lines, style->lines_before); @@ -2994,7 +3011,7 @@ return utd_finishStyle (); if (style->bottomBoxline[0]) { - addBoxline(style->bottomBoxline); + addBoxline(style->bottomBoxline, 1); } if (ud->braille_pages) { @@ -3499,12 +3516,15 @@ } static int -addBoxline(const char *boxChar) +addBoxline(const char *boxChar, int beforeAfter) { int k; int availableCells = 0; widechar wTmpBuf = (widechar)boxChar[0]; + if (ud->format_for == utd) + return utd_addBoxline(boxChar, beforeAfter); logMessage(LOG_DEBUG, "Begin addBoxline"); + logMessage(LOG_DEBUG, "styleSpec->node->name=%s", styleSpec->node->name); while (availableCells != ud->cells_per_line) { finishLine(); @@ -3521,6 +3541,64 @@ logMessage(LOG_DEBUG, "Finished addBoxline"); return 1; } + +static int +utd_addBoxline(const char *boxChar, int beforeAfter) +{ + int k; + int availableCells = 0; + int inlen = CHARSIZE * (ud->cells_per_line); + int outlen = 10 * (ud->cells_per_line + 1); + xmlNode *tmpBrlNode; + xmlNode *lineNode; + xmlNode *textNode; + widechar wTmpBuf = (widechar)boxChar[0]; + widechar *lineBuf; + char *chContent; + // Make sure that styleSpec relates to a node + if (styleSpec->node == NULL) + return 0; + logMessage(LOG_DEBUG, "Begin utd_addBoxline"); + // We should catch the current brlNode so we can restore afterwards + tmpBrlNode = brlNode; + // Find a complete blank line + while (availableCells != ud->cells_per_line) + { + utd_finishLine(0, 0); + availableCells = utd_startLine(); + } + // Create the line of characters + lineBuf = malloc(inlen); + chContent = malloc(outlen); + for (k = 0; k < availableCells; k++) + { + lineBuf[k] = wTmpBuf; + } + inlen = availableCells; + wc_string_to_utf8(lineBuf, &inlen, chContent, &outlen); + // Create new brl node at the start of the styled node + lineNode = xmlNewNode(NULL, (xmlChar *)"brl"); + textNode = xmlNewText(chContent); + xmlAddChild(lineNode, textNode); + free(lineBuf); + free(chContent); + if (styleSpec->node->children && beforeAfter == -1) + { + brlNode = xmlAddPrevSibling(styleSpec->node->children, lineNode); + } + else if (styleSpec->node->children && beforeAfter == 1) + { + brlNode = xmlAddNextSibling(styleSpec->node->last, lineNode); + } + else + { + brlNode = xmlAddChild(styleSpec->node, lineNode); + } + // Restore original brlNode + brlNode = tmpBrlNode; + logMessage(LOG_DEBUG, "Finish utd_addBoxline"); + return 1; +} int do_newpage () @@ -3700,7 +3778,7 @@ static int *backIndices; static widechar *backBuf; static int backLength; -static xmlNode *brlNode; + static xmlNode *firstBrlNode; static xmlNode *prevBrlNode; static xmlNode *documentNode = NULL; @@ -4954,7 +5032,7 @@ else availableCells = ud->cells_per_line; } - logMessage(LOG_DEBUG, "Begin utd_startLine"); + logMessage(LOG_DEBUG, "Finished utd_startLine"); return availableCells; } @@ -5410,6 +5488,10 @@ ud->vert_line_pos = ud->page_top; return 1; } + if (style->topBoxline[0] && styleSpec->node) + { + utd_addBoxline(style->topBoxline, -1); + } if (!ud->paragraphs) return 1; if ((style->lines_before || @@ -5522,6 +5604,10 @@ { PageStatus curPageStatus = checkPageStatus (); logMessage(LOG_DEBUG, "Begin utd_finishStyle"); + if (style->bottomBoxline[0]) + { + utd_addBoxline(style->bottomBoxline, 1); + } if (!ud->paragraphs) return 1; if (style->newpage_after) ============================================================================== Revision: 93a2e0eac344 Branch: default Author: Michael Whapples Date: Thu Jun 19 09:02:37 2014 UTC Log: Merge http://code.google.com/p/liblouisutdml/source/detail?r=93a2e0eac344 Deleted: /build-aux/compile /liblouisutdml/Makesemnames /liblouisutdml/README /liblouisutdml/make_sem_names /liblouisutdml/make_sem_names.c /liblouisutdml/sem_names.h ======================================= --- /build-aux/compile Sun Nov 25 17:51:23 2012 UTC +++ /dev/null @@ -1,142 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. - -scriptversion=2005-05-14.22 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. -# Written by Tom Tromey <tromey@xxxxxxxxxx>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to <bug-automake@xxxxxxx> or send patches to -# <automake-patches@xxxxxxx>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. - -Report bugs to <bug-automake@xxxxxxx>. -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; -esac - -ofile= -cfile= -eat= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` - -# Create the lock directory. -# Note: use `[/.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: ======================================= --- /liblouisutdml/Makesemnames Sat Jul 3 16:32:58 2010 UTC +++ /dev/null @@ -1,7 +0,0 @@ -# If you change sem_enum.h run this file with -# make -f Makesemnames - -sem_names.h : sem_enum.h make_sem_names - ./make_sem_names -make_sem_names : make_sem_names.c - gcc -O2 -Wall -o make_sem_names make_sem_names.c ======================================= --- /liblouisutdml/README Sat Jul 3 16:32:58 2010 UTC +++ /dev/null @@ -1,3 +0,0 @@ -If you change sem_enum.h be sure to run -make -f Makesemnames - ======================================= --- /liblouisutdml/make_sem_names Tue Aug 31 22:51:30 2010 UTC +++ /dev/null Binary file, no diff available. ======================================= --- /liblouisutdml/make_sem_names.c Sat Jul 3 16:32:58 2010 UTC +++ /dev/null @@ -1,86 +0,0 @@ -/* liblouisutdml Braille Transcription Library - - This file may contain code borrowed from the Linux screenreader - BRLTTY, copyright (C) 1999-2006 by - the BRLTTY Team - - Copyright (C) 2004, 2005, 2006 - ViewPlus Technologies, Inc. www.viewplus.com - and - JJB Software, Inc. www.jjb-software.com - All rights reserved - - This file is free software; you can redistribute it and/or modify it - under the terms of the Lesser or Library GNU General Public License - as published by the - Free Software Foundation; either version 3, or (at your option) any - later version. - - This file is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - Library GNU General Public License for more details. - - You should have received a copy of the Library GNU General Public - License along with this program; see the file COPYING. If not, write to - the Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - - Maintained by John J. Boyer john.boyer@xxxxxxxxxxxxxxxx - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int -main (void) -{ - FILE *semIn; - FILE *semOut; - char inbuf[128]; - char *curchar; - int ch; - int ignoreLine = 1; - char *name; - int nameLength; - if ((semIn = fopen ("sem_enum.h", "r")) == NULL) - { - fprintf (stderr, "Cannot open sem_enum.h file.\n"); - exit (1); - } - if ((semOut = fopen ("sem_names.h", "w")) == NULL) - { - fprintf (stderr, "Cannot open sem_names.h file.\n"); - exit (1); - } - fprintf (semOut, "#ifndef __SEM_NAMES_h\n"); - fprintf (semOut, "#define __SEM_NAMES_h\n"); - fprintf (semOut, "static const char *semNames[] = {\n"); - while ((fgets (inbuf, sizeof (inbuf), semIn))) - { - curchar = inbuf; - while ((ch = *curchar++) <= 32 && ch != 0); - if (ch == '/') -continue; - if (ignoreLine) - { - if (ch == '{') - ignoreLine = 0; - continue; - } - if (ch == '}') - break; - name = curchar - 1; - while ((ch = *curchar++) > 32 && ch != ',' && ch != '='); - nameLength = curchar - name - 1; - name[nameLength] = 0; - fprintf (semOut, " \"%s\",\n", name); - } - fclose (semIn); - fprintf (semOut, "NULL\n"); - fprintf (semOut, "};\n"); - fprintf (semOut, "#endif /*__SEM_NAMES_H*/\n"); - fclose (semOut); - return 0; -} ======================================= --- /liblouisutdml/sem_names.h Wed Jun 18 09:23:57 2014 UTC +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef __SEM_NAMES_h -#define __SEM_NAMES_h -static const char *semNames[] = { - "no", - "skip", - "generic", - "cdata", - "htmllink", - "htmltarget", - "changetable", - "reverse", - "configfile", - "configstring", - "configtweak", - "document", - "para", - "heading1", - "heading2", - "heading3", - "heading4", - "heading5", - "heading6", - "heading7", - "heading8", - "heading9", - "heading10", - "contentsheader", - "contents1", - "contents2", - "contents3", - "contents4", - "contents5", - "contents6", - "contents7", - "contents8", - "contents9", - "contents10", - "notranslate", - "compbrl", - "uncontracted", - "contracted", - "pagenum", - "genpurp1", - "genpurp2", - "pagebreak", - "attrtotext", - "runninghead", - "footer", - "italicx", - "boldx", - "underlinex", - "linespacing", - "blankline", - "softreturn", - "newpage", - "righthandpage", - "code", - "music", - "math", - "mi", - "mn", - "mo", - "mtext", - "mspace", - "ms", - "mglyph", - "mrow", - "mfrac", - "msqrt", - "mroot", - "mstyle", - "merror", - "mpadded", - "mphantom", - "mfenced", - "menclose", - "msub", - "msup", - "msubsup", - "munder", - "mover", - "munderover", - "mmultiscripts", - "none", - "semantics", - "mprescripts", - "mtable", - "mtr", - "mtd", - "maligngroup", - "malignmark", - "mlabeledtr", - "maction", - "chemistry", - "graphic", - "markhead", - "utdmeta", - "utdbrl", - "utdnewpage", - "utdnewline", - "utdbrlonly", - "utddispimg", - "utdinlnimg", - "end_all", -NULL -}; -#endif /*__SEM_NAMES_H*/ For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com