]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/tex2rtf/src/htmlutil.cpp
Better doc
[wxWidgets.git] / utils / tex2rtf / src / htmlutil.cpp
index d29e17b7f3f24ec2b491ef1798d1f2a8516304da..2ba127957600876c576f980b3ae44ecfd9e961af 100644 (file)
 #include "tex2rtf.h"
 #include "table.h"
 
 #include "tex2rtf.h"
 #include "table.h"
 
+
+extern wxHashTable TexReferences;
+
+
 extern void DecToHex(int, char *);
 void GenerateHTMLIndexFile(char *fname);
 
 extern void DecToHex(int, char *);
 void GenerateHTMLIndexFile(char *fname);
 
@@ -76,6 +80,11 @@ static bool inTable = FALSE;
 // This is defined in the Tex2Any library.
 extern char *BigBuffer;
 
 // This is defined in the Tex2Any library.
 extern char *BigBuffer;
 
+// DHS Two-column table dimensions.
+static int TwoColWidthA = -1;
+static int TwoColWidthB = -1;
+
+
 class HyperReference: public wxObject
 {
  public:
 class HyperReference: public wxObject
 {
  public:
@@ -172,7 +181,7 @@ void ReopenFile(FILE **fd, char **fileName)
 {
   if (*fd)
   {
 {
   if (*fd)
   {
-    fprintf(*fd, "\n</BODY></HTML>\n");
+    fprintf(*fd, "\n</FONT></BODY></HTML>\n");
     fclose(*fd);
   }
   fileId ++;
     fclose(*fd);
   }
   fileId ++;
@@ -574,6 +583,17 @@ char *ParseColourString(char *bkStr, bool *isPicture)
   else return NULL;
 }
 
   else return NULL;
 }
 
+void OutputFont(void)
+{
+  // Output <FONT FACE=...>
+  TexOutput("<FONT FACE=\"");
+  if (htmlFaceName)
+       TexOutput(htmlFaceName);
+  else
+       TexOutput("Times New Roman");
+  TexOutput("\">\n");
+}
+
 // Output start of <BODY> block
 void OutputBodyStart(void)
 {
 // Output start of <BODY> block
 void OutputBodyStart(void)
 {
@@ -628,6 +648,8 @@ void OutputBodyStart(void)
     }
   }
   TexOutput(">\n");
     }
   }
   TexOutput(">\n");
+
+  OutputFont();
 }
 
 // Called on start/end of macro examination
 }
 
 // Called on start/end of macro examination
@@ -1018,7 +1040,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       if (inTabular)
       {
         // End cell, start cell
       if (inTabular)
       {
         // End cell, start cell
-        TexOutput("</TD>");
+
+        TexOutput("</FONT></TD>");
 
         // Start new row and cell, setting alignment for the first cell.
         if (currentColumn < noColumns)
 
         // Start new row and cell, setting alignment for the first cell.
         if (currentColumn < noColumns)
@@ -1042,6 +1065,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
         else
           sprintf(buf, "\n<TD ALIGN=LEFT>");
         TexOutput(buf);
         else
           sprintf(buf, "\n<TD ALIGN=LEFT>");
         TexOutput(buf);
+               OutputFont();
       }
       else
         TexOutput("&amp;");
       }
       else
         TexOutput("&amp;");
@@ -1090,12 +1114,13 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
       else
         sprintf(buf, "<TR>\n<TD ALIGN=LEFT>");
       TexOutput(buf);
       else
         sprintf(buf, "<TR>\n<TD ALIGN=LEFT>");
       TexOutput(buf);
+         OutputFont();
     }
     else
     {
       // End cell and row
       // Start new row and cell
     }
     else
     {
       // End cell and row
       // Start new row and cell
-      TexOutput("</TD>\n</TR>\n");
+      TexOutput("</FONT></TD>\n</TR>\n");
     }
     break;
   }
     }
     break;
   }
@@ -1189,8 +1214,12 @@ void HTMLOnMacro(int macroId, int no_args, bool start)
   {
     if ( start )
         TexOutput("\n<TABLE>\n");
   {
     if ( start )
         TexOutput("\n<TABLE>\n");
-    else
+    else {
         TexOutput("\n</TABLE>\n");
         TexOutput("\n</TABLE>\n");
+    // DHS 
+        TwoColWidthA = -1;
+        TwoColWidthB = -1;
+    }
     break;
   }
   case ltPAR:
     break;
   }
   case ltPAR:
@@ -1893,7 +1922,11 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
           {
             if (helpRefText)
               TraverseChildrenFromChunk(helpRefText);
           {
             if (helpRefText)
               TraverseChildrenFromChunk(helpRefText);
-            TexOutput(" (REF NOT FOUND)");
+            if (!ignoreBadRefs)
+              TexOutput(" (REF NOT FOUND)");
+            wxString errBuf;
+            errBuf.Printf("Warning: unresolved reference '%s'", refName);
+            OnInform((char *)errBuf.c_str());
           }
         }
         else TexOutput("??");
           }
         }
         else TexOutput("??");
