diff -r 59758314f811 -r d4524d6a4472 Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/fmt__text_8c_source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/fmt__text_8c_source.html Fri Jun 11 15:24:34 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ - - - - -TB9.2 Example Applications: examples/PIPS/antiword/src/fmt_text.c Source File - - - - - -

examples/PIPS/antiword/src/fmt_text.c

00001 /*
-00002  * fmt_text.c
-00003  * Copyright (C) 2004 A.J. van Os; Released under GNU GPL
-00004  *
-00005  * Description:
-00006  * Functions to deal with the Formatted Text format
-00007  *
-00008  * Based on patches send by: Ofir Reichenberg <ofir@qlusters.com>
-00009  *
-00010  * The credit should go to him, but all the bugs are mine.
-00011  */
-00012 
-00013 #include <string.h>
-00014 #include "antiword.h"
-00015 
-00016 /* The character set */
-00017 static encoding_type    eEncoding = encoding_neutral;
-00018 /* Current vertical position information */
-00019 static long             lYtopCurr = 0;
-00020 /* Local representation of the non-breaking space */
-00021 static UCHAR            ucNbsp = 0;
-00022 
-00023 
-00024 /*
-00025  * vPrologueFMT - set options and perform the Formatted Text initialization
-00026  */
-00027 void
-00028 vPrologueFMT(diagram_type *pDiag, const options_type *pOptions)
-00029 {
-00030         fail(pDiag == NULL);
-00031         fail(pOptions == NULL);
-00032 
-00033         eEncoding = pOptions->eEncoding;
-00034         pDiag->lXleft = 0;
-00035         pDiag->lYtop = 0;
-00036         lYtopCurr = 0;
-00037 } /* end of vPrologueFMT */
-00038 
-00039 /*
-00040  * vPrintFMT - print a Formatted Text string
-00041  */
-00042 static void
-00043 vPrintFMT(FILE *pFile,
-00044         const char *szString, size_t tStringLength, USHORT usFontstyle)
-00045 {
-00046         const UCHAR     *pucByte, *pucStart, *pucLast, *pucNonSpace;
-00047 
-00048         fail(szString == NULL);
-00049 
-00050         if (szString == NULL || szString[0] == '\0' || tStringLength == 0) {
-00051                 return;
-00052         }
-00053 
-00054         if (eEncoding == encoding_utf_8) {
-00055                 fprintf(pFile, "%.*s", (int)tStringLength, szString);
-00056                 return;
-00057         }
-00058 
-00059         if (ucNbsp == 0) {
-00060                 ucNbsp = ucGetNbspCharacter();
-00061                 DBG_HEX_C(ucNbsp != 0xa0, ucNbsp);
-00062         }
-00063 
-00064         pucStart = (UCHAR *)szString;
-00065         pucLast = pucStart + tStringLength - 1;
-00066         pucNonSpace = pucLast;
-00067         while ((*pucNonSpace == (UCHAR)' ' || *pucNonSpace == ucNbsp) &&
-00068                pucNonSpace > pucStart) {
-00069                 pucNonSpace--;
-00070         }
-00071 
-00072         /* 1: The spaces at the start */
-00073         pucByte = pucStart;
-00074         while ((*pucByte == (UCHAR)' ' || *pucByte == ucNbsp) &&
-00075                pucByte <= pucLast) {
-00076                 (void)putc(' ', pFile);
-00077                 pucByte++;
-00078         }
-00079 
-00080         if (pucByte > pucLast) {
-00081                 /* There is no text, just spaces */
-00082                 return;
-00083         }
-00084 
-00085         /* 2: Start the *bold*, /italic/ and _underline_ */
-00086         if (bIsBold(usFontstyle)) {
-00087                 (void)putc('*', pFile);
-00088         }
-00089         if (bIsItalic(usFontstyle)) {
-00090                 (void)putc('/', pFile);
-00091         }
-00092         if (bIsUnderline(usFontstyle)) {
-00093                 (void)putc('_', pFile);
-00094         }
-00095 
-00096         /* 3: The text itself */
-00097         while (pucByte <= pucNonSpace) {
-00098                 if (*pucByte == ucNbsp) {
-00099                         (void)putc(' ', pFile);
-00100                 } else {
-00101                         (void)putc((char)*pucByte, pFile);
-00102                 }
-00103                 pucByte++;
-00104         }
-00105 
-00106         /* 4: End the *bold*, /italic/ and _underline_ */
-00107         if (bIsUnderline(usFontstyle)) {
-00108                 (void)putc('_', pFile);
-00109         }
-00110         if (bIsItalic(usFontstyle)) {
-00111                 (void)putc('/', pFile);
-00112         }
-00113         if (bIsBold(usFontstyle)) {
-00114                 (void)putc('*', pFile);
-00115         }
-00116 
-00117         /* 5: The spaces at the end */
-00118         while (pucByte <= pucLast) {
-00119                 (void)putc(' ', pFile);
-00120                 pucByte++;
-00121         }
-00122 } /* end of vPrintFMT */
-00123 
-00124 /*
-00125  * vMoveTo - move to the given X,Y coordinates
-00126  *
-00127  * Move the current position of the given diagram to its X,Y coordinates,
-00128  * start on a new page if needed
-00129  */
-00130 static void
-00131 vMoveTo(diagram_type *pDiag)
-00132 {
-00133         int     iCount, iNbr;
-00134 
-00135         fail(pDiag == NULL);
-00136         fail(pDiag->pOutFile == NULL);
-00137 
-00138         if (pDiag->lYtop != lYtopCurr) {
-00139                 iNbr = iDrawUnits2Char(pDiag->lXleft);
-00140                 for (iCount = 0; iCount < iNbr; iCount++) {
-00141                         (void)putc(FILLER_CHAR, pDiag->pOutFile);
-00142                 }
-00143                 lYtopCurr = pDiag->lYtop;
-00144         }
-00145 } /* end of vMoveTo */
-00146 
-00147 /*
-00148  * vSubstringFMT - print a sub string
-00149  */
-00150 void
-00151 vSubstringFMT(diagram_type *pDiag,
-00152         const char *szString, size_t tStringLength, long lStringWidth,
-00153         USHORT usFontstyle)
-00154 {
-00155         fail(pDiag == NULL || szString == NULL);
-00156         fail(pDiag->pOutFile == NULL);
-00157         fail(pDiag->lXleft < 0);
-00158         fail(tStringLength != strlen(szString));
-00159 
-00160         if (szString[0] == '\0' || tStringLength == 0) {
-00161                 return;
-00162         }
-00163 
-00164         vMoveTo(pDiag);
-00165         vPrintFMT(pDiag->pOutFile, szString, tStringLength, usFontstyle);
-00166         pDiag->lXleft += lStringWidth;
-00167 } /* end of vSubstringFMT */
-
-
Generated by  - -doxygen 1.6.2
- -