@@ -2021,7 +2054,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       if (imageFile)
         delete[] imageFile;
       imageFile = NULL;
       if (imageFile)
         delete[] imageFile;
       imageFile = NULL;
-      if (f)
+      if (!f.IsEmpty())
       {
         imageFile = copystring(f);
       }
       {
         imageFile = copystring(f);
       }
@@ -2077,6 +2110,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       descriptionItemArg = GetArgChunk();
       return FALSE;
     }
       descriptionItemArg = GetArgChunk();
       return FALSE;
     }
+    return TRUE;
   }
   case ltTWOCOLITEM:
   case ltTWOCOLITEMRULED:
   }
   case ltTWOCOLITEM:
   case ltTWOCOLITEMRULED:
@@ -2089,17 +2123,31 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
 */
     if (arg_no == 1)
     {
 */
     if (arg_no == 1)
     {
-        if ( start )
-            TexOutput("\n<TR><TD VALIGN=TOP>\n");
-        else
-            TexOutput("\n</TD>\n");
+      if ( start ) {
+        // DHS
+       if (TwoColWidthA > -1) {
+          char buf[100];
+          sprintf(buf,"\n<TR><TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthA);
+          TexOutput(buf);
+        } else
+          TexOutput("\n<TR><TD VALIGN=TOP>\n");
+               OutputFont();
+      }  else
+            TexOutput("\n</FONT></TD>\n");
     }
     if (arg_no == 2)
     {
     }
     if (arg_no == 2)
     {
-        if ( start )
-            TexOutput("\n<TD VALIGN=TOP>\n");
-        else
-            TexOutput("\n</TD></TR>\n");
+      // DHS
+      if ( start ) {
+       if (TwoColWidthB > -1) {
+          char buf[100];
+          sprintf(buf,"\n<TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthB);
+          TexOutput(buf);
+        } else 
+           TexOutput("\n<TD VALIGN=TOP>\n");
+               OutputFont();
+      }  else
+           TexOutput("\n</FONT></TD></TR>\n");
     }
     return TRUE;
     break;
     }
     return TRUE;
     break;
@@ -2153,6 +2201,30 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
       TexOutput("<HR><P>\n");
     break;
   }
       TexOutput("<HR><P>\n");
     break;
   }
+  // DHS
+  case ltTWOCOLWIDTHA:
+  {
+    if (start)
+    {
+      char *val = GetArgData();
+      float points = ParseUnitArgument(val);
+      TwoColWidthA = (int)((points * 100.0) / 72.0);
+    }
+    return FALSE;
+    break;
+  }
+  // DHS
+  case ltTWOCOLWIDTHB:
+  {
+    if (start)
+    {
+      char *val = GetArgData();
+      float points = ParseUnitArgument(val);
+      TwoColWidthB = (int)((points * 100.0) / 72.0);
+    }
+    return FALSE;
+    break;
+  }
   /*
    * Accents
    *
   /*
    * Accents
    *
@@ -2577,6 +2649,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start)
         if (compatibilityMode)
         {
           TexOutput("<TR>\n<TD>");
         if (compatibilityMode)
         {
           TexOutput("<TR>\n<TD>");
+                 OutputFont();
 /*
           for (int i = 0; i < noColumns; i++)
           {
 /*
           for (int i = 0; i < noColumns; i++)
           {
@@ -2856,25 +2929,25 @@ bool HTMLGo(void)
 
     if (Chapters)
     {
 
     if (Chapters)
     {
-      fprintf(Chapters, "\n</BODY></HTML>\n");
+      fprintf(Chapters, "\n</FONT></BODY></HTML>\n");
       fclose(Chapters);
       Chapters = NULL;
     }
     if (Sections)
     {
       fclose(Chapters);
       Chapters = NULL;
     }
     if (Sections)
     {
-      fprintf(Sections, "\n</BODY></HTML>\n");
+      fprintf(Sections, "\n</FONT></BODY></HTML>\n");
       fclose(Sections);
       Sections = NULL;
     }
     if (Subsections && !combineSubSections)
     {
       fclose(Sections);
       Sections = NULL;
     }
     if (Subsections && !combineSubSections)
     {
-      fprintf(Subsections, "\n</BODY></HTML>\n");
+      fprintf(Subsections, "\n</FONT></BODY></HTML>\n");
       fclose(Subsections);
       Subsections = NULL;
     }
     if (Subsubsections && !combineSubSections)
     {
       fclose(Subsections);
       Subsections = NULL;
     }
     if (Subsubsections && !combineSubSections)
     {
-      fprintf(Subsubsections, "\n</BODY></HTML>\n");
+      fprintf(Subsubsections, "\n</FONT></BODY></HTML>\n");
       fclose(Subsubsections);
       Subsubsections = NULL;
     }
       fclose(Subsubsections);
       Subsubsections = NULL;
     }
@@ -2942,7 +3015,7 @@ bool HTMLGo(void)
         fclose(fd);
       }
 
         fclose(fd);
       }
 
-      fprintf(tmpTitle, "\n</BODY>\n");
+      fprintf(tmpTitle, "\n</FONT></BODY>\n");
 
       if (htmlFrameContents)
       {
 
       if (htmlFrameContents)
       